PayAPI Market
Search settlement-verified x402 APIs for free. Pay providers in USDC on Base, Solana or Algorand.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin get_api
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"marketplace": {
"url": "https://payapi.market/mcp"
}
}
}Remote endpoints
https://payapi.market/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢search_apis(query, verified_only, limit, network)
Free-text search across the live catalogue. Matches listing name, description, category and provider name. Returns settlement-verified listings only unless verified_only is false. Free and read-only; spends nothing.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What you are looking for, e.g. \"uk property\" or \"sanctions screening\"."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Restrict to settlement-verified listings. Default true."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"network": {
"type": "string",
"description": "Only listings that accept USDC on this network: base, solana, algorand, or a CAIP-2 id. Omit for all. Each listing reports its rails in `networks`."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢list_apis(category, verified_only, limit, network)
Browse the live catalogue, optionally filtered to one category. Omit category for everything. Returns settlement-verified listings only unless verified_only is false. Free and read-only; spends nothing.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Exact category name. Call with no category first to see the valid values."
},
"verified_only": {
"type": "boolean",
"default": true
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"network": {
"type": "string",
"description": "Only listings that accept USDC on this network: base, solana, algorand, or a CAIP-2 id. Omit for all. Each listing reports its rails in `networks`."
}
},
"additionalProperties": false
}🟢get_api(id)
Fetch a single live listing by its id or slug, including base_url, price range, network and verification state. payment_verified is true if at least one route was paid; verified_routes names each paid route with its on-chain receipt. Also returns a reliability object: score (0 to 100 or null), band (strong, established, thin, caution or unscored) and computed_at. Reliability is a running score from paid verifications, health history and payTo integrity, not a star rating and not a guarantee; unscored means it has not been computed for that listing yet. Method: https://payapi.market/how-an-agent-finds-payapi. Returns the listing whether or not it is verified, and reports payment_verified honestly. Free and read-only; spends nothing.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Listing uuid or slug, as returned by search_apis or list_apis."
}
},
"required": [
"id"
],
"additionalProperties": false
}🟡submit_listing(name, description, base_url, paid_route_url, method, ...)
Submit a new API listing to PayAPI Market. The listing will be validated, preflighted, and placed in pending review. NEVER sets payment_verified or makes the listing live. PayAPI Market will test it with a real paid call (up to $0.10 USDC on Base). sample_input is required: a query string for GET, or a JSON body for POST. We test the listing with that example request before it can be badged settlement-verified. If the test succeeds, the listing receives a settlement-verified badge and appears in the marketplace. Rate limited: max 10 submissions per hour per wallet and per contact email, 50 per day per IP and per payTo address. If this wallet already submitted this API, the result is the existing listing id and the message "This API has already been submitted." No second row is created.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "API name"
},
"description": {
"type": "string",
"description": "API description"
},
"base_url": {
"type": "string",
"description": "Base URL of the API (http(s) only, no localhost/tunnels)"
},
"paid_route_url": {
"type": "string",
"description": "The exact route that requires x402 payment (http(s) only)"
},
"method": {
"type": "string",
"enum": [
"GET",
"POST"
],
"description": "How we call the paid route. GET uses sample_input as a query string. POST uses it as a JSON body."
},
"price": {
"type": "number",
"description": "Price per request in USDC"
},
"networks": {
"type": "array",
"items": {
"type": "string",
"enum": [
"base",
"solana",
"algorand"
]
},
"description": "Networks this API accepts (e.g. [\"base\"], [\"base\", \"solana\"])"
},
"payTo": {
"type": "string",
"description": "Wallet address that receives payments (Base: 0x... address, Solana: base58 address)"
},
"contact_email": {
"type": "string",
"description": "Contact email for the provider"
},
"category": {
"type": "string",
"enum": [
"Data",
"Verification",
"Intelligence",
"Tools",
"Finance"
],
"description": "API category"
},
"sample_input": {
"type": "string",
"description": "Required example request. A query string for GET (city=London) or a JSON body for POST ({\"city\":\"London\"}). Placeholders are rejected."
},
"sample_url": {
"type": "string",
"description": "Optional free sample or health URL. Called unpaid, before any paid check."
},
"example_expected_output": {
"type": "string",
"description": "Optional JSON shape or short sample the free check compares against."
},
"input_param_to_vary": {
"type": "string",
"description": "Optional parameter name to change between two free sample calls, for example city."
},
"settles_after_success": {
"type": "boolean",
"description": "Confirm the paid route settles only after a successful response. Required only when the server switch is on."
},
"mcp_endpoint": {
"type": "string",
"description": "Optional: MCP endpoint URL if this is an MCP server"
},
"provider_name": {
"type": "string",
"description": "Optional: provider/company name (defaults to API name)"
},
"network": {
"type": "string",
"description": "Only listings that accept USDC on this network: base, solana, algorand, or a CAIP-2 id. Omit for all. Each listing reports its rails in `networks`."
}
},
"required": [
"name",
"description",
"paid_route_url",
"price",
"payTo",
"contact_email",
"category",
"sample_input"
],
"additionalProperties": false
}Recommended Prompts
search_apissearch_apisget_apiget_apilist_apisCommunity
Evidence