Fig. 01 — daily contract watch · integration reliability
Flanj — Daily MCP Contract Drift Watch
Your integration didn’t break. It started being wrong.
Every call succeeded. That’s why nothing caught it.
Flanj watches the calls your agents and services already make — agents most of all, since an agent reads a tool’s description to decide what to do. It catches the moment the other side’s contract moves, and carries evidence that organization can check against its own systems.
The classifier was not written for this page. It is github.com/flanj-io/collector’s own
contract and diff packages — the code the Flanj collector runs against
live traffic inside a customer’s own environment — imported here unmodified, at the version
named below. So this is the product’s judgment applied in public, daily, to servers anyone can
call, rather than a measurement made for a page about it.
02 / the largest change event in the window — chosen by the data
Neon on 2026-08-29: 86 parameters renamed while serverInfo.version stayed 1.0.0.
The version string is the one thing a server publishes to say “this changed”. Here it did not move while 86 argument names did, across 35 tools. A renamed input is graded info — the parameter still exists under a new spelling — so this is not a breakage count: it is a record of a contract that changed under a version that said it had not.
Each pair is one input-property-renamed row from the classifier: a property that left a tool and a same-typed one that arrived on the same tool in the same comparison, under a name that folds to the same key (branchId, branch_id and branch-id are one name).
all 86 pairs
This server answers only with a credential attached: the rows are marked as such. Every row of this event, with the two contracts as served: e-neon-2026-08-29.
03 / the number
4.78% of comparison days carried a warning-or-breaking change event — 137 of 2864.
A change event is one server, on one day, with at least one finding. It counts once however many fields it touched, and takes the severity of its most serious finding. A comparison day is one server, on one day, diffed against its previous observation, so observing a server twice in a day cannot move the number. (2872 observation pairs sit behind the 2864 days.)
Excludes apify’s output.storages.datasets.default.itemsSchema — 2685 findings that would otherwise be 80.03% of all findings. The provider’s own schema says it is inferred from past crawls and not returned in the response. Why it is excluded →
| kind | breaking | warning | info | rows |
|---|---|---|---|---|
| catalog | 50 | 0 | 1 | 51 |
| input | 0 | 10 | 133 | 143 |
| output | 2 | 4 | 0 | 6 |
| wording | 0 | 470 | 0 | 470 |
04 / change events — one row per server per day
138 change events across 62 servers.
Each event opens into its findings: the classifier’s rule id and what it means for a caller, the tool and field, the fragment as served before and after, and the two snapshot keys behind it. Every count on this page is over these rows.
2026-10-14 → 2026-10-15 Linearlinear api credentialed 7 warning 7 tools
2026-10-14 → 2026-10-15 Shopifyshopify api 4 warning 4 tools
2026-10-14 → 2026-10-15 Sonartrysonar api 2 warning 2 tools
2026-10-14 → 2026-10-15 Sentrysentry api credentialed 1 warning 1 tool
2026-10-13 → 2026-10-14 Apifyapify hub credentialed 4 warning 4 tools
2026-10-13 → 2026-10-14 DNS Doctordnsdoctor data 4 warning 4 tools
2026-10-13 → 2026-10-14 Shopifyshopify api 3 warning 3 tools
2026-10-13 → 2026-10-14 BetSlipDoctorbetslipdoctor api 1 warning 1 tool
2026-10-13 → 2026-10-14 Hugging Facehuggingface hub 1 warning 1 tool
2026-10-12 → 2026-10-13 MintMCPmintmcp-docs docs 4 warning 4 tools
2026-10-11 → 2026-10-12 Karantelibykaranteli api 29 warning 29 tools
2026-10-10 → 2026-10-11 BetSlipDoctorbetslipdoctor api 4 warning 4 tools
2026-10-09 → 2026-10-10 Microsoftmicrosoft-learn docs 5 warning 5 info 3 tools
full fragment
{"const":"f6cceafe-1ace-451b-adf7-a1ab2a0ded1c","default":"f6cceafe-1ace-451b-adf7-a1ab2a0ded1c","description":"The logical session identifier provided by tools/list; use its default value on every Microsoft Learn tool call","type":["null","string"]}full fragment
{"const":"f6cceafe-1ace-451b-adf7-a1ab2a0ded1c","default":"f6cceafe-1ace-451b-adf7-a1ab2a0ded1c","description":"The logical session identifier provided by tools/list; use its default value on every Microsoft Learn tool call","type":["null","string"]}full fragment
{"const":"f6cceafe-1ace-451b-adf7-a1ab2a0ded1c","default":"f6cceafe-1ace-451b-adf7-a1ab2a0ded1c","description":"The logical session identifier provided by tools/list; use its default value on every Microsoft Learn tool call","type":["null","string"]}2026-10-08 → 2026-10-09 Microsoftmicrosoft-learn docs 3 warning 3 tools
2026-10-08 → 2026-10-09 Shopifyshopify api 3 warning 3 tools
2026-10-06 → 2026-10-09 A2A Wirea2awire-weather data 1 warning 1 tool
2026-10-07 → 2026-10-08 Karantelibykaranteli api 1 warning 1 tool
2026-10-06 → 2026-10-07 Sonartrysonar api 28 warning 28 tools
2026-10-06 → 2026-10-07 FiatDockfiatdock api 4 warning 4 tools
2026-10-06 → 2026-10-07 Microsoftmicrosoft-learn docs 3 warning 3 tools
2026-10-06 → 2026-10-07 Dim Hourdimhour-catalog data 1 breaking 1 warning 1 tool
2026-10-06 → 2026-10-07 Linearlinear api credentialed 2 warning 2 tools
2026-10-06 → 2026-10-07 DeepSearchdeepsearch data 1 warning 1 tool
2026-10-05 → 2026-10-06 Dim Hourdimhour-catalog data 3 warning 3 tools
2026-10-05 → 2026-10-06 Microsoftmicrosoft-learn docs 3 warning 3 tools
2026-10-05 → 2026-10-06 Karantelibykaranteli api 1 warning 1 tool
2026-10-05 → 2026-10-06 Linearlinear api credentialed 1 warning 1 tool
2026-10-05 → 2026-10-06 SendRavensendraven api 1 warning 1 tool
2026-10-04 → 2026-10-05 FiatDockfiatdock api 4 warning 4 tools
2026-10-04 → 2026-10-05 BetSlipDoctorbetslipdoctor api 2 warning 2 tools
2026-10-04 → 2026-10-05 Autengauteng-docs docs 1 breaking 1 tool
2026-10-04 → 2026-10-05 LatLonglatlong-map data 1 warning 1 tool
2026-10-03 → 2026-10-04 Dim Hourdimhour-catalog data 3 warning 3 tools
2026-10-02 → 2026-10-03 DeepSearchdeepsearch data 3 warning 3 tools
2026-10-02 → 2026-10-03 Sentrysentry api credentialed 2 warning 2 tools
2026-10-02 → 2026-10-03 Shopifyshopify api 2 warning 2 tools
2026-10-01 → 2026-10-02 Sonartrysonar api 7 warning 7 tools
2026-10-01 → 2026-10-02 Shopifyshopify api 2 warning 2 tools
2026-10-01 → 2026-10-02 DNS Doctordnsdoctor data 1 warning 1 tool
2026-10-01 → 2026-10-02 Sentrysentry api credentialed 1 warning 1 tool
2026-09-30 → 2026-10-01 Neonneon api credentialed 1 warning 12 info 3 tools
full fragment
{"additionalProperties":false,"properties":{"cron":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["cron"],"type":"object"}full fragment
{"additionalProperties":false,"properties":{"cron":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["cron"],"type":"object"}2026-09-30 → 2026-10-01 BetSlipDoctorbetslipdoctor api 2 warning 2 tools
2026-09-30 → 2026-10-01 Sentrysentry api credentialed 2 warning 2 tools
2026-09-29 → 2026-09-30 DocImprintdocimprint api 22 breaking 12 warning 34 tools
2026-09-29 → 2026-09-30 Karantelibykaranteli api 2 warning 2 tools
2026-09-28 → 2026-09-29 Karantelibykaranteli api 2 warning 2 tools
2026-09-28 → 2026-09-29 DNS Doctordnsdoctor data 1 warning 1 tool
2026-09-25 → 2026-09-26 Karantelibykaranteli api 1 warning 2 info 1 tool
2026-09-25 → 2026-09-26 FiatDockfiatdock api 2 warning 2 tools
2026-09-25 → 2026-09-26 LatLonglatlong-map data 1 warning 1 tool
2026-09-25 → 2026-09-26 Neonneon api credentialed 1 warning 1 tool
2026-09-24 → 2026-09-25 Apifyapify hub credentialed 1 breaking 1 tool
2026-09-23 → 2026-09-24 LatLonglatlong-map data 2 breaking 2 warning 3 info 4 tools
2026-09-23 → 2026-09-24 Apifyapify hub credentialed 1 breaking 1 tool
2026-09-23 → 2026-09-24 Atlassianatlassian api credentialed 1 warning 1 tool
2026-09-23 → 2026-09-24 Linearlinear api credentialed 1 warning 1 tool
2026-09-23 → 2026-09-24 RoxyAPIroxyapi-docs docs 1 warning 1 tool
2026-09-23 → 2026-09-24 Stripestripe api credentialed 1 warning 1 tool
2026-09-22 → 2026-09-23 SendRavensendraven api 50 warning 50 tools
2026-09-22 → 2026-09-23 Linearlinear api credentialed 9 breaking 9 tools
2026-09-22 → 2026-09-23 BetSlipDoctorbetslipdoctor api 8 warning 5 tools
2026-09-22 → 2026-09-23 Karantelibykaranteli api 6 warning 6 tools
2026-09-22 → 2026-09-23 RoxyAPIroxyapi-docs docs 1 warning 1 tool
2026-09-22 → 2026-09-23 Stripestripe api credentialed 1 breaking 1 tool
2026-09-21 → 2026-09-22 BetSlipDoctorbetslipdoctor api 2 warning 6 info 2 tools
full fragment
{"description":"Return this one report in full instead of the compact list.","type":"string"}full fragment
{"description":"Research depth. 'fast' (default) answers quickly; 'deep' fans out to every research provider.","enum":["fast","deep"],"type":"string"}full fragment
{"description":"The betslip as pasted text: one leg per line with odds where known.","type":"string"}full fragment
{"description":"Optional BSD two-level BetTicketContract. Use this for screenshot/manual parses and SGP trees.","type":"object"}2026-09-21 → 2026-09-22 Shopifyshopify api 1 warning 1 tool
2026-09-20 → 2026-09-21 Karantelibykaranteli api 2 warning 2 tools
2026-09-19 → 2026-09-20 Karantelibykaranteli api 3 warning 2 info 3 tools
2026-09-18 → 2026-09-19 PayPalpaypal-sandbox api credentialed 2 warning 2 info 1 tool
full fragment
{"additionalProperties":false,"description":"The invoice detail","properties":{"currency_code":{"description":"currency code of the invoice","type":"string"},"invoice_date":{"description":"The invoice date in YYYY-MM-DD format","type":"string"}},"required":["currency_code"],"type":"object"}full fragment
{"additionalProperties":false,"description":"The invoicer business information that appears on the invoice.","properties":{"business_name":{"description":"business name of the invoicer","maxLength":300,"type":"string"},"email_address":{"description":"email address of the invoicer","type":"string"},"name":{"additionalProperties":false,"description":"name of the invoicer","properties":{"given_name":{"description":"given name of the invoicer","type":"string"},"surname":{"description":"surname of the invoicer","type":"string"}},"type":"object"}},"required":["business_name"],"type":"object"}full fragment
{"description":"The three-character ISO-4217 currency code for the invoice (for example, USD). Applies to every monetary amount on the invoice.","type":"string"}2026-09-19 → 2026-09-19 SendRavensendraven api 4 warning 4 tools
2026-09-18 → 2026-09-19 A2A Wirea2awire-weather data 1 warning 1 tool
2026-09-18 → 2026-09-19 Karantelibykaranteli api 1 warning 1 tool
2026-09-18 → 2026-09-19 Sentrysentry api credentialed 1 info 1 tool
2026-09-18 → 2026-09-19 Shopifyshopify api 1 warning 1 tool
2026-09-17 → 2026-09-18 Aaveaave api 2 warning 1 info 3 tools
2026-09-17 → 2026-09-18 Supabasesupabase api credentialed 2 warning 2 tools
2026-09-16 → 2026-09-17 DNS Doctordnsdoctor data 4 warning 4 tools
2026-09-16 → 2026-09-17 Dim Hourdimhour-catalog data 3 warning 3 tools
2026-09-16 → 2026-09-17 Conexcolconexcol api 1 warning 1 tool
2026-09-16 → 2026-09-17 Linearlinear api credentialed 1 warning 1 tool
2026-09-15 → 2026-09-16 SendRavensendraven api 1 breaking 36 warning 1 info 37 tools
2026-09-15 → 2026-09-16 ntopntop-docs docs 2 warning 2 tools
2026-09-15 → 2026-09-16 PoliticalCommspoliticalcomms-docs docs 2 warning 2 tools
2026-09-15 → 2026-09-16 Conexcolconexcol api 1 warning 1 tool
2026-09-15 → 2026-09-16 FiatDockfiatdock api 1 warning 1 tool
2026-09-15 → 2026-09-16 Sonartrysonar api 1 warning 1 tool
2026-09-14 → 2026-09-15 Aaveaave api 4 warning 4 tools
2026-09-14 → 2026-09-15 SendRavensendraven api 4 warning 4 tools
2026-09-14 → 2026-09-15 Conexcolconexcol api 3 warning 3 tools
2026-09-14 → 2026-09-15 searchcodesearchcode data 3 warning 3 tools
2026-09-14 → 2026-09-15 Linearlinear api credentialed 1 warning 1 tool
2026-09-14 → 2026-09-15 Sentrysentry api credentialed 1 warning 1 tool
2026-09-13 → 2026-09-14 SendRavensendraven api 1 warning 1 tool
2026-09-11 → 2026-09-12 Sonartrysonar api 1 breaking 23 warning 24 tools
2026-09-11 → 2026-09-12 Neonneon api credentialed 2 warning 2 tools
2026-09-11 → 2026-09-12 Dim Hourdimhour-catalog data 1 warning 1 tool
2026-09-11 → 2026-09-12 searchcodesearchcode data 1 warning 1 tool
2026-09-10 → 2026-09-11 Linearlinear api credentialed 2 warning 2 tools
2026-09-10 → 2026-09-11 Hugging Facehuggingface hub 1 warning 1 tool
2026-09-10 → 2026-09-11 Sentrysentry api credentialed 1 warning 1 tool
2026-09-09 → 2026-09-10 A2A Wirea2awire-weather data 1 warning 1 tool
2026-09-09 → 2026-09-10 Karantelibykaranteli api 1 warning 1 tool
2026-09-09 → 2026-09-10 Hugging Facehuggingface hub 1 warning 1 tool
2026-09-08 → 2026-09-09 DNS Doctordnsdoctor data 16 warning 16 tools
2026-09-08 → 2026-09-09 SendRavensendraven api 2 warning 2 tools
2026-09-08 → 2026-09-09 LatLonglatlong-map data 1 warning 1 tool
2026-09-07 → 2026-09-08 Aaveaave api 2 warning 5 info 5 tools
full fragment
{"description":"v4 only: the opaque reserveId, copied verbatim from a get_markets row or a get_position_items item in this session (e.g. 'MTo6MHg5NGU3...Ojo1') - it cannot be constructed or recalled, so fetch one before the first call rather than after a refusal. The 'spokeId' from get_user_positions is NOT this: it is the same encoding one segment short, names the spoke rather than a reserve inside it, and is rejected. A token symbol such as 'USDC' is rejected too.","type":"string"}full fragment
{"description":"v4 only: the opaque reserveId, copied verbatim from a get_markets row or a get_position_items item in this session (e.g. 'MTo6MHg5NGU3...Ojo1') - it cannot be constructed or recalled, so fetch one before the first call rather than after a refusal. The 'spokeId' from get_user_positions is NOT this: it is the same encoding one segment short, names the spoke rather than a reserve inside it, and is rejected. A token symbol such as 'USDC' is rejected too.","type":"string"}full fragment
{"description":"v4 only: the opaque reserveId, copied verbatim from a get_markets row or a get_position_items item in this session (e.g. 'MTo6MHg5NGU3...Ojo1') - it cannot be constructed or recalled, so fetch one before the first call rather than after a refusal. The 'spokeId' from get_user_positions is NOT this: it is the same encoding one segment short, names the spoke rather than a reserve inside it, and is rejected. A token symbol such as 'USDC' is rejected too.","type":"string"}2026-09-07 → 2026-09-08 Dim Hourdimhour-catalog data 3 warning 3 tools
2026-09-07 → 2026-09-08 SendRavensendraven api 2 warning 2 tools
2026-09-06 → 2026-09-07 SendRavensendraven api 6 warning 6 tools
2026-09-06 → 2026-09-07 Linearlinear api credentialed 2 warning 2 tools
2026-09-06 → 2026-09-07 Dim Hourdimhour-catalog data 1 breaking 1 tool
2026-09-05 → 2026-09-06 Karantelibykaranteli api 3 breaking 3 tools
2026-09-05 → 2026-09-06 DNS Doctordnsdoctor data 1 warning 1 tool
2026-09-05 → 2026-09-06 Sonartrysonar api 1 warning 1 tool
2026-09-04 → 2026-09-05 Karantelibykaranteli api 2 warning 2 tools
2026-09-04 → 2026-09-05 LatLonglatlong-map data 1 breaking 1 warning 2 tools
2026-09-04 → 2026-09-05 A2A Wirea2awire-weather data 1 warning 1 tool
2026-09-04 → 2026-09-05 Linearlinear api credentialed 1 warning 1 tool
2026-09-03 → 2026-09-04 LatLonglatlong-map data 5 breaking 5 tools
2026-09-03 → 2026-09-04 Aaveaave api 3 warning 3 tools
2026-09-03 → 2026-09-04 DNS Doctordnsdoctor data 3 warning 3 tools
2026-09-03 → 2026-09-04 Atlassianatlassian api credentialed 2 warning 2 tools
2026-09-03 → 2026-09-04 SendRavensendraven api 2 warning 2 tools
2026-09-03 → 2026-09-04 CronToEnglishcrontoenglish data 1 warning 1 tool
2026-09-03 → 2026-09-04 Datakootdatakoot-weather data 1 warning 1 tool
2026-09-03 → 2026-09-04 GitHubgithub api credentialed 1 warning 1 tool
2026-09-02 → 2026-09-03 Atlassianatlassian api credentialed 2 warning 2 tools
2026-09-01 → 2026-09-02 ImbaWalletimbawallet-docs docs 2 warning 2 tools
2026-08-31 → 2026-09-01 ImbaWalletimbawallet-docs docs 3 warning 3 tools
2026-08-31 → 2026-09-01 DNS Doctordnsdoctor data 1 warning 1 tool
2026-08-28 → 2026-08-29 Neonneon api credentialed 2 breaking 39 warning 94 info 35 tools
full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"type":"string"}}full fragment
{"name":"applyChanges","schema":{"default":true,"description":"Whether to apply the migration. Set to false to just delete the temp branch without applying.","type":"boolean"}}{"name":"apply_changes","schema":{"default":true,"description":"Whether to apply the migration. Set to false to just delete the temp branch without applying.","type":"boolean"}}full fragment
{"name":"databaseName","schema":{"description":"The database name. Pass the exact value from prepare_database_migration.","type":"string"}}{"name":"database_name","schema":{"description":"The database name. Pass the exact value from prepare_database_migration.","type":"string"}}full fragment
{"name":"migrationId","schema":{"description":"The migration ID from prepare_database_migration.","type":"string"}}{"name":"migration_id","schema":{"description":"The migration ID from prepare_database_migration.","type":"string"}}full fragment
{"name":"migrationSql","schema":{"description":"The SQL statements to apply. Pass the exact value from prepare_database_migration.","type":"string"}}{"name":"migration_sql","schema":{"description":"The SQL statements to apply. Pass the exact value from prepare_database_migration.","type":"string"}}full fragment
{"name":"parentBranchId","schema":{"description":"The parent branch ID where migration will be applied.","type":"string"}}{"name":"parent_branch_id","schema":{"description":"The parent branch ID where migration will be applied.","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The project ID. Pass the exact value from prepare_database_migration.","type":"string"}}{"name":"project_id","schema":{"description":"The project ID. Pass the exact value from prepare_database_migration.","type":"string"}}full fragment
{"name":"temporaryBranchId","schema":{"description":"The temporary branch ID to delete after migration.","type":"string"}}{"name":"temporary_branch_id","schema":{"description":"The temporary branch ID to delete after migration.","type":"string"}}full fragment
{"name":"applyChanges","schema":{"default":false,"description":"Whether to apply the suggested changes to the main branch","type":"boolean"}}{"name":"apply_changes","schema":{"default":false,"description":"Whether to apply the suggested changes to the main branch","type":"boolean"}}full fragment
{"name":"branchId","schema":{"description":"The ID or name of the branch that receives the changes. If not provided, the default (main) branch will be used.","type":"string"}}{"name":"branch_id","schema":{"description":"The ID or name of the branch that receives the changes. If not provided, the default (main) branch will be used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database to execute the query against","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database to execute the query against","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}full fragment
{"name":"roleName","schema":{"description":"The name of the role to connect with. If you have used a specific role in prepare_query_tuning you MUST pass the same role again to this tool. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}{"name":"role_name","schema":{"description":"The name of the role to connect with. If you have used a specific role in prepare_query_tuning you MUST pass the same role again to this tool. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}full fragment
{"name":"shouldDeleteTemporaryBranch","schema":{"default":true,"description":"Whether to delete the temporary branch after tuning","type":"boolean"}}{"name":"should_delete_temporary_branch","schema":{"default":true,"description":"Whether to delete the temporary branch after tuning","type":"boolean"}}full fragment
{"name":"suggestedSqlStatements","schema":{"description":"The SQL DDL statements to execute to improve performance. These statements are the result of the prior steps, for example creating additional indexes.","items":{"type":"string"},"type":"array"}}{"name":"suggested_sql_statements","schema":{"description":"The SQL DDL statements to execute to improve performance. These statements are the result of the prior steps, for example creating additional indexes.","items":{"type":"string"},"type":"array"}}full fragment
{"name":"temporaryBranchId","schema":{"description":"The ID of the temporary branch that needs to be deleted after tuning.","type":"string"}}{"name":"temporary_branch_id","schema":{"description":"The ID of the temporary branch that needs to be deleted after tuning.","type":"string"}}full fragment
{"name":"tuningId","schema":{"description":"The ID of the tuning to complete. This is NOT the branch ID. Remember this ID from the prior step using tool prepare_query_tuning.","type":"string"}}{"name":"tuning_id","schema":{"description":"The ID of the tuning to complete. This is NOT the branch ID. Remember this ID from the prior step using tool prepare_query_tuning.","type":"string"}}full fragment
{"description":"An optional ISO 8601 timestamp after which Neon automatically deletes the branch.","type":"string"}full fragment
{"name":"parentId","schema":{"description":"An optional branch ID (e.g. 'br-...') to branch from. If omitted, the branch is created from the project's default branch. Use this to fork an existing non-default branch — for example, to make an isolated copy of a dev/staging branch for experimentation.","type":"string"}}{"name":"parent_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}full fragment
{"name":"tableName","schema":{"description":"The table name, optionally schema-qualified (for example, crm.contacts)","type":"string"}}{"name":"table_name","schema":{"description":"The table name, optionally schema-qualified (for example, crm.contacts)","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"The ID or name of the branch. If not provided, the default branch will be used.","type":"string"}}{"name":"branch_id","schema":{"description":"The ID or name of the branch. If not provided, the default branch will be used.","type":"string"}}full fragment
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project. If not provided, the only available project will be used.","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project. If not provided, the only available project will be used.","type":"string"}}full fragment
{"name":"roleName","schema":{"description":"The name of the role to connect with. If not provided, the database owner name will be used.","type":"string"}}{"name":"role_name","schema":{"description":"The name of the role to connect with. If not provided, the database owner name will be used.","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"Branch ID. If omitted, the project default branch is used (same as provision_neon_auth).","type":"string"}}{"name":"branch_id","schema":{"description":"Branch ID. If omitted, the project default branch is used (same as provision_neon_auth).","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}full fragment
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"Database to inspect. Omit to cover every database on the branch. Ranking and SQL row limits stay per database. One failing database fails the whole run. Compute-wide checks run once against the first listed database. The response `limit` applies to the combined rows after that.","minLength":1,"type":"string"}}{"name":"database_name","schema":{"description":"For a database-scoped check, the database to inspect. Omit to cover every database on the branch. Ranking and SQL row limits stay per database. One failing database fails the whole run. For a compute-wide check, the database to connect through; the check still runs once for the whole compute and the result does not include `databaseName`. The response `limit` applies to the combined rows after that.","minLength":1,"type":"string"}}full fragment
{"name":"branchId","schema":{"description":"The ID of the branch. If provided, endpoints for this specific branch will be listed.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project. If not provided, the only available project will be used.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"The ID of the branch. Defaults to the project's default branch.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"description":"The log field (label) whose distinct values to list, e.g. \"service_name\" or \"severity_text\". Use list_log_fields to discover valid field names.","minLength":1,"type":"string"}full fragment
{"name":"projectId","schema":{"description":"The ID of the project. Defaults to your only project if unambiguous.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"The ID of the branch. Defaults to the project's default branch.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project. Defaults to your only project if unambiguous.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"description":"Specify the cursor value from the previous response to retrieve the next batch of projects.","type":"string"}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch. If not provided the default branch is used.","type":"string"}}full fragment
{"name":"computeId","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}{"name":"compute_id","schema":{"description":"The ID of the compute/endpoint. If not provided, the read-write compute associated with the branch will be used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"minExecutionTime","schema":{"default":1000,"description":"Minimum execution time in milliseconds to consider a query as slow","type":"number"}}{"name":"min_execution_time","schema":{"default":1000,"description":"Minimum execution time in milliseconds to consider a query as slow","type":"number"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database to execute the query against","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database to execute the query against","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}full fragment
{"name":"roleName","schema":{"description":"The name of the role to connect with. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}{"name":"role_name","schema":{"description":"The name of the role to connect with. If not provided, the default role (usually \"neondb_owner\") will be used.","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to provision Neon Auth for. If not provided, the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The database name to provision Neon Auth for. If not provided, the default database is used.","type":"string"}}{"name":"database_name","schema":{"type":"string"}}full fragment
{"name":"bodyContains","schema":{"description":"Return only logs whose rendered message contains this case-sensitive substring. Structured messages use compact JSON, so match JSON syntax such as `\"http_status\":200`, not prose such as `http_status: 200`.","minLength":1,"type":"string"}}{"name":"body_contains","schema":{"minLength":1,"type":"string"}}full fragment
{"name":"branchId","schema":{"description":"The ID of the branch whose logs to query. Defaults to the project's default branch.","type":"string"}}{"name":"branch_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"name":"endTime","schema":{"description":"Absolute end of the window, RFC3339. Ends either a relative `since` window or an absolute `startTime` window; defaults to now.","type":"string"}}{"name":"end_time","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}}full fragment
{"description":"Return only logs at this OTel severity level or above (trace \u003c debug \u003c info \u003c warn \u003c error \u003c fatal). E.g. \"error\" returns ERROR and FATAL.","enum":["trace","debug","info","warn","error","fatal"],"type":"string"}full fragment
{"name":"projectId","schema":{"description":"The ID of the project whose logs to query. If omitted and you have exactly one project, that project is used.","type":"string"}}{"name":"project_id","schema":{"pattern":"^[a-z0-9-]{1,60}$","type":"string"}}full fragment
{"description":"Legacy compatibility alias for `logql`. Preserves the previous behavior of overriding any structured filters. Do not supply both raw fields.","minLength":1,"type":"string"}full fragment
{"name":"serviceName","schema":{"description":"Filter to a specific OTel service name (service.name).","minLength":1,"type":"string"}}{"name":"service_name","schema":{"minLength":1,"type":"string"}}full fragment
{"name":"severityText","schema":{"description":"Filter to an exact severity text (e.g. \"ERROR\"). Takes precedence over minSeverity.","minLength":1,"type":"string"}}{"name":"severity_text","schema":{"minLength":1,"type":"string"}}full fragment
{"name":"startTime","schema":{"description":"Absolute start of the window, RFC3339 (e.g. \"2026-07-16T09:00:00Z\"). Overrides `since`; the startTime/endTime window must not span more than seven days.","type":"string"}}{"name":"start_time","schema":{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","type":"string"}}full fragment
{"name":"traceId","schema":{"description":"Correlate to a distributed trace: return only logs with this trace_id.","pattern":"^[0-9a-f]{32}$","type":"string"}}{"name":"trace_id","schema":{"pattern":"^[0-9a-f]{32}$","type":"string"}}full fragment
{"description":"The name or ID of the branch to reset from its parent","type":"string"}full fragment
{"name":"preserveUnderName","schema":{"description":"Optional name to preserve the current state under a new branch before resetting","type":"string"}}{"name":"preserve_under_name","schema":{"description":"Name under which to save the current branch before the reset. Required when the branch has children; those children move to the new branch.","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}full fragment
{"name":"branchId","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}{"name":"branch_id","schema":{"description":"An optional ID of the branch to execute the query against. If not provided the default branch is used.","type":"string"}}full fragment
{"name":"databaseName","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}{"name":"database_name","schema":{"description":"The name of the database. If not provided, the default neondb or first available database is used.","type":"string"}}full fragment
{"name":"projectId","schema":{"description":"The ID of the project to execute the query against","type":"string"}}{"name":"project_id","schema":{"description":"The ID of the project to execute the query against","type":"string"}}full fragment
{"name":"sqlStatements","schema":{"description":"The SQL statements to execute","items":{"type":"string"},"type":"array"}}{"name":"sql_statements","schema":{"description":"The SQL statements to execute","items":{"type":"string"},"type":"array"}}2026-08-27 → 2026-08-28 Linearlinear api credentialed 2 warning 2 tools
2026-08-26 → 2026-08-27 Linearlinear api credentialed 1 warning 1 tool
2026-08-26 → 2026-08-27 Sentrysentry api credentialed 1 warning 1 tool
2026-08-25 → 2026-08-26 Apifyapify hub credentialed 2 warning 2 tools
2026-08-25 → 2026-08-26 Hugging Facehuggingface hub 1 warning 1 tool
2026-08-24 → 2026-08-25 Neonneon api credentialed 1 warning 1 tool
No event matches that filter.
05 / servers reporting data
62 servers reachable in the latest run and observed at least once.
A server with no observations cannot contribute to a rate, so it is not listed. Events, breaking and wording count the rows above; additive changes are stored but not counted here. Comparison days count days, not observations. An anonymous server answers tools/list with no credential, and its row carries the probe: the same call the watch makes, minus initialize — a server that answers it with “session required” insists on initialize first and is alive. The MCP revision is the one a session negotiated: a floor, not a ceiling.
bykarantelihttps://mcp.bykaranteli.com/probecurl -sS 'https://mcp.bykaranteli.com/' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Karanteli | api | anonymous | 68 | 43 | 42 | 13 | 1 | 12 | 0 / 68 | 2025-11-25 |
| linearhttps://mcp.linear.app/mcp | Linear | api | credentialed | 59 | 52 | 51 | 12 | 1 | 11 | 0 / 59 | 2026-07-28 |
sendravenhttps://mcp.sendraven.ai/mcpprobecurl -sS 'https://mcp.sendraven.ai/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
SendRaven | api | anonymous | 55 | 43 | 42 | 10 | 1 | 9 | 0 / 55 | 2025-11-25 |
dnsdoctorhttps://dnsdoctor.dev/mcpprobecurl -sS 'https://dnsdoctor.dev/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
DNS Doctor | data | anonymous | 22 | 49 | 48 | 8 | 0 | 8 | 22 / 22 | 2026-07-28 |
| sentryhttps://mcp.sentry.dev/mcp | Sentry | api | credentialed | 15 | 52 | 51 | 8 | 0 | 7 | 4 / 15 | 2026-07-28 |
dimhour-cataloghttps://mcp.dimhour.com/sseprobecurl -sS 'https://mcp.dimhour.com/sse' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Dim Hour | data | anonymous | 9 | 43 | 42 | 7 | 2 | 5 | 9 / 9 | 2025-11-25 |
shopifyhttps://setup.shopify.com/mcpprobecurl -sS 'https://setup.shopify.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Shopify | api | anonymous | 30 | 28 | 27 | 7 | 0 | 7 | 21 / 30 | 2025-11-25 |
latlong-maphttps://geocp.latlong.ai/mcp/probecurl -sS 'https://geocp.latlong.ai/mcp/' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
LatLong | data | anonymous | 5 | 43 | 42 | 6 | 3 | 3 | 2 / 5 | 2025-11-25 |
trysonarhttps://trysonar.app/mcpprobecurl -sS 'https://trysonar.app/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Sonar | api | anonymous | 62 | 49 | 48 | 6 | 1 | 5 | 0 / 62 | 2025-11-25 |
betslipdoctorhttps://api.betslipdoctor.ai/api/mcpprobecurl -sS 'https://api.betslipdoctor.ai/api/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
BetSlipDoctor | api | anonymous | 46 | 49 | 48 | 6 | 0 | 6 | 0 / 46 | 2025-06-18 |
| neonhttps://mcp.neon.tech/mcp | Neon | api | credentialed | 114 | 52 | 51 | 5 | 1 | 4 | 0 / 114 | 2025-11-25 |
| apifyhttps://mcp.apify.com/ | Apify | hub | credentialed | 12 | 52 | 51 | 4 | 2 | 2 | 12 / 12 | 2026-07-28 |
a2awire-weatherhttps://a2awire.com/mcp/data/usweather-us-weather-alerts-nws-active-ca26b1/httpprobecurl -sS 'https://a2awire.com/mcp/data/usweather-us-weather-alerts-nws-active-ca26b1/http' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
A2A Wire | data | anonymous | 16 | 41 | 40 | 4 | 0 | 4 | 10 / 16 | 2025-11-25 |
aavehttps://mcp.aave.comprobecurl -sS 'https://mcp.aave.com' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Aave | api | anonymous | 53 | 43 | 42 | 4 | 0 | 4 | 0 / 53 | 2026-07-28 |
fiatdockhttps://fiatdock.com/mcpprobecurl -sS 'https://fiatdock.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
FiatDock | api | anonymous | 47 | 49 | 48 | 4 | 0 | 4 | 47 / 47 | 2025-11-25 |
huggingfacehttps://huggingface.co/mcpprobecurl -sS 'https://huggingface.co/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Hugging Face | hub | anonymous | 4 | 52 | 51 | 4 | 0 | 4 | 2 / 4 | 2026-07-28 |
microsoft-learnhttps://learn.microsoft.com/api/mcpprobecurl -sS 'https://learn.microsoft.com/api/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Microsoft | docs | anonymous | 3 | 49 | 48 | 4 | 0 | 4 | 2 / 3 | 2025-06-18 |
| atlassianhttps://mcp.atlassian.com/v1/mcp | Atlassian | api | credentialed | 46 | 52 | 51 | 3 | 0 | 3 | 0 / 46 | 2025-11-25 |
conexcolhttps://mcp.conexcol.net.co/mcpprobecurl -sS 'https://mcp.conexcol.net.co/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Conexcol | api | anonymous | 10 | 42 | 41 | 3 | 0 | 3 | 10 / 10 | 2026-07-28 |
| stripehttps://mcp.stripe.com | Stripe | api | credentialed | 9 | 52 | 51 | 2 | 1 | 1 | 7 / 9 | 2026-07-28 |
deepsearchhttps://deepsearch.app/api/mcpprobecurl -sS 'https://deepsearch.app/api/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
DeepSearch | data | anonymous | 12 | 49 | 48 | 2 | 0 | 2 | 12 / 12 | 2026-07-28 |
imbawallet-docshttps://imbawallet.com/mcp/docsprobecurl -sS 'https://imbawallet.com/mcp/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
ImbaWallet | docs | anonymous | 6 | 49 | 48 | 2 | 0 | 2 | 0 / 6 | 2026-07-28 |
roxyapi-docshttps://roxyapi.com/mcp/docsprobecurl -sS 'https://roxyapi.com/mcp/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
RoxyAPI | docs | anonymous | 1 | 49 | 48 | 2 | 0 | 2 | 1 / 1 | 2026-07-28 |
searchcodehttps://api.searchcode.com/v1/mcpprobecurl -sS 'https://api.searchcode.com/v1/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
searchcode | data | anonymous | 7 | 49 | 48 | 2 | 0 | 2 | 0 / 7 | 2025-03-26 |
auteng-docshttps://auteng.ai/mcp/docsprobecurl -sS 'https://auteng.ai/mcp/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Auteng | docs | anonymous | 6 | 49 | 48 | 1 | 1 | 0 | 6 / 6 | 2025-11-25 |
docimprinthttps://api.docimprint.com/mcpprobecurl -sS 'https://api.docimprint.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
DocImprint | api | anonymous | 21 | 49 | 48 | 1 | 1 | 0 | 21 / 21 | 2025-11-25 |
crontoenglishhttps://crontoenglish.com/api/mcpprobecurl -sS 'https://crontoenglish.com/api/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
CronToEnglish | data | anonymous | 3 | 43 | 42 | 1 | 0 | 1 | 0 / 3 | 2026-07-28 |
datakoot-weatherhttps://weather.datakoot.com/mcpprobecurl -sS 'https://weather.datakoot.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Datakoot | data | anonymous | 6 | 43 | 42 | 1 | 0 | 1 | 6 / 6 | 2025-06-18 |
| githubhttps://api.githubcopilot.com/mcp/ | GitHub | api | credentialed | 46 | 52 | 51 | 1 | 0 | 1 | 46 / 46 | 2026-07-28 |
mintmcp-docshttps://www.mintmcp.com/docs/mcpprobecurl -sS 'https://www.mintmcp.com/docs/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
MintMCP | docs | anonymous | 4 | 49 | 48 | 1 | 0 | 1 | 4 / 4 | 2025-11-25 |
ntop-docshttps://docs.ntop.com/mcpprobecurl -sS 'https://docs.ntop.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
ntop | docs | anonymous | 3 | 49 | 48 | 1 | 0 | 1 | 0 / 3 | 2026-07-28 |
| paypal-sandboxhttps://mcp.sandbox.paypal.com/sse | PayPal | api | credentialed | 46 | 52 | 51 | 1 | 0 | 1 | 0 / 46 | 2025-11-25 |
politicalcomms-docshttps://docs.politicalcomms.com/mcpprobecurl -sS 'https://docs.politicalcomms.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
PoliticalComms | docs | anonymous | 3 | 49 | 48 | 1 | 0 | 1 | 0 / 3 | 2026-07-28 |
| supabasehttps://mcp.supabase.com/mcp | Supabase | api | credentialed | 29 | 52 | 51 | 1 | 0 | 1 | 0 / 29 | 2026-07-28 |
agendaforge-docshttps://mcp.agendaforge.app/mcp/docsprobecurl -sS 'https://mcp.agendaforge.app/mcp/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
AgendaForge | docs | anonymous | 2 | 49 | 48 | 0 | 0 | 0 | 0 / 2 | 2025-11-25 |
applivery-docshttps://docs.applivery.com/mcpprobecurl -sS 'https://docs.applivery.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Applivery | docs | anonymous | 4 | 49 | 48 | 0 | 0 | 0 | 3 / 4 | 2025-11-25 |
ashtonforge-directoryhttps://ashtonforge.com/mcp/directoryprobecurl -sS 'https://ashtonforge.com/mcp/directory' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Ashton Forge | data | anonymous | 3 | 43 | 42 | 0 | 0 | 0 | 0 / 3 | 2025-11-25 |
betterchesshttps://mcp.betterchess.coprobecurl -sS 'https://mcp.betterchess.co' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
BetterChess | api | anonymous | 4 | 43 | 42 | 0 | 0 | 0 | 0 / 4 | 2025-06-18 |
blockrazor-docshttps://mcp.blockrazor.io/docsprobecurl -sS 'https://mcp.blockrazor.io/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
BlockRazor | docs | anonymous | 4 | 49 | 48 | 0 | 0 | 0 | 0 / 4 | 2025-06-18 |
burnesatelier-opshttps://x402.burnesatelier.com/mcpprobecurl -sS 'https://x402.burnesatelier.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Burnes Atelier | api | anonymous | 1 | 34 | 33 | 0 | 0 | 0 | 1 / 1 | 2026-07-28 |
capitolguidehttps://capitol.guide/mcpprobecurl -sS 'https://capitol.guide/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Capitol Guide | data | anonymous | 9 | 49 | 48 | 0 | 0 | 0 | 0 / 9 | 2024-11-05 |
cargovoxhttps://mcp.cargovox.com/mcpprobecurl -sS 'https://mcp.cargovox.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
CargoVox | api | anonymous | 8 | 43 | 42 | 0 | 0 | 0 | 0 / 8 | 2025-06-18 |
carrepair-estimatorhttps://carrepaircostestimator.com/mcpprobecurl -sS 'https://carrepaircostestimator.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Car Repair Cost Estimator | data | anonymous | 7 | 43 | 42 | 0 | 0 | 0 | 0 / 7 | 2026-07-28 |
cloudflare-docshttps://docs.mcp.cloudflare.com/mcpprobecurl -sS 'https://docs.mcp.cloudflare.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Cloudflare | docs | anonymous | 2 | 52 | 51 | 0 | 0 | 0 | 1 / 2 | 2026-07-28 |
devexpress-docshttps://api.devexpress.com/mcp/docsprobecurl -sS 'https://api.devexpress.com/mcp/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
DevExpress | docs | anonymous | 2 | 49 | 48 | 0 | 0 | 0 | 0 / 2 | 2025-11-25 |
docs-mdhttps://docs-md.com/api/mcpprobecurl -sS 'https://docs-md.com/api/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
docs-md | docs | anonymous | 3 | 49 | 48 | 0 | 0 | 0 | 0 / 3 | 2025-06-18 |
doseplothttps://api.doseplot.com/mcpprobecurl -sS 'https://api.doseplot.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
DosePlot | api | anonymous | 5 | 43 | 42 | 0 | 0 | 0 | 5 / 5 | 2025-11-25 |
easyparserhttps://mcp.easyparser.com/mcpprobecurl -sS 'https://mcp.easyparser.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
EasyParser | api | anonymous | 17 | 43 | 42 | 0 | 0 | 0 | 17 / 17 | 2025-11-25 |
einvoicewizhttps://einvoicewiz.com/mcpprobecurl -sS 'https://einvoicewiz.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
eInvoiceWiz | api | anonymous | 7 | 43 | 42 | 0 | 0 | 0 | 0 / 7 | 2025-11-25 |
firmenwatchhttps://firmenwatch.ch/api/mcpprobecurl -sS 'https://firmenwatch.ch/api/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Firmenwatch | data | anonymous | 6 | 43 | 42 | 0 | 0 | 0 | 6 / 6 | 2026-07-28 |
florealholidayshttps://mcp.florealholidays.be/mcpprobecurl -sS 'https://mcp.florealholidays.be/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Floreal Holidays | api | anonymous | 16 | 43 | 42 | 0 | 0 | 0 | 0 / 16 | 2025-11-25 |
fusionauth-docshttps://ai.fusionauth.dev/mcp/docsprobecurl -sS 'https://ai.fusionauth.dev/mcp/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
FusionAuth | docs | anonymous | 2 | 49 | 48 | 0 | 0 | 0 | 0 / 2 | 2025-06-18 |
gingerguidehttps://gingerguide.app/mcpprobecurl -sS 'https://gingerguide.app/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
GingerGuide | data | anonymous | 4 | 49 | 48 | 0 | 0 | 0 | 0 / 4 | 2025-11-25 |
htagai-docshttps://api.htagai.com/mcp/v1/servers/htag-docs/mcpprobecurl -sS 'https://api.htagai.com/mcp/v1/servers/htag-docs/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
HTAG AI | docs | anonymous | 5 | 49 | 48 | 0 | 0 | 0 | 5 / 5 | 2025-06-18 |
infobip-searchhttps://mcp.infobip.com/searchprobecurl -sS 'https://mcp.infobip.com/search' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Infobip | docs | anonymous | 1 | 49 | 48 | 0 | 0 | 0 | 0 / 1 | 2025-11-25 |
invokerahttps://invokera.com/r/book-searchprobecurl -sS 'https://invokera.com/r/book-search' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Invokera | data | anonymous | 2 | 49 | 48 | 0 | 0 | 0 | 0 / 2 | 2025-06-18 |
moltline-researchhttps://mcp.moltlinestudio.com/researchprobecurl -sS 'https://mcp.moltlinestudio.com/research' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Moltline Studio | data | anonymous | 8 | 49 | 48 | 0 | 0 | 0 | 8 / 8 | 2025-11-25 |
seatcanvashttps://www.seatcanvas.app/api/mcpprobecurl -sS 'https://www.seatcanvas.app/api/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
SeatCanvas | api | anonymous | 3 | 49 | 48 | 0 | 0 | 0 | 3 / 3 | 2025-11-25 |
soracom-knowledgehttps://knowledge-mcp.soracom.comprobecurl -sS 'https://knowledge-mcp.soracom.com' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Soracom | docs | anonymous | 3 | 49 | 48 | 0 | 0 | 0 | 0 / 3 | 2025-11-25 |
twiliohttps://mcp.twilio.com/docsprobecurl -sS 'https://mcp.twilio.com/docs' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Twilio | docs | anonymous | 2 | 52 | 51 | 0 | 0 | 0 | 0 / 2 | 2025-11-25 |
vonage-docshttps://documentation-mcp.vonage.dev/mcpprobecurl -sS 'https://documentation-mcp.vonage.dev/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Vonage | docs | anonymous | 7 | 48 | 47 | 0 | 0 | 0 | 0 / 7 | 2025-06-18 |
yappy-docshttps://yappy.biz/docs/mcpprobecurl -sS 'https://yappy.biz/docs/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name' |
Yappy | docs | anonymous | 3 | 49 | 48 | 0 | 0 | 0 | 0 / 3 | 2025-06-18 |
No server matches that filter.
06 / outputSchema coverage
26.59% of published MCP tools declare an outputSchema — 293 of 1102, across 69 servers.
Counted over each server’s latest snapshot, from the schema as published. An outputSchema of {} is not counted: it constrains nothing. The number is recomputed from the stored tools every run and cross-checked against the percentage each snapshot stores; a disagreement is stated, never resolved by picking one.
07 / reachability — the latest run
62 of 76 watched servers answered tools/list; 10 refused without credentials; 3 did not answer at all.
Refused is not dead. “62 of 76 worked” and “62 worked, 10 require credentials, 3 are unreachable” are different findings, and only the second is publishable. Only the ok tier yields a snapshot, so only it can contribute a comparison.
- server/discover
- Attempted, unauthenticated, on 14 servers that did not answer
tools/list; answered by 0. The yield is zero: every gated server refuses the stateless discovery call at the HTTP layer too, so it does not widen the surveyable corpus. “Mandatory for servers” under revision 2026-07-28 is not “reachable without credentials”. - credentials
- 10 of the 18 servers that refuse an anonymous
tools/listare snapshotted anyway, with a credential attached; their rows are marked throughout.
08 / protocol-revision census
Which MCP revision the field actually runs, over 76 servers.
A version taken from a negotiated session is a floor, not a ceiling: the server may support a newer revision than the one this client settled on. None of these servers declared a supported-version list, so every figure here is a floor. Servers that evidenced no revision at all are shown, not dropped.
09 / method, and who is in the sample
What answers an anonymous tools/list is who gets watched.
The filter. Servers enter the watch by answering initialize + tools/list with no credentials. That is a filter on auth posture, not on importance, and what survives it skews toward small operators and documentation servers: of the 62 reporting today, 20 are documentation servers, 25 are product APIs, 2 are hubs, 15 are data and lookup services. Documentation servers are over-represented because they are what answers anonymously. A handful of operators are watched with a credential the vendor documents for machine access; their rows are marked.
Curation. Reachability gets a candidate reviewed, not watched. Entries are dropped on review for: no tools (a contract with no tools cannot drift); no identifiable operator behind the domain; content-farm publishing (one of dozens of near-identical registry entries from one account); an anonymous operator with a large tool surface, which would dominate the findings the way a hub does without a name anyone can check. Promotions from the registry are chosen by recency, one per registrable domain, and without looking at outputSchema, so the coverage number stays unbiased. Reachability is confirmed from a real Actions run, not a laptop: two servers that answered a residential IP returned 403 to the runner and were dropped the same day.
Ecosystem, not vendors. A rate measured over the long tail is a claim about the ecosystem, not about the operators a reader recognises. Computed separately, the headline is 5.28% over the 21 recognisable operators (54 of 1022 comparison days) and 4.51% over the 41 long-tail servers (83 of 1842). Both are collected because sample size is the scarce thing; the split is stated here, once, and nothing else on the page ranks a server by how well known it is.
What is reported. Every finding has a kind — catalog, input, output or wording — and, separately, a severity. A kind never implies a severity. Breaking: a tool removed, or a declared output field removed, renamed or retyped. Warning: a new required parameter, an optional output field no longer declared, a new value in an output enum, or a reworded description. Info: an input parameter renamed, narrowed or removed — the caller controls their own arguments, so this is information for them rather than a promise broken to them. Additive changes (a new tool, a new optional parameter) are not reported. A description counts once per tool per day, and an edit that only changes whitespace, case or punctuation does not count at all. The classifier is the collector’s public contract/diff package, unmodified; nothing on this page re-interprets a rule, and every rule id is explained beside its rows.
The unit. Every number above counts change events: one server on one day with at least one finding, taking the severity of its most serious finding. Rows are the detail underneath. One release that touches a hundred fields is one event.
Excluded from classification. Declared per server in servers.yaml, never inferred from how noisy a subtree looks. Each reason is checkable against the server’s own published schema.
| server | subtree | why | findings excluded |
|---|---|---|---|
| apify | output.storages.datasets.default.itemsSchema | provider declares this subtree inferred from historical runs, and the rows it describes are not in the response | 2685 (5173 changes incl. additive) |
Units. Snapshots are per server per day (a second observation the same day gets its own key). A comparison is one observation against the previous one; the record keeps every comparison and the page folds several observations of one field on one day into one row, saying so. The rate is a share of comparison days: a day observed twice cannot count twice, and a release that touches a hundred fields counts once.
Add a server to the watch
Public endpoint? Submit it — an automated probe answers on the issue, and reachable servers are reviewed for promotion.
Authenticated server you operate? It can’t join the public watch — interested in us watching it for you? Email us.