AgentTrust — Pre-invocation Trust Check for AI Agent Endpoints
Check an AI agent or MCP server endpoint before you call it. Given the exact
endpoint URL, AgentTrust returns the reliability evidence it has already
collected, endpoint-ownership verification, and a machine-readable
trustDecision — without contacting the endpoint.
No AgentTrust account or API key required · Read-only · MCP and TypeScript SDK
AgentTrust is trust infrastructure for AI agents. It provides
reliability monitoring, endpoint verification, and pre-invocation trust
checks for MCP and A2A agents. An agent registers an identity, gets
health-checked once a day, optionally proves ownership of its
endpoint, and accumulates a deterministic reliability score from that
observed history. Any external AI agent or system can look up another
agent by its invocation URL and get back a machine-readable
trustDecision — a signal derived from AgentTrust's own observed and
verified data, for the caller to weigh, never a certification or
guarantee of safety — before deciding whether to interact with it.
Official MCP Registry identity: io.github.agenttrust-ai/agenttrust.
Quick start — no account needed
Every example below checks AgentTrust's own monitored test agent,
https://agenttrust-umber.vercel.app/api/test-agent; swap in the URL you're
about to call.
MCP
Add the public connector https://getagenttrust.com/api/mcp/public
(Streamable HTTP, no authentication; two read-only tools, check_agent_trust
and assess_agent).
In Claude Code:
Claude Desktop, Cursor and a plain curl call:
Connect an MCP client.
TypeScript SDK
Policies (assertTrusted), errors and options: SDK README
· npm. New to AgentTrust?
Start with First 5 minutes.
In the browser
Check the test agent
on getagenttrust.com.
First 5 minutes
No account or API key. Node.js 18 or later.
1. Install. assessAgent needs SDK 0.2.0 or later.
2. Check an endpoint. This checks AgentTrust's own monitored test agent,
so it returns a real result. The check is read-only, and AgentTrust never
contacts the endpoint you ask about.
3. Read the answer. confidence, reasonCodes and limitations say why.
Which call should I use?
All three are anonymous and read-only, and never contact the endpoint (over MCP: assess_agent and check_agent_trust). They report what AgentTrust has observed; they don't certify an endpoint's security.
Unknown endpoints are an answer, not an error
AgentTrust only has evidence for endpoints it monitors, so your first check of a real URL may come back unknown. That is an answer, not an API failure — the call succeeds:
assessAgent returns matched: false, decision: "insufficient_evidence", confidence: "none", and reasonCodes including "UNKNOWN_ENDPOINT".
checkAgentTrust returns { matched: false }, sometimes with an observation status when AgentTrust has queued the URL for a lookup in the official MCP Registry.
assertTrusted throws NotTrustedError ("AgentTrust has no data for this endpoint") unless you pass allowUnknown: true.
Real failures — RATE_LIMITED, TIMEOUT, NETWORK_ERROR and the rest — throw an AgentTrustError instead.
Handle an unknown endpoint as not trusted: don't map insufficient_evidence to "allow", keep allowUnknown: false (the default) unless you have chosen otherwise on purpose, and ask a human or run your own checks before calling an endpoint nobody has observed.
Next steps
- Gate a real connection:
examples/check-before-connect.ts
puts assertTrusted in front of an MCP client connection.
- Tune the gate:
minConfidence, requireVerified and minReliabilityScore
in the assertTrusted policy — see the SDK README.
- Running an agent yourself? Register it so other agents can check it — that
needs an account and an API key: Getting started.
Public checks vs. agent management
To register an agent: sign up, create a key under Dashboard → API keys, then
follow Getting started (REST).
Documentation
You don't need this repository to use AgentTrust:
- /docs — full REST, MCP and SDK reference.
- /llms.txt — the same reference as one
plain-text file, for an LLM's context.
Developing this project
This is a Next.js (App Router) + Drizzle + Supabase app, deployed on
Vercel.
Open http://localhost:3000. You'll need a
.env.local — see .env.example for the required variables (Supabase
credentials, database connection strings, and the server-only secrets
described inline).
Useful scripts: