FactGrid (Renamed to FactReason)

io.github.factgridaiPublished by GitHub account factgridaiv2.0.1Updated Oct 27, 2026

Renamed to FactReason. Now published as io.github.factreason/factreason — please use that entry.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingDeveloper ToolsData & Analytics

Overview

AI-generated overview

Remote MCP server (renamed FactReason) giving assistants reference data on npm/PyPI upgrade advisories, third-party API schemas and electronics component specs.

What you can do
  • Check npm and PyPI package upgrades for breaking metadata changes, with before/after evidence
  • Search and brief third-party API endpoints, schemas, auth schemes and deprecations
  • Discover APIs by capability and look up electronics component pinouts and voltages
  • Create an API key, generate a prepaid top-up checkout link, and subscribe to spec-change webhooks or polling
When to use it
Useful when an assistant edits dependency manifests, writes integration code against a third-party API, or needs component specifications, and you want cited, evidence-backed answers rather than guesses.
Requirements
Remote streamable HTTP endpoint; nothing to install. A Bearer API key is needed for most tools and can be created through the key tool without signup or card. Paid queries draw on prepaid credit or per-call payment; a free daily query allowance is documented.
Before you install
Most tools are metered and spend credit; the top-up tool creates a Stripe checkout that a human must complete. The API breaking-change tool is documented as offline and returns no data. Advisories cover only publisher-declared registry metadata, not behavioural changes, and accuracy is stated as best-effort. The registry entry says the server has been renamed and points to a different entry.

Installation

In SourceWeft

  1. Open FactGrid (Renamed to FactReason) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.factgridai%2Ffactgrid/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

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

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.0Authorization: Bearer <key>
json
{  "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:

json
{  "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.

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

Manifest: /.well-known/mcp.json

Get a key — no signup, no card:

bash
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.

Source: README.md at commit 8b6a386

Tools

11

factreason_package_upgrade_advisory

Package upgrade advisory

Compare two exact published npm or PyPI versions and return publisher-declared registry metadata changes, including yanks, exports, module format, runtime floors, peers, and licences, with before/after evidence. Set responseFormat="compact" for tokenizer-measured context savings; the backward-compatible default is "full". This is a read-only metered lookup; misses are never billed and every API key carries one-off trial credit. Use it for package metadata; use factreason_api_breaking_changes for a third-party HTTP API, and consult changelogs for behavioural changes.

ParameterstorequiredfromrequirednamerequiredapiKeyregistryrequiredresponseFormat

factreason_api_breaking_changes

API breaking changes

Compare two versions of a third-party API and return breaking changes, including removed endpoints, parameter type changes, removed request body fields, and migration guides. Use factreason_package_upgrade_advisory for npm or PyPI packages.

ParametersapiKeyservicerequiredtoVersionfromVersion

factreason_api_schema

API schema search

Search exact request and response schemas for third-party API endpoints. Pass service alone to list its indexed endpoints, add query to narrow by path or operation, or use query alone across services; returns matches or nearest services. Uses metered access and does not modify source data. Prefer factreason_integration_brief for one callable request.

ParametersqueryapiKeyservice

factreason_integration_brief

Integration brief

Compile one callable third-party API brief: base URL, auth scheme, required parameters and types, request body, and documented response codes. Service is required and endpoint optionally narrows the operation. Set responseFormat="compact" for tokenizer-measured context savings; the backward-compatible default returns the full brief plus compact form. Uses metered access. Prefer factreason_api_schema when exploring multiple endpoints.

ParametersapiKeyservicerequiredendpointresponseFormat

factreason_discover_api

Discover an API

Find third-party APIs for a capability when the provider is unknown. Supply a concise capability such as "sms" or "manage DNS"; returns ranked services, example endpoints, and a next step. Uses metered access. When the provider is already known, call factreason_integration_brief instead.

ParametersapiKeycapabilityrequired

factreason_create_key

Create an API key

Get a FactReason API key for yourself, instantly, with no human, no signup and no card. Returns a key carrying one-off trial credit that you can spend immediately on any tool. CALL THIS FIRST if you have no key, or as soon as any FactReason tool returns HTTP 402 Payment Required — then retry the original call with the key, passed as that tool's apiKey argument (or as an Authorization: Bearer header if your client can set one). The tool is free and is never metered. Supplying an email is optional and only affects whether trial credit is granted; a key is always issued either way.

Parametersemail

factreason_component_spec

Component specification

Look up electronics component pin assignments, voltage range, package, and alternatives. Pass exact partNumber for one component or query for a capability search; partNumber takes precedence if both are supplied. For exact lookups, set responseFormat="compact" for tokenizer-measured context savings; the backward-compatible default is "full". Uses metered access and returns matches or suggestions. Confirm critical values against the manufacturer datasheet.

ParametersqueryapiKeypartNumberresponseFormat

factreason_deprecation_scan

Deprecation scan

Scan publisher specifications for deprecated endpoints or parameters, sunset dates, and replacement operations. Omit filters for the catalogue-wide view, pass service to limit one API, and add endpoints to check selected paths. Uses metered access when findings exist. Use factreason_api_breaking_changes for broader version-to-version changes.

ParametersapiKeyserviceendpoints

factreason_auth_playbook

Auth and error playbook

Get publisher-declared authentication schemes, scopes, rate-limit headers, and error codes for one third-party API. Returns a structured playbook or nearest service suggestions, and marks undocumented details as unstated rather than guessing. Uses metered access. Prefer factreason_integration_brief when assembling a complete API call.

ParametersapiKeyservicerequired

factreason_subscribe_spec_changes

Watch a specification

Create a persistent specification watch for one service; a Bearer API key is required and each key may hold up to 50 watches. Without webhookUrl, read future events from the polling endpoint; with a public HTTP(S) URL, FactReason sends signed POST callbacks after later spec changes. Duplicate or unsafe webhook registrations are rejected. This does not ingest a specification immediately.

ParametersapiKeywebhookUrlserviceNamerequired

Version history

1
  1. v2.0.1LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts