# Status and repairs

> How a method version stands, what runs get while Fous repairs it, how health checks work, and how to follow a method without polling.

Source: https://docs.fous.com/guides/status
Index: https://docs.fous.com/llms.txt

Fous checks every method version in use and repairs it in place when a site changes, keeping its contract.

| `status` | Runs |
| --- | --- |
| `ready` | Work. Any answer makes a version `ready` at once. |
| `degraded` | Its saved examples and runs stopped answering; runs are still tried. |
| `repairing` | Refused until the repair ends, at the latest by `repair.expected_at`. |

## While a repair runs

Runs of a `repairing` version are refused for free, with when it is back at the latest and `alternatives`:

```json
{
  "error": {
    "code": "method_repairing",
    "message": "date.nager.at/list_public_holidays version 2 is under repair, back in about 4 min. Nothing was charged.",
    "next_step": "Try again later, search for another method with GET /v1/search, or send a query: POST /v1/runs with a query.",
    "version": 2,
    "latest_version": 2,
    "repair": {
      "expected_at": "2026-10-23T09:15:00.000Z",
      "back_in_minutes": 4
    },
    "retryable": true,
    "retry_after": 240,
    "alternatives": [],
    "doc_url": "https://docs.fous.com/guides/errors#method_repairing",
    "request_id": "req_mh7c2k9xQ1v3Zt8LbN0pRwY4"
  }
}
```

When the repair ships, runs work on the same version and `revision` goes up. Repairs are free. If one cannot fix the version, it stays `degraded` with `last_repair` saying why, ranks lower in search and queries, and Fous tries again later. A repair that stops on Fous's own trouble, or does not finish within 30 minutes, decides nothing.

## Health checks

Only the method's own breakage counts against it: the site's answer no longer fits the method, or its saved examples stop answering. Your input, blocks, timeouts, a site failing now and then and Fous's own trouble never do, and no single run changes the status.

A version that ran in the last 7 days is checked daily; one that ran in the last 30 days, is pinned, or is a public method's latest, weekly; a `degraded` one, hourly. A check re-runs saved examples that answered with data; write methods are never sent. Checks are free.

## Follow a method

`GET /v1/methods/{ref}?wait=60` holds while the version is `repairing`. Add `seen` as `status:revision:deletes_at` from your last read (`-` for none), and it answers on any change.

```bash
curl --get 'https://api.fous.com/v1/methods/date.nager.at/list_public_holidays' \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  --data-urlencode 'wait=60' \
  --data-urlencode 'seen=repairing:1:-'
```

```json
{
  "id": "mth_01m5kvvywdeac8fxs7nh0sw68w",
  "slug": "date.nager.at/list_public_holidays",
  "name": "List public holidays",
  "description": "Lists a country's public holidays for a year from Nager.Date, with local names, regional coverage and holiday types.",
  "returns": "date, weekday, English and local names, regions, type, nationwide flag",
  "platform": { "name": "Nager.Date", "domain": "nager.at" },
  "input_schema": {
    "type": "object",
    "required": ["country"],
    "properties": {
      "year": {
        "type": "integer",
        "minimum": 1,
        "maximum": 9999,
        "description": "Calendar year, for example 2026. Defaults to the current year."
      },
      "country": {
        "type": "string",
        "description": "Country name or two-letter country code, for example Germany or DE."
      }
    }
  },
  "effect": "read",
  "auth": { "required": false },
  "cost": { "credits": 1 },
  "version": 2,
  "latest_version": 2,
  "revision": 2,
  "pinned_version": 2,
  "status": "ready",
  "versions": [
    {
      "version": 2,
      "revision": 2,
      "latest": true,
      "pinned": true,
      "status": "ready",
      "created_at": "2026-10-22T16:02:41.000Z",
      "revised_at": "2026-10-23T09:13:52.000Z",
      "changes": "Adds output holidays[].regions."
    },
    {
      "version": 1,
      "revision": 2,
      "status": "ready",
      "created_at": "2026-10-21T09:12:05.000Z",
      "revised_at": "2026-10-24T03:10:19.000Z",
      "changes": ""
    }
  ],
  "visibility": "public",
  "output_schema": {
    "type": "object",
    "properties": {
      "country_name": { "type": "string" },
      "year": { "type": "integer" },
      "holidays": { "type": "array", "items": { "type": "object" } }
    }
  },
  "example": {
    "input": { "country": "Germany", "year": 2027 },
    "output": {
      "country_name": "Germany",
      "year": 2027,
      "holidays": [
        {
          "date": "2027-01-01",
          "weekday": "Friday",
          "english_name": "New Year's Day",
          "local_name": "Neujahr",
          "nationwide": "yes",
          "regions": [],
          "type": "Public"
        }
      ]
    }
  },
  "stats": {
    "success_rate": 0.92,
    "runs": 13,
    "last_success_at": "2026-10-23T09:14:08.000Z"
  },
  "owned": false
}
```

Here the repair shipped: `ready` again, `revision` 2. Over MCP, `methods` with `get` and `wait` does the same.
