100% free · instant API key

MCP Security API

Scan a Model Context Protocol server, a tools.json manifest, or a published npm / PyPI package over a single HTTPS request — and get back an auditable A–F Trust Score with every finding and its evidence as JSON. Completely free — grab a key and start scanning in seconds.

The API runs the same deterministic engine as the open-source MCP Trust Checker CLI: no LLM in the loop, no telemetry, and the same input always produces the same score. Use it to gate CI, power a marketplace listing, or check a server before you connect it to your data.

The API is completely free

Access is free — there is nothing to buy and no card to add. Calls are authenticated with an API key, and you get one instantly: fill in the short form and your key works right away. No waiting for approval.

  • No cost
  • No credit card
  • Commercial use allowed
  • Instant — no waiting

Quick start

Every call carries your API key. Get one free with the button above — it works immediately.

curl https://mcptrustchecker.com/api/v1/scan/npm/@modelcontextprotocol/server-filesystem \\ -H 'Authorization: Bearer YOUR_API_KEY'

Or scan a manifest you already have:

curl -X POST https://mcptrustchecker.com/api/v1/scan/manifest \ -H 'Content-Type: application/json' \ --data-binary @tools.json

Endpoints

Base URL https://mcptrustchecker.com/api/v1. Every response is application/json.

POST /scan/manifest

Scans a JSON body: a tools.json manifest, a raw tools/list result, or an MCP client config. Fully offline — nothing is fetched. Best for private or self-hosted servers.

FieldTypeNotes
bodyJSON objectRequired. Max 256 KB. Arrays and scalars are rejected.
curl -X POST https://mcptrustchecker.com/api/v1/scan/manifest \ -H 'Content-Type: application/json' \ -d '{"tools":[{"name":"read_file","description":"Read a file from disk."}]}'
GET /scan/npm/{package}

Fetches the published npm artifact, verifies it against the registry-declared hash, and analyses the exact source you would install — in memory, without installing or executing anything. Scoped names and pinned versions are supported.

PathExamples
{package}left-pad · @upstash/context7-mcp · [email protected]
curl https://mcptrustchecker.com/api/v1/scan/npm/@upstash/context7-mcp
GET /scan/pypi/{package}

The same deep scan for PyPI: resolves the sdist (or wheel), verifies its SHA-256, and reads the shipped Python source.

curl https://mcptrustchecker.com/api/v1/scan/pypi/mcp-server-fetch
GET /badge/{registry}/{package}

Returns a shields.io endpoint payload, so a live Trust Score badge can sit in any README.

![MCP Trust Score](https://img.shields.io/endpoint?url=https%3A%2F%2Fmcptrustchecker.com%2Fapi%2Fv1%2Fbadge%2Fnpm%2Fleft-pad)
GET /health

Liveness, engine version and current scanner load. Not rate limited.

The response

Every scan returns the same shape. Three independent axes answer three different questions.

Trust — A to FAny sign this server is malicious or negligent? Drives the 0–100 score.
Capability — minimal to criticalHow much damage if the model driving it is manipulated? A fact, not a verdict.
Coverage — live to emptyHow much the scan could actually inspect. A clean grade on a shallow scan is not an all-clear.
{ "tool": { "name": "mcptrustchecker", "version": "1.2.0", "methodologyVersion": "mcptrustchecker-1.0" }, "target": { "id": "@upstash/context7-mcp", "source": { "kind": "package" } }, "grade": "A", "score": { "score": 98, "grade": "A", "vector": [ … ], "categorySubtotals": { … } }, "capability": { "level": "minimal", "tags": [], "reasons": [] }, "coverage": { "level": "source", "caveats": [ "No tools were enumerated…" ] }, "findings": [ { "ruleId": "MTC-INJ-SEQ-1", "title": "Forced-sequencing directive (line jumping)", "severity": "medium", "confidence": "strong", "evidence": "You MUST call this", "location": { "kind": "tool", "name": "resolve-library-id", "field": "description" } } ], "toxicFlows": [ … ], "surfaceDigest": "d69f22401eb3…" }

Every point of the score is reconstructable. score.vector itemises each penalty — rule, severity, confidence multiplier and diminishing factor — so you can verify the grade rather than trust it.

Pricing, rate limits & fair use

The API is free and keys are issued instantly. A key exists so abuse can be stopped without punishing everyone else — not to upsell you.

ControlValue
PriceFree — all endpoints, including commercial use
API keyRequired — get one free, issued instantly
Rate limit60 requests/min per key
Request body256 KB maximum
Package scan cache15 minutes (repeat scans served instantly)
Timeout45s package scan · 10s manifest scan

Exceeding the rate limit returns 429 with a Retry-After header. When the scanner is saturated you may get 503 — retry shortly.

Not exposed by design. The hosted API will not spawn a process and will not connect to a caller-supplied URL — remote-code-execution and SSRF vectors respectively. To scan a live or private endpoint, run the open-source CLI locally: it does everything the API does, plus live stdio/HTTP scanning and OAuth sign-in, entirely on your machine.

Errors

StatusMeaning
400Invalid input — malformed JSON, or not a valid registry package name.
404Unknown endpoint.
413Body larger than 256 KB.
429Rate limited. See Retry-After.
503Scanner saturated — retry shortly.
504Scan exceeded its time budget.
{ "error": { "status": 400, "message": "package must be a registry package name, not a URL" } }

Prefer to run it yourself?

The scanner is MIT-licensed and runs fully offline. Everything the API does — and more — works locally.

npx mcptrustchecker # scan every MCP server you already have installed npx mcptrustchecker scan ./tools.json # a manifest, offline npx mcptrustchecker scan <package> --online # read the real published source npx mcptrustchecker scan ./tools.json --sarif # SARIF for GitHub code scanning

Frequently asked questions

Is there an API to check if an MCP server is safe?

Yes. The MCP Trust Checker API scans a Model Context Protocol server, a tools.json manifest, or an npm/PyPI package and returns an auditable A–F Trust Score as JSON, including every finding with its evidence. It is free to use; a free API key is issued on request.

How do I scan an MCP server with an API request?

POST your tools.json manifest to /api/v1/scan/manifest, or GET /api/v1/scan/npm/{package} to scan a published npm package. Both return the full JSON scan report with a Trust Score, Capability level and Coverage.

Is the MCP security API free?

Yes — the API is completely free. There is no cost and no credit card, including for commercial use. Access is authenticated with an API key, which is issued instantly from the API page: fill in a short form and it works right away. The key exists so abuse can be stopped without rate-limiting everyone else, not to charge you.

Does the MCP security API require an API key?

Yes. Requests are authenticated with a free API key. Get one from the API page — provide an email and a short description of your use case — and it works immediately, no approval wait. Send the key as "Authorization: Bearer " or "X-API-Key: ".

What does the MCP Trust Score measure?

The Trust Score is a 0–100 number with an A–F grade derived from a deterministic penalty vector over threat findings: prompt injection, tool poisoning, hidden Unicode payloads, cross-tool toxic flows, supply-chain risk and rug-pull drift. It is reported separately from Capability, which measures blast radius rather than malice.

Can the API scan a private or self-hosted MCP server?

The hosted API does not connect to caller-supplied URLs. To scan a private or self-hosted server, POST its tools.json manifest to the manifest endpoint, or run the open-source CLI locally with npx mcptrustchecker — the CLI runs fully offline on your own machine.

Request API access

Access is free and instant. Tell us what you are building, and your key is ready to use right away.