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:
{ "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.
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:-'{ "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.