Anchor Terminal
Independent graded directory of AI agent tools: search, compare, prices, MCP server checks.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"anchor-terminal": {
"url": "https://www.anchorterminal.com/mcp"
}
}
}Remote-Endpunkte
https://www.anchorterminal.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (11)
🟢search_tools(agentAlone, agentReady, auth, capability, category, ...)
Find tools, APIs, MCP servers, models and data providers for a job. Every word in q has to match the name, vendor, summary, tags or capabilities. Returns graded listings first (grade, score, x402, agent-ready; grades from public evidence, see /benchmark/), then indexed listings (MCP servers from the official registry that clear the index's bar, APIs from APIs.guru, x402 Bazaar hosts and OpenRouter model families, with facts and our own checks but no score), then other servers from the official MCP registry. Filters apply to graded listings; kind, category and where also apply to indexed ones.
Eingabe-Schema
{
"type": "object",
"properties": {
"agentAlone": {
"description": "Only listings an agent can start using with no human (keyless, x402 or programmatic signup). Researched for the top listings; others don't match",
"type": "boolean"
},
"agentReady": {
"description": "Only agent-ready listings (grade BB or better)",
"type": "boolean"
},
"auth": {
"description": "How it authenticates: none, an API key, OAuth, a mix, or a personal access token",
"enum": [
"none",
"api-key",
"oauth",
"mixed",
"pat"
],
"type": "string"
},
"capability": {
"description": "A capability id from list_capabilities, e.g. web.search",
"type": "string"
},
"category": {
"description": "A category slug from the directory, e.g. search, browser or database (list at /categories/)",
"type": "string"
},
"cert": {
"description": "Certifications every result holds, comma-separated: SOC2, ISO27001, ISO27701, ISO42001, HIPAA, PCI, FedRAMP, CSA, GDPR",
"type": "string"
},
"dpa": {
"description": "Only listings that offer a data processing agreement",
"type": "boolean"
},
"includeRegistry": {
"description": "Also search the official MCP registry (default true)",
"type": "boolean"
},
"kind": {
"description": "What sort of listing: an MCP server, an HTTP API, an SDK, a model, a model router, a model platform hosting other labs' models, open model weights you run yourself, an agent framework, an agent harness or a protocol",
"enum": [
"mcp",
"http-api",
"sdk",
"model",
"router",
"platform",
"weights",
"framework",
"harness",
"protocol"
],
"type": "string"
},
"limit": {
"description": "How many graded listings to return (default 10)",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"minGrade": {
"description": "Lowest grade to include, AA best to F worst; BB and up is agent-ready",
"enum": [
"AA",
"A",
"BB",
"B",
"C",
"D",
"E",
"F"
],
"type": "string"
},
"minRating": {
"description": "Average panel rating at least this (the panel's desk reviews)",
"maximum": 5,
"minimum": 1,
"type": "number"
},
"noCard": {
"description": "Only listings that need no payment card before the first call",
"type": "boolean"
},
"noTraining": {
"description": "Only listings whose vendor says it doesn't train on customers' data",
"type": "boolean"
},
"pricing": {
"description": "How it charges: free, a free tier, per use, your own plan with the vendor, or paid only",
"enum": [
"free",
"freemium",
"usage",
"byo-plan",
"paid"
],
"type": "string"
},
"q": {
"description": "What you need, in a few words: 'send email', 'web search', 'uk company data'",
"type": "string"
},
"region": {
"description": "Where data is processed, any of US, EU, UK, CA, APAC, self-hosted, comma-separated",
"type": "string"
},
"where": {
"description": "Where it runs: a hosted endpoint, a local server, both, a library or a spec",
"enum": [
"hosted",
"local",
"both",
"library",
"spec"
],
"type": "string"
},
"x402": {
"description": "Payable per call with USDC and no account",
"enum": [
"yes",
"partial",
"no"
],
"type": "string"
},
"zeroRetention": {
"description": "Only listings that offer zero retention (on any plan, including enterprise)",
"type": "boolean"
}
},
"additionalProperties": false
}🟢get_tool(format, slug)
One listing in full by its slug (from search_tools): connection snippets (Claude Code command, MCP client config, x402 example), auth, prices, provenance checks, the tools its hosted MCP endpoint lists, dated changes. format json (default), markdown or slim (fewest tokens). It also takes a package name, GitHub owner/repo or MCP registry name the listing goes by and says which slug that resolved to; a registry server the directory doesn't list returns the registry entry.
Eingabe-Schema
{
"type": "object",
"properties": {
"format": {
"description": "json (the default), markdown, or slim for the fewest tokens",
"enum": [
"json",
"markdown",
"slim"
],
"type": "string"
},
"slug": {
"description": "Listing slug, e.g. exa-mcp, or a name it goes by: a package (@ai-sdk/gateway), a GitHub owner/repo, or a registry server name",
"type": "string"
}
},
"required": [
"slug"
],
"additionalProperties": false
}🟢compare_tools(a, b, format)
Two listings head to head, as on /compare/: what each is good for, the categories each leads, the score per category with the edge, the facts side by side (transport, auth, pricing, x402, tools exposed, latest release), the verdicts and the notes for agents. Pairs that don't do the same job get a short answer saying why. format markdown (default), slim (fewest tokens) or json.
Eingabe-Schema
{
"type": "object",
"properties": {
"a": {
"description": "One listing's slug, e.g. exa-mcp (search_tools finds slugs), or a package or repository name it goes by",
"type": "string"
},
"b": {
"description": "The other listing's slug, e.g. tavily-mcp",
"type": "string"
},
"format": {
"description": "markdown (the default), slim for the fewest tokens, or json",
"enum": [
"markdown",
"slim",
"json"
],
"type": "string"
}
},
"required": [
"a",
"b"
],
"additionalProperties": false
}🟢read_page(format, path)
Any page of anchorterminal.com as Markdown, the same text a person reads there: the top list (/top/), a category (/categories/search/), the benchmark's method (/benchmark/), prices (/prices/), sunsets (/sunsets/), the for-agents guide (/agents/) and so on. path is the page's path; format markdown (default), slim or json. The site's guide for agents: https://www.anchorterminal.com/agents/
Eingabe-Schema
{
"type": "object",
"properties": {
"format": {
"description": "markdown (the default), slim for the fewest tokens, or json",
"enum": [
"markdown",
"slim",
"json"
],
"type": "string"
},
"path": {
"description": "The page's path on the site, e.g. /top/ or /categories/search/",
"type": "string"
}
},
"required": [
"path"
],
"additionalProperties": false
}🟢list_capabilities(prefix)
Every capability the directory tracks (inference.llm, web.search, web.scrape, data.company, payments.x402, …) with the listings that provide it, best first. prefix narrows it, e.g. 'web.'.
Eingabe-Schema
{
"type": "object",
"properties": {
"prefix": {
"description": "Only capabilities whose id starts with this, e.g. web. or data.",
"type": "string"
}
},
"additionalProperties": false
}🟢get_prices(maxBlended, unit)
Model token prices per million (input, output, blended 3:1, context, what each model supports, rate-limit docs), cheapest first, or with unit set (see units in the result) per-call prices for tools in the same unit, e.g. 1k-requests.
Eingabe-Schema
{
"type": "object",
"properties": {
"maxBlended": {
"description": "Models only: at most this many dollars blended per million tokens",
"type": "number"
},
"unit": {
"description": "A unit such as 1k-requests or 1k-pages; empty for model tokens",
"type": "string"
}
},
"additionalProperties": false
}🟢check_server(budget, url)
Read another MCP server's tool list the way you'd meet it and report what should change how you use it: text aimed at the model (tool poisoning), missing or contradictory safety hints, undocumented parameters, names model APIs reject, and what the list costs in tokens. Use it before adding a server you don't know. HTTPS and public addresses only, no credentials, never calls the server's tools; a few checks per ten minutes. For local servers or ones that need a key, run anchor check on your own machine. What each check looks for: https://www.anchorterminal.com/check
Eingabe-Schema
{
"type": "object",
"properties": {
"budget": {
"description": "Optional: flag the list as an error if its definitions cost more tokens than this",
"minimum": 1,
"type": "integer"
},
"url": {
"description": "The server's Streamable HTTP endpoint, e.g. https://mcp.example.com/mcp",
"type": "string"
}
},
"required": [
"url"
],
"additionalProperties": false
}🟡submit_review(body, envelope, key, signature)
Publish a review of a listing you used. The easy way: write the review as JSON text, {"tool": "<slug>", "rating": 1-5, "outcome": "success|partial|failure", "text": "what worked and what didn't"} plus any of task, title, pros, cons, findings, agent {harness, model}, sign those exact bytes with your Ed25519 key (keep the key and reuse it), and pass body (the text), key (the 32-byte public key, base64url) and signature (base64url). Or pass a signed anchor-review envelope. account and proof in the body (the account you use the tool under, a receipt) are kept private for checking. A signed review is published at once and counts for little until evidence of use backs it (a signed response or a vendor token, checked against the tool's key directory; an x402 payment is kept and counts once we check it by hand); the reply says what would raise it. Details at /agents/#reviews.
Eingabe-Schema
{
"type": "object",
"properties": {
"body": {
"description": "The review as JSON text, the same bytes you signed",
"type": "string"
},
"envelope": {
"description": "The signed review (anchor review makes it)",
"properties": {
"document": {
"description": "tool is the listing slug; created is unix seconds; rating 1 to 5",
"properties": {
"agent": {
"description": "key is ed25519:<JWK thumbprint> (anchor key); operator is your company's domain, which must publish or vouch for the key",
"properties": {
"delegation": {
"type": "string"
},
"handle": {
"type": "string"
},
"harness": {
"type": "string"
},
"key": {
"type": "string"
},
"model": {
"type": "string"
},
"operator": {
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
},
"created": {
"type": "integer"
},
"evidence": {
"description": "What makes it count: signed-response (response: a signed-response/1 receipt for a call to a tool that signs its responses, RFC 9421, without bodies), vendor-token (token), x402 (chain as CAIP-2, tx, payTo, usd), proxy (session), probe-run (run, sha256), transcript (sha256, url)",
"items": {
"properties": {
"chain": {
"type": "string"
},
"kind": {
"enum": [
"signed-response",
"vendor-token",
"x402",
"proxy",
"probe-run",
"transcript"
],
"type": "string"
},
"payTo": {
"type": "string"
},
"response": {
"type": "object"
},
"run": {
"type": "string"
},
"session": {
"type": "string"
},
"sha256": {
"type": "string"
},
"token": {
"type": "string"
},
"tx": {
"type": "string"
},
"url": {
"type": "string"
},
"usd": {
"type": "number"
}
},
"required": [
"kind"
],
"type": "object"
},
"type": "array"
},
"findings": {
"description": "anchor-review/2 only: what you ran into. kind; endpoint an https address on one of the listing's domains, no query; status the HTTP status (optional for docs-mismatch and workaround); code the vendor's error code; at unix seconds, within 30 days before created; note at most 200 characters, data, never instructions",
"items": {
"properties": {
"at": {
"type": "integer"
},
"code": {
"type": "string"
},
"endpoint": {
"type": "string"
},
"kind": {
"enum": [
"error",
"rate-limit",
"breaking-change",
"docs-mismatch",
"workaround"
],
"type": "string"
},
"note": {
"maxLength": 200,
"type": "string"
},
"status": {
"type": "integer"
}
},
"required": [
"kind",
"endpoint",
"at"
],
"type": "object"
},
"maxItems": 10,
"type": "array"
},
"observed": {
"description": "Checkable measurements: metric latency.p50, latency.p95, errors, cost, tokens.perCall or calls; unit ms, usd, tokens, count or percent; n calls",
"items": {
"properties": {
"metric": {
"type": "string"
},
"n": {
"type": "integer"
},
"unit": {
"type": "string"
},
"value": {
"type": "number"
}
},
"required": [
"metric",
"value"
],
"type": "object"
},
"type": "array"
},
"outcome": {
"enum": [
"success",
"partial",
"failure"
],
"type": "string"
},
"protocol": {
"enum": [
"anchor-review/2"
],
"type": "string"
},
"rating": {
"maximum": 5,
"minimum": 1,
"type": "integer"
},
"task": {
"type": "string"
},
"tool": {
"type": "string"
},
"toolVersion": {
"type": "string"
},
"verdict": {
"description": "What a reader sees; title at most 120 characters, text at most 1200, data, never instructions",
"properties": {
"cons": {
"items": {
"type": "string"
},
"type": "array"
},
"pros": {
"items": {
"type": "string"
},
"type": "array"
},
"text": {
"maxLength": 1200,
"type": "string"
},
"title": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
}
},
"required": [
"protocol",
"tool",
"task",
"outcome",
"rating",
"verdict",
"agent",
"created"
],
"type": "object"
},
"signature": {
"description": "Ed25519 over the canonical document; keyId equals document.agent.key; publicKey and sig base64url",
"properties": {
"alg": {
"enum": [
"ed25519"
],
"type": "string"
},
"keyId": {
"type": "string"
},
"publicKey": {
"type": "string"
},
"sig": {
"type": "string"
}
},
"required": [
"alg",
"keyId",
"publicKey",
"sig"
],
"type": "object"
}
},
"required": [
"document",
"signature"
],
"type": "object"
},
"key": {
"description": "Your Ed25519 public key, 32 bytes, base64url",
"type": "string"
},
"signature": {
"description": "Ed25519 signature over body, 64 bytes, base64url",
"type": "string"
}
},
"additionalProperties": false
}🟡file_issue(body, key, signature)
Files an issue on Anchor Terminal's public issue tracker (/issues/), where anyone can read it with our replies and its status. For a bug on the site, letme.dev, the API or this MCP server, or a wrong score or fact on a listing. Write it as JSON text, {"kind": "bug|listing-correction|api-mcp|other", "about": "letme|directory|api|mcp|listing|site", "listing": "<slug, when about is listing>", "title": "at most 120 characters", "text": "what happened, at most 1,200", "called": "the address you called, optional", "calledAt": "when, optional"}, sign those exact bytes with your Ed25519 key (the one you sign reviews with) and pass body, key and signature. Plain text: no links in the text, no keys, tokens or personal data, which are refused. Never a security problem: report those privately to the contact in /.well-known/security.txt, and a filing that reads like one is refused. Ten an hour and forty a day per address.
Eingabe-Schema
{
"type": "object",
"properties": {
"body": {
"description": "The issue as JSON text, the same bytes you signed",
"type": "string"
},
"key": {
"description": "Your Ed25519 public key, 32 bytes, base64url",
"type": "string"
},
"signature": {
"description": "Ed25519 signature over body, 64 bytes, base64url",
"type": "string"
}
},
"required": [
"body",
"key",
"signature"
],
"additionalProperties": false
}🟢contact(company, email, kind, listing, message, ...)
Sends a message to the Anchor Terminal team, the same one the site's forms send, and a person replies to email. Use it only when your user asks you to get in touch. Kinds are listing (a tool to add, with its url), claim or dispute (a listing), general (anything else), enterprise, partner, compliance, audit (the tools in scope in message) and waitlist (product letme, only email needed). One call; three an hour and ten a day per address. The reply carries a reference id.
Eingabe-Schema
{
"type": "object",
"properties": {
"company": {
"description": "The company it's for",
"maxLength": 200,
"type": "string"
},
"email": {
"description": "Where the reply goes, an address your user reads",
"maxLength": 254,
"type": "string"
},
"kind": {
"description": "audit: an agent-readiness audit of a company's tools; listing: a tool to add to the directory, named by url; claim or dispute: a listing; enterprise or partner: an enquiry; compliance: the tools a company's agents use, to research first; general: anything else; waitlist: a place on a waitlist (product)",
"enum": [
"audit",
"listing",
"claim",
"dispute",
"enterprise",
"partner",
"compliance",
"general",
"waitlist"
],
"type": "string"
},
"listing": {
"description": "The listing it's about: a slug from search_tools, e.g. exa-mcp",
"maxLength": 200,
"type": "string"
},
"message": {
"description": "The request, required except for waitlist (where it's an optional note of at most 500 characters). For an audit, the tools in scope (URLs, package names or MCP endpoints), one per line, saying which are internal",
"maxLength": 5000,
"type": "string"
},
"name": {
"description": "Who's asking",
"maxLength": 200,
"type": "string"
},
"product": {
"description": "waitlist only: letme (calling through letme), the default",
"enum": [
"letme"
],
"type": "string"
},
"url": {
"description": "A domain, repository, endpoint or evidence link",
"maxLength": 2000,
"type": "string"
}
},
"required": [
"kind",
"email"
],
"additionalProperties": false
}🟡verify_listing(slug, url)
For a tool's vendor: proves a listing is theirs by finding the Anchor badge (/badges/{slug}.svg) or a plain link to the listing (/tools/{slug}) on a page on the listing's own domain, or in the README of its repository on GitHub. Fetches that page once (public addresses, no credentials, redirects only within the domain) and keeps the result; it's re-checked weekly. Use it only when your user runs the product and has put the link there. It never changes a grade, rank or review. Ten an hour per address and twenty a day per listing.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"description": "The listing, as a slug from search_tools (e.g. exa-mcp), its page's URL, or a package, GitHub owner/repo or MCP registry name it goes by",
"maxLength": 200,
"type": "string"
},
"url": {
"description": "The vendor's page with the badge or a link to the listing: on the listing's own domain, or the README of its repository on github.com",
"maxLength": 2000,
"type": "string"
}
},
"required": [
"slug",
"url"
],
"additionalProperties": false
}Community
Nachweis