{
  "markdown": "# FactGrid\n\n**Reference data agents need before they write code.** Dependency upgrade advisories for npm and PyPI, developer API schemas across 1,097 services, and electronic component specifications — over MCP, Ed25519-signed, with the evidence attached.\n\nMCP endpoint: `https://factgrid.co.uk/mcp` · [Agent-readable docs](https://factgrid.co.uk/llms.txt) · [factgrid.co.uk](https://factgrid.co.uk)\n\n---\n\n## Stop an agent shipping a broken dependency upgrade\n\nYour agent wants to bump `chalk` from 4.1.2 to 5.0.0. Before it edits `package.json`, it asks what breaks:\n\n```\nGET /api/v1/packages/npm/chalk/advisory?from=4.1.2&to=5.0.0\nAuthorization: Bearer <key>\n```\n\n```json\n{\n  \"found\": true,\n  \"packageName\": \"chalk\",\n  \"fromVersion\": \"4.1.2\",\n  \"toVersion\": \"5.0.0\",\n  \"breakingCount\": 2,\n  \"advisories\": [\n    {\n      \"severity\": \"breaking\",\n      \"changeType\": \"MODULE_FORMAT_CHANGED\",\n      \"description\": \"chalk 5.0.0 changed module format from \\\"commonjs (undeclared)\\\" to \\\"module\\\". CommonJS require() of this package will now fail.\",\n      \"evidenceField\": \"type\",\n      \"evidenceBefore\": null,\n      \"evidenceAfter\": \"module\",\n      \"migrationHint\": \"Convert the call site to import(), or pin to the last CommonJS release.\"\n    },\n    {\n      \"severity\": \"breaking\",\n      \"changeType\": \"RUNTIME_REQUIREMENT_RAISED\",\n      \"description\": \"chalk 5.0.0 raised its runtime requirement from \\\">=10\\\" to \\\"^12.17.0 || ^14.13 || >=16.0.0\\\". Older runtimes are no longer supported.\",\n      \"evidenceField\": \"engines.node\",\n      \"evidenceBefore\": \">=10\",\n      \"evidenceAfter\": \"^12.17.0 || ^14.13 || >=16.0.0\",\n      \"migrationHint\": \"Confirm the deployment runtime satisfies the new floor before upgrading.\"\n    }\n  ]\n}\n```\n\nVia MCP, the same question is one tool call:\n\n```json\n{\n  \"name\": \"factgrid_package_upgrade_advisory\",\n  \"arguments\": { \"registry\": \"npm\", \"name\": \"chalk\", \"from\": \"4.1.2\", \"to\": \"5.0.0\" }\n}\n```\n\n**Every finding carries `evidenceField`, `evidenceBefore` and `evidenceAfter`** — the exact registry metadata field and its values either side of the change. An agent can verify the claim against npm or PyPI directly rather than taking our word for it.\n\n---\n\n## Connect\n\nStreamable HTTP. No install, no package to pull.\n\n```json\n{\n  \"mcpServers\": {\n    \"factgrid\": {\n      \"type\": \"http\",\n      \"url\": \"https://factgrid.co.uk/mcp\"\n    }\n  }\n}\n```\n\nManifest: [`/.well-known/mcp.json`](https://factgrid.co.uk/.well-known/mcp.json)\n\nGet a key — no signup, no card:\n\n```bash\ncurl -X POST https://factgrid.co.uk/api/v1/keys/create \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\":\"you@example.com\"}'\n```\n\n---\n\n## Tools\n\n| Tool | What it answers |\n|---|---|\n| `factgrid_package_upgrade_advisory` | What breaks between two published npm/PyPI versions |\n| `factgrid_api_schema` | Exact request/response shape of an API endpoint at a version |\n| `factgrid_integration_brief` | Everything needed to write one working call to an API |\n| `factgrid_discover_api` | Which of 1,097 services can do X |\n| `factgrid_deprecation_scan` | Which endpoints are deprecated, sunset dates, replacements |\n| `factgrid_auth_playbook` | Auth schemes, scopes, rate-limit headers, error-code table |\n| `factgrid_component_spec` | Electronics component pinouts, voltages, packages |\n| `factgrid_subscribe_spec_changes` | Webhook or polling callback when a spec changes |\n| `factgrid_create_topup_link` | Stripe checkout link when credit runs out |\n| `factgrid_api_breaking_changes` | **Currently offline** — see *What we don't claim* below |\n\n---\n\n## Catalogue\n\n| | |\n|---|---|\n| Package releases indexed | 10,190 across 16 npm/PyPI packages |\n| Upgrade advisories | 357, of which 84 breaking |\n| API endpoint schemas | 18,348 across 1,097 services |\n| Electronic components | 994 |\n\nLive counts, free and unauthenticated: [`/api/v1/stats`](https://factgrid.co.uk/api/v1/stats) · [`/api/v1/packages/stats`](https://factgrid.co.uk/api/v1/packages/stats)\n\n---\n\n## Pricing\n\n**50 free queries per key per day.** No card, no signup.\n\n| Tier | Price |\n|---|---|\n| Component lookup | $0.001 |\n| API schema | $0.002 |\n| Semantic search | $0.003 |\n| Deprecation scan | $0.005 |\n| Auth playbook | $0.005 |\n| Capability search | $0.005 |\n| Integration brief | $0.01 |\n| **Package upgrade advisory** | **$0.02** |\n\nPay from prepaid credit, or per call in USDC over **x402** — no account and no human in the loop. Live pricing: [`/api/v1/pricing`](https://factgrid.co.uk/api/v1/pricing)\n\n**Misses are never billed.** A query we can't answer returns `found: false`, `billed: false` and the nearest matches, at no charge. Cached revalidations (HTTP 304) and rate-limited requests are never charged either.\n\n---\n\n## What we don't claim\n\nThis section exists because the alternative is worse.\n\n**The API breaking-change tier is offline.** An earlier version of this project published 8,150 breaking-change diffs for third-party APIs. A spot-check found a **100% false-positive rate** — they were computed from mis-ordered specification versions. We withdrew all of them. That tier still returns no data and bills nothing, and it will stay that way until we can show the output holds up against publishers' own changelogs.\n\nThat failure is why the package engine is built the way it is:\n\n- `breaking` is reserved for a **removal or tightening provable from declared metadata** — an entry point gone from an `exports` map, a runtime floor raised, a release the publisher yanked.\n- **Additions can never be breaking.** There is a test asserting exactly that.\n- Where a version range can't be parsed, the engine **stays silent** rather than guessing.\n- Across `urllib3`'s 103 consecutive stable releases it emits **7 advisories, not thousands**. The conservatism is the feature.\n\n**Package advisories cover publisher-declared registry metadata, not behavioural changes.** If a maintainer silently changes what a function returns without touching `package.json`, we will not see it — read the changelog. We say so rather than implying coverage we don't have.\n\n**Mainnet x402 is configured and advertised but has never been exercised with real money.** It settled against two independent facilitators on testnet. We won't call it proven until a real settlement lands.\n\n---\n\n## Accuracy\n\nEvery response is Ed25519-signed; the public key is at [`/.well-known/jwks.json`](https://factgrid.co.uk/.well-known/jwks.json). Records are source-cited. API schema data derives from [APIs.guru](https://apis.guru) under CC-BY 4.0.\n\nAccuracy is best-effort, not guaranteed — see [/terms](https://factgrid.co.uk/terms). Found an error? `POST /api/v1/report-error` — free, no auth.\n",
  "bytes": 6647,
  "sha": "7ed163181cdf6cc692799c8b6286478cb9805ad9071a4df373ff28827c645bde",
  "repo_slug": "factgridai/factgrid",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_factgridai_factgrid_bc272fd5/readme"
}