mcpField
F
FactGrid (Renamed to FactReason)

FactGrid (Renamed to FactReason)

Remote
factreason.comDeveloper Tools0Updated 11w ago

About FactGrid (Renamed to FactReason)

FactGrid is the former name of FactReason, an MCP server providing evidence-backed package advisories, API reference data, and electronics specifications. This entry directs users to the renamed project.

Key features

  1. 01npm and PyPI upgrade advisories
  2. 02Versioned API schemas and integration guidance
  3. 03API discovery and deprecation scans
  4. 04Electronics component specifications
  5. 05Signed findings with source evidence

Use cases

  1. 01Check package changes before an upgrade
  2. 02Find API schemas and authentication details
  3. 03Discover APIs and deprecated endpoints
  4. 04Retrieve electronics component specifications

MCP support

The former FactGrid endpoint exposed tools over Streamable HTTP for package and API reference data and component specifications. The project has been renamed to FactReason.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://factgrid.co.uk/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

11
ParameterTypeRequiredDescription
tostringYesExact target version, e.g. "5.0.0"
fromstringYesExact currently installed version, e.g. "4.1.2"
namestringYesExact package name, e.g. "chalk" or "urllib3"
apiKeystringNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
registryenumYesRegistry containing both package versionsnpm | pypi
responseFormatenumNoUse compact to remove repeated prose and fields while retaining evidence; full preserves the legacy response contractfull | compact

Details

From the project README

FactGrid

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.

MCP endpoint: https://factgrid.co.uk/mcp · Agent-readable docs · factgrid.co.uk


Stop an agent shipping a broken dependency upgrade

Your agent wants to bump chalk from 4.1.2 to 5.0.0. Before it edits package.json, it asks what breaks:

GET /api/v1/packages/npm/chalk/advisory?from=4.1.2&to=5.0.0
Authorization: Bearer <key>
{
  "found": true,
  "packageName": "chalk",
  "fromVersion": "4.1.2",
  "toVersion": "5.0.0",
  "breakingCount": 2,
  "advisories": [
    {
      "severity": "breaking",
      "changeType": "MODULE_FORMAT_CHANGED",
      "description": "chalk 5.0.0 changed module format from \"commonjs (undeclared)\" to \"module\". CommonJS require() of this package will now fail.",
      "evidenceField": "type",
      "evidenceBefore": null,
      "evidenceAfter": "module",
      "migrationHint": "Convert the call site to import(), or pin to the last CommonJS release."
    },
    {
      "severity": "breaking",
      "changeType": "RUNTIME_REQUIREMENT_RAISED",
      "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.",
      "evidenceField": "engines.node",
      "evidenceBefore": ">=10",
      "evidenceAfter": "^12.17.0 || ^14.13 || >=16.0.0",
      "migrationHint": "Confirm the deployment runtime satisfies the new floor before upgrading."
    }
  ]
}

Via MCP, the same question is one tool call:

{
  "name": "factgrid_package_upgrade_advisory",
  "arguments": { "registry": "npm", "name": "chalk", "from": "4.1.2", "to": "5.0.0" }
}

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.


Connect

Streamable HTTP. No install, no package to pull.

{
  "mcpServers": {
    "factgrid": {
      "type": "http",
      "url": "https://factgrid.co.uk/mcp"
    }
  }
}

Manifest: /.well-known/mcp.json

Get a key — no signup, no card:

curl -X POST https://factgrid.co.uk/api/v1/keys/create \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]"}'

Tools

ToolWhat it answers
factgrid_package_upgrade_advisoryWhat breaks between two published npm/PyPI versions
factgrid_api_schemaExact request/response shape of an API endpoint at a version
factgrid_integration_briefEverything needed to write one working call to an API
factgrid_discover_apiWhich of 1,097 services can do X
factgrid_deprecation_scanWhich endpoints are deprecated, sunset dates, replacements
factgrid_auth_playbookAuth schemes, scopes, rate-limit headers, error-code table
factgrid_component_specElectronics component pinouts, voltages, packages
factgrid_subscribe_spec_changesWebhook or polling callback when a spec changes
factgrid_create_topup_linkStripe checkout link when credit runs out
factgrid_api_breaking_changesCurrently offline — see What we don't claim below

Catalogue

Package releases indexed10,190 across 16 npm/PyPI packages
Upgrade advisories357, of which 84 breaking
API endpoint schemas18,348 across 1,097 services
Electronic components994

Live counts, free and unauthenticated: /api/v1/stats · /api/v1/packages/stats


Pricing

50 free queries per key per day. No card, no signup.

TierPrice
Component lookup$0.001
API schema$0.002
Semantic search$0.003
Deprecation scan$0.005
Auth playbook$0.005
Capability search$0.005
Integration brief$0.01
Package upgrade advisory$0.02

Pay from prepaid credit, or per call in USDC over x402 — no account and no human in the loop. Live pricing: /api/v1/pricing

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.


What we don't claim

This section exists because the alternative is worse.

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.

That failure is why the package engine is built the way it is:

  • 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.
  • Additions can never be breaking. There is a test asserting exactly that.
  • Where a version range can't be parsed, the engine stays silent rather than guessing.
  • Across urllib3's 103 consecutive stable releases it emits 7 advisories, not thousands. The conservatism is the feature.

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.

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.


Accuracy

Every response is Ed25519-signed; the public key is at /.well-known/jwks.json. Records are source-cited. API schema data derives from APIs.guru under CC-BY 4.0.

Accuracy is best-effort, not guaranteed — see /terms. Found an error? POST /api/v1/report-error — free, no auth.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.