Koskamo

agent-tools MCP

An open directory and MCP discovery server that allows agents to search for x402 paid services, MCP servers, and A2A agents. It provides tools for intent-based search, safety scanning, and retrieving service details without requiring signup or API keys for basic discovery.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

agent-tools MCP logo, by AgentTools-CloudCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by AgentTools-Cloud
MCP endpoint (Streamable HTTP)
https://agent-tools.cloud/mcp-discovery/
Vendor documentation

What its tools do

14 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

14 of 14 have a description · 14 of 14 declare behavior hints · 12 of 12 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for MCP servers by intent
  • Discover x402 paid services
  • Scan MCP servers for safety risks
  • Get details on specific agents or services

Source and maintenance

Community listingRegistry 0.4.0
Maintenance checked

Protocol and capabilities

Server
agent-tools 1.27.1
MCP protocol negotiated in check
2025-11-25
Tools
14 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Directory of x402-paid + MCP services on agent-tools.cloud. Built for AGENT consumers — humans use the website, agents use these tools. Typical flow: 1. `ask_services(intent=...)` for an LLM-ranked recommendation, or `search(intent=..., has_mcp=True)` to manually inspect candidates. 2. Inspect `match_reason` + `confidence` + `tx_30d` on each item to judge quality. Prefer `popular+healthy` items. 3. `get(slug)` to fetch the service card: payment, call, quality, resource samples, and ready-to-paste MCP/x402 call hints. 4. Use `list_categories` to discover the taxonomy and `stats` for directory size + health. 5. `scan_mcp_safety(endpoint_url)` screens an MCP server for malware / prompt-injection lures: returns our latest stored verdict if it is already indexed, otherwise probes + scans it live and adds it to the directory. 6. `prepare_paid_verification` -> sign `typed_data` in your wallet -> `execute_paid_verification`: pay a service once and record the result. Needs an API key (POST /api/v1/keys).

Tools

14 advertised

search
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find x402 / MCP services matching an intent or filter set. Two usage modes (agents pick whichever fits): A. Natural-language: `search(intent="fetch tweets for @user")` B. Pure browse: `search(has_mcp=True, category="defi", top_k=10)` At least one of `intent`, `category`, `chain`, `has_mcp`, `min_confidence` must be supplied — otherwise the call is rejected (we won't dump 2300+ rows). Results are ranked by: (health=ok AND tx_30d>0) → health=ok → has-quality-signal → confidence → tx_30d → recency. So the highest-quality real-traffic services appear first. Each item includes (when available): - confidence : 0.0–1.0 x402scan quality score. - tx_30d : 30-day x402 payment count (proxy for real usage). - match_snippet : FTS snippet showing where `intent` hit ([[token]]). - match_reason : list[str] of human-readable ranking signals. - mcp_url : populated when the service exposes an MCP endpoint (you can call it directly via streamable-http). Agents should prefer items with non-null confidence and tx_30d > 0 unless the user explicitly wants experimental endpoints. Args: intent: What the agent wants to do (English or Chinese). Optional when at least one structured filter is set. Synonym expansion covers twitter↔X↔推特, whale↔巨鲸, price↔价格 etc. top_k: Max services to return (default 5, hard cap 25). max_price_usd: Upper bound on per-call price in USD. category: Filter (see `list_categories`). chain: "base", "polygon", "solana", "arbitrum", ... min_confidence: Minimum confidence (0.0–1.0). 0.8+ keeps only services x402scan rates as high-quality. has_mcp: When true, return only services with a callable MCP endpoint. Use this when the agent wants to chain another MCP server rather than perform raw HTTP+x402.

search input schema
{
  "type": "object",
  "title": "searchArguments",
  "properties": {
    "chain": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chain",
      "default": null,
      "description": "\"base\", \"polygon\", \"solana\", \"arbitrum\", ..."
    },
    "top_k": {
      "type": "integer",
      "title": "Top K",
      "default": 5,
      "description": "Max services to return (default 5, hard cap 25)."
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Intent",
      "default": null,
      "description": "What the agent wants to do (English or Chinese). Optional when at least one structured filter is set. Synonym expansion covers twitter↔X↔推特, whale↔巨鲸, price↔价格 etc."
    },
    "has_mcp": {
      "type": "boolean",
      "title": "Has Mcp",
      "default": false,
      "description": "When true, return only services with a callable MCP endpoint. Use this when the agent wants to chain another MCP server rather than perform raw HTTP+x402."
    },
    "category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Category",
      "default": null,
      "description": "Filter (see `list_categories`)."
    },
    "max_price_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Price Usd",
      "default": null,
      "description": "Upper bound on per-call price in USD."
    },
    "min_confidence": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Min Confidence",
      "default": null,
      "description": "Minimum confidence (0.0–1.0). 0.8+ keeps only services x402scan rates as high-quality."
    }
  }
}
search output schema
{
  "type": "object",
  "title": "searchDictOutput",
  "additionalProperties": true
}
search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
ask_services
Advertised by the server during the last successful anonymous check.
Advertised read-only

Ask for the best x402/MCP services for an agent intent. This is the high-level discovery tool: it retrieves candidates from the directory, asks the configured backend LLM to rank only those candidates, and returns service cards for the selected recommendations. If the LLM is unavailable, it falls back to the directory ranker. Args: intent: Natural-language job the agent wants to accomplish. top_k: Max recommendations to return (1-10). max_price_usd: Optional per-call budget cap. category: Optional directory category filter. chain: Optional payment network filter, e.g. "base" or "solana". require_healthy: When true, only consider services marked health=ok. min_confidence: Optional x402scan quality floor (0.0-1.0). has_mcp: When true, only consider services with MCP endpoints. use_llm: Set false for deterministic retrieval-only fallback.

ask_services input schema
{
  "type": "object",
  "title": "ask_servicesArguments",
  "required": [
    "intent"
  ],
  "properties": {
    "chain": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chain",
      "default": null,
      "description": "Optional payment network filter, e.g. \"base\" or \"solana\"."
    },
    "top_k": {
      "type": "integer",
      "title": "Top K",
      "default": 5,
      "description": "Max recommendations to return (1-10)."
    },
    "intent": {
      "type": "string",
      "title": "Intent",
      "description": "Natural-language job the agent wants to accomplish."
    },
    "has_mcp": {
      "type": "boolean",
      "title": "Has Mcp",
      "default": false,
      "description": "When true, only consider services with MCP endpoints."
    },
    "use_llm": {
      "type": "boolean",
      "title": "Use Llm",
      "default": true,
      "description": "Set false for deterministic retrieval-only fallback."
    },
    "category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Category",
      "default": null,
      "description": "Optional directory category filter."
    },
    "max_price_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Price Usd",
      "default": null,
      "description": "Optional per-call budget cap."
    },
    "min_confidence": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Min Confidence",
      "default": null,
      "description": "Optional x402scan quality floor (0.0-1.0)."
    },
    "require_healthy": {
      "type": "boolean",
      "title": "Require Healthy",
      "default": true,
      "description": "When true, only consider services marked health=ok."
    }
  }
}
ask_services output schema
{
  "type": "object",
  "title": "ask_servicesDictOutput",
  "additionalProperties": true
}
ask_services annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get full details + ready-to-paste call template for a service. Returns the service card with payment, call, quality, resource samples, and ready-to-use MCP/x402 call hints. Use this after `search` or `ask_services` before paying/calling an external service. Args: slug: Service slug as returned by `search` items.

get input schema
{
  "type": "object",
  "title": "getArguments",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "title": "Slug",
      "description": "Service slug as returned by `search` items."
    }
  }
}
get output schema
{
  "type": "object",
  "title": "getDictOutput",
  "additionalProperties": true
}
get annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all available service categories in the directory.

list_categories input schema
{
  "type": "object",
  "title": "list_categoriesArguments",
  "properties": {}
}
list_categories output schema
{
  "type": "object",
  "title": "list_categoriesDictOutput",
  "additionalProperties": true
}
list_categories annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
stats
Advertised by the server during the last successful anonymous check.
Advertised read-only

High-level stats about the directory: total services, healthy count, sources.

stats input schema
{
  "type": "object",
  "title": "statsArguments",
  "properties": {}
}
stats output schema
{
  "type": "object",
  "title": "statsDictOutput",
  "additionalProperties": true
}
stats annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
search_mcp_servers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find MCP servers in the directory. Searches the standalone MCP directory (PulseMCP / official MCP registry import) unioned with x402 services that also expose an MCP endpoint. Returns normalised entries with a ready-to-use streamable-http `call_hint.mcp.url`. Args: intent: Natural-language description of the tool/capability needed. top_k: Max servers to return (1-20). chain: Optional payment-network filter for paid MCP servers. require_healthy: When true, only return servers marked health=ok.

search_mcp_servers input schema
{
  "type": "object",
  "title": "search_mcp_serversArguments",
  "properties": {
    "chain": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chain",
      "default": null,
      "description": "Optional payment-network filter for paid MCP servers."
    },
    "top_k": {
      "type": "integer",
      "title": "Top K",
      "default": 5,
      "description": "Max servers to return (1-20)."
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Intent",
      "default": null,
      "description": "Natural-language description of the tool/capability needed."
    },
    "require_healthy": {
      "type": "boolean",
      "title": "Require Healthy",
      "default": false,
      "description": "When true, only return servers marked health=ok."
    }
  }
}
search_mcp_servers output schema
{
  "type": "object",
  "title": "search_mcp_serversDictOutput",
  "additionalProperties": true
}
search_mcp_servers annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_mcp_server
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the full card for one MCP server by slug. Args: slug: MCP server slug as returned by `search_mcp_servers` items.

get_mcp_server input schema
{
  "type": "object",
  "title": "get_mcp_serverArguments",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "title": "Slug",
      "description": "MCP server slug as returned by `search_mcp_servers` items."
    }
  }
}
get_mcp_server output schema
{
  "type": "object",
  "title": "get_mcp_serverDictOutput",
  "additionalProperties": true
}
get_mcp_server annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
search_a2a_agents
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find A2A agents you can delegate a task to. Args: intent: Natural-language description of the task to delegate. top_k: Max agents to return (1-20). x402_only: When true, only return agents that advertise x402 payment.

search_a2a_agents input schema
{
  "type": "object",
  "title": "search_a2a_agentsArguments",
  "properties": {
    "top_k": {
      "type": "integer",
      "title": "Top K",
      "default": 5,
      "description": "Max agents to return (1-20)."
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Intent",
      "default": null,
      "description": "Natural-language description of the task to delegate."
    },
    "x402_only": {
      "type": "boolean",
      "title": "X402 Only",
      "default": false,
      "description": "When true, only return agents that advertise x402 payment."
    }
  }
}
search_a2a_agents output schema
{
  "type": "object",
  "title": "search_a2a_agentsDictOutput",
  "additionalProperties": true
}
search_a2a_agents annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
search_resources
Advertised by the server during the last successful anonymous check.
Advertised read-only

Unified search across x402 services, MCP servers and A2A agents. Args: intent: Natural-language query. protocol: Optional filter: "x402", "mcp" or "a2a". top_k: Max resources to return (1-50).

search_resources input schema
{
  "type": "object",
  "title": "search_resourcesArguments",
  "properties": {
    "top_k": {
      "type": "integer",
      "title": "Top K",
      "default": 10,
      "description": "Max resources to return (1-50)."
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Intent",
      "default": null,
      "description": "Natural-language query."
    },
    "protocol": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Protocol",
      "default": null,
      "description": "Optional filter: \"x402\", \"mcp\" or \"a2a\"."
    }
  }
}
search_resources output schema
{
  "type": "object",
  "title": "search_resourcesDictOutput",
  "additionalProperties": true
}
search_resources annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
register
Advertised by the server during the last successful anonymous check.
Open-world

Self-register an x402 / MCP service in the agent-tools directory. Service owners and agents may submit new services here. Submissions are auto-reviewed instantly by x402 verification (no human gate): if the URL proves x402 payment support it is listed immediately and shows up in `search`; otherwise it is rejected or retried automatically. Listing is FREE. Dedup: if a service with the same canonical origin (scheme://host) already exists in the directory we return its slug instead of creating a duplicate submission. Same goes for a still-pending submission with the same origin. Rate limit: at most 5 pending submissions per client IP per 24h. Hits beyond that get `{error: rate_limited}` — try again later or email contact@agent-tools.cloud for bulk imports. Args: url: Public HTTPS URL of the service (the x402-payable endpoint or its homepage). Required. name: Human-friendly name. Defaults to the URL hostname. description: One-paragraph description (max ~2000 chars). mcp_url: If the service speaks MCP, its streamable-http endpoint. category: Free-form (e.g. "defi", "search", "social"). Use `list_categories` to align with existing taxonomy. chains: Networks the service accepts payment on (e.g. ["base", "solana"]). price_min_usdc: Lower bound of per-call price in USDC. price_max_usdc: Upper bound of per-call price in USDC. contact: Optional email / handle the directory team can reach you on for clarifications.

register input schema
{
  "type": "object",
  "title": "registerArguments",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "title": "Url",
      "description": "Public HTTPS URL of the service (the x402-payable endpoint or its homepage). Required."
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name",
      "default": null,
      "description": "Human-friendly name. Defaults to the URL hostname."
    },
    "chains": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Chains",
      "default": null,
      "description": "Networks the service accepts payment on (e.g. [\"base\", \"solana\"])."
    },
    "contact": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Contact",
      "default": null,
      "description": "Optional email / handle the directory team can reach you on for clarifications."
    },
    "mcp_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Mcp Url",
      "default": null,
      "description": "If the service speaks MCP, its streamable-http endpoint."
    },
    "category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Category",
      "default": null,
      "description": "Free-form (e.g. \"defi\", \"search\", \"social\"). Use `list_categories` to align with existing taxonomy."
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Description",
      "default": null,
      "description": "One-paragraph description (max ~2000 chars)."
    },
    "price_max_usdc": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Max Usdc",
      "default": null,
      "description": "Upper bound of per-call price in USDC."
    },
    "price_min_usdc": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Min Usdc",
      "default": null,
      "description": "Lower bound of per-call price in USDC."
    }
  }
}
register output schema
{
  "type": "object",
  "title": "registerDictOutput",
  "additionalProperties": true
}
register annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
scan_mcp_safety
Advertised by the server during the last successful anonymous check.
Open-world

Check an MCP server for malware / prompt-injection lures by its endpoint URL. Give the server's streamable-http endpoint URL. Two paths: * **Already in the agent-tools directory** → returns our LATEST stored rule verdict. Every indexed server is re-scanned hourly, so you get a consistent, continuously-refreshed answer without re-probing. * **Not yet indexed** → we probe the endpoint live, statically scan its advertised tools + metadata, and return the fresh verdict. It is ADDED to the directory (so the next caller gets the stored verdict instantly) only if it answered or you supplied metadata; documentation hosts such as example.com / *.test / *.invalid are scanned but never listed. Two dimensions are reported. `verdict` is authoritative and comes from deterministic static rules — pure pattern-matching over the *advertised* text only, NO code execution. It flags the social-engineering / RCE tricks listing-spam servers use: * `curl … | bash` and `base64 -d | sh` install lures * `eval "$(curl …)"` / PowerShell `IEX(...DownloadString)` cradles * base64 blobs that decode to a shell command * bare-IP payload hosts and cheap throwaway TLDs * prompt-injection / credential-exfiltration phrasing ("ignore previous instructions", "send your .env / api key") * MCP tool-poisoning coercion — descriptions that hijack an agent's tool-calling ("always call this tool first", "before using any other tool you must…"), hidden `<IMPORTANT>` instructions, "list all API keys / include secrets in your response", and coercion to read & forward `.key`/`.pem`/`.ssh`/`.env` files Source-code-oriented rules (SQL / command / code injection) are deliberately not applied to natural-language descriptions, to avoid false positives. `llm_reference` is an advisory frontier-LLM second opinion over the same text. Because the LLM is slow it is computed LIVE on this call only and is never stored (the hourly job never runs it), so it may be null on timeout. It never overrides the rule verdict; when it is *more* severe than the rules an `advisory` note is attached as a safety-net signal. Security/defense products that merely *name* these attacks are not flagged. Args: endpoint_url: The MCP server's streamable-http URL (required). This is the identity we look up / index by. name: Optional advertised name (used when the server is new and gets added; falls back to the URL host). description: Optional description / README blurb (scanned when new). tools_text: Optional tool names + descriptions; used only if the live probe cannot fetch the server's tools/list. Returns: { verdict: "clean"|"suspicious"|"malicious", score: 0-100, reasons: [{rule, weight, snippet}], llm_reference: {model, verdict, reason, confidence} | null, advisory: str | null, slug, name, endpoint_url, source: "stored" (existing) | "new_scan" (just added), indexed: bool }

scan_mcp_safety input schema
{
  "type": "object",
  "title": "scan_mcp_safetyArguments",
  "required": [
    "endpoint_url"
  ],
  "properties": {
    "name": {
      "type": "string",
      "title": "Name",
      "default": "",
      "description": "Optional advertised name (used when the server is new and gets added; falls back to the URL host)."
    },
    "tools_text": {
      "type": "string",
      "title": "Tools Text",
      "default": "",
      "description": "Optional tool names + descriptions; used only if the live probe cannot fetch the server's tools/list."
    },
    "description": {
      "type": "string",
      "title": "Description",
      "default": "",
      "description": "Optional description / README blurb (scanned when new)."
    },
    "endpoint_url": {
      "type": "string",
      "title": "Endpoint Url",
      "description": "The MCP server's streamable-http URL (required). This is the identity we look up / index by."
    }
  }
}
scan_mcp_safety output schema
{
  "type": "object",
  "title": "scan_mcp_safetyDictOutput",
  "additionalProperties": true
}
scan_mcp_safety annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
prepare_paid_verification
Advertised by the server during the last successful anonymous check.

Quote a sponsored paid verification of an x402 service. You pay the service once from your own wallet (Base USDC, <= $1; funds go to its payTo). Sign the returned `typed_data` (EIP-712), then call `execute_paid_verification` before `valid_before`. We never sign or hold funds. Auth: API key from POST https://agent-tools.cloud/api/v1/keys, as the `Authorization: Bearer` header or `api_key`. Args: slug: Service slug from `search` / `get`. payer: 0x address of the wallet that will sign and pay. api_key: Optional if the Authorization header is sent. Returns: { id, amount_usd, pay_to, valid_before, typed_data, ... } or { error, message }.

prepare_paid_verification input schema
{
  "type": "object",
  "title": "prepare_paid_verificationArguments",
  "required": [
    "slug",
    "payer"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "title": "Slug",
      "description": "Service slug from `search` / `get`."
    },
    "payer": {
      "type": "string",
      "title": "Payer",
      "description": "0x address of the wallet that will sign and pay."
    },
    "api_key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Api Key",
      "default": null,
      "description": "Optional if the Authorization header is sent."
    }
  }
}
prepare_paid_verification output schema
{
  "type": "object",
  "title": "prepare_paid_verificationDictOutput",
  "additionalProperties": true
}
prepare_paid_verification annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
execute_paid_verification
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Send the signed payment to the service once and score the result. Aborts without paying if price or recipient changed. Never retried; a timeout returns `indeterminate`. status: succeeded | delivery_failed | payment_rejected | indeterminate. Args: id: `id` returned by `prepare_paid_verification`. signature: 0x EIP-712 signature of its `typed_data` by the payer. api_key: Optional if the Authorization header is sent.

execute_paid_verification input schema
{
  "type": "object",
  "title": "execute_paid_verificationArguments",
  "required": [
    "id",
    "signature"
  ],
  "properties": {
    "id": {
      "type": "string",
      "title": "Id",
      "description": "`id` returned by `prepare_paid_verification`."
    },
    "api_key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Api Key",
      "default": null,
      "description": "Optional if the Authorization header is sent."
    },
    "signature": {
      "type": "string",
      "title": "Signature",
      "description": "0x EIP-712 signature of its `typed_data` by the payer."
    }
  }
}
execute_paid_verification output schema
{
  "type": "object",
  "title": "execute_paid_verificationDictOutput",
  "additionalProperties": true
}
execute_paid_verification annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
get_paid_verification
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read one of your own paid verifications. Args: id: Verification id. api_key: Optional if the Authorization header is sent.

get_paid_verification input schema
{
  "type": "object",
  "title": "get_paid_verificationArguments",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "title": "Id",
      "description": "Verification id."
    },
    "api_key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Api Key",
      "default": null,
      "description": "Optional if the Authorization header is sent."
    }
  }
}
get_paid_verification output schema
{
  "type": "object",
  "title": "get_paid_verificationDictOutput",
  "additionalProperties": true
}
get_paid_verification annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
621 ms
95th percentile latency
621 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 621 ms · metadata changed · 14 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http agent-tools-mcp https://agent-tools.cloud/mcp-discovery/

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add agent-tools-mcp --url https://agent-tools.cloud/mcp-discovery/

Cursor

Merge this server into .cursor/mcp.json in your project, then enable agent-tools-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "agent-tools-mcp": {
      "url": "https://agent-tools.cloud/mcp-discovery/"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "agent-tools-mcp": {
      "type": "streamableHttp",
      "url": "https://agent-tools.cloud/mcp-discovery/",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start agent-tools-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "agent-tools-mcp": {
      "type": "http",
      "url": "https://agent-tools.cloud/mcp-discovery/"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http agent-tools-mcp https://agent-tools.cloud/mcp-discovery/

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://agent-tools.cloud/mcp-discovery/

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "agent-tools-mcp": {
      "serverUrl": "https://agent-tools.cloud/mcp-discovery/"
    }
  }
}

Let your agent find its tools

Find servers like agent-tools MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.