ghost-x402-market-intel-vet-schema
What this MCP does
Evaluates and vets paid x402/API providers, applies pre-spend decisions, checks schema freshness, and performs failover web searches.
Tools
Input schema
{'type': 'object', 'title': 'CommerceSearchRequest', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 10, 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'title': 'Query', 'default': '', 'maxLength': 300, 'description': "Free-text need, e.g. 'solana market data with recent buyers'"}, 'network': {'type': 'string', 'title': 'Network', 'default': '', 'maxLength': 64, 'description': 'CAIP-2 filter, e.g. eip155:8453'}, 'capability': {'type': 'string', 'title': 'Capability', 'default': '', 'maxLength': 120, 'description': "Capability keyword(s), e.g. 'search'"}, 'min_payers': {'type': 'integer', 'title': 'Min Payers', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Only providers with at least this many independent payers in 30d'}, 'max_price_usd': {'type': 'number', 'title': 'Max Price Usd', 'default': 0.0, 'maximum': 100, 'minimum': 0, 'description': '0 means no price ceiling'}, 'payment_signature': {'type': 'string', 'description': 'x402 PAYMENT-SIGNATURE header value. Omit it to receive the payment terms; call again with it to run the tool.'}}, 'description': 'What an agent asks the market-intelligence SKU.', 'additionalProperties': False}
Input schema
{'type': 'object', 'title': 'VetRequest', 'properties': {'address': {'type': 'string', 'title': 'Address', 'default': '', 'maxLength': 64, 'description': "The seller's payment address (payTo). Optional if endpoint_url is given — the 402 names its own address."}, 'endpoint_url': {'type': 'string', 'title': 'Endpoint Url', 'default': '', 'maxLength': 2048, 'description': "The seller's paid endpoint, probed with one unpaid request to read its x402 terms."}, 'advertised_amount': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Advertised Amount', 'default': None, 'description': 'The price a listing advertised, in minor units, to compare against the live quote.'}, 'payment_signature': {'type': 'string', 'description': 'x402 PAYMENT-SIGNATURE header value. Omit it to receive the payment terms; call again with it to run the tool.'}}, 'description': 'What a buyer agent asks about a seller it is considering paying.', 'additionalProperties': False}
Input schema
{'type': 'object', '$defs': {'ProviderCandidateModel': {'type': 'object', 'title': 'ProviderCandidateModel', 'required': ['provider'], 'properties': {'payee': {'type': 'string', 'title': 'Payee', 'default': '', 'maxLength': 64}, 'network': {'type': 'string', 'title': 'Network', 'default': '', 'maxLength': 64, 'description': 'CAIP-2, e.g. eip155:8453'}, 'provider': {'type': 'string', 'title': 'Provider', 'maxLength': 2048, 'description': 'Resource URL or payee address of the candidate'}, 'quoted_cost': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'title': 'Quoted Cost', 'default': None, 'description': 'What this provider quoted for this call, in `currency`. Prefer the LIVE 402 amount over an advertised price — the two disagreeing is itself a recheck trigger.'}}, 'description': "One provider the task could pay, as the caller's own payment path sees it.", 'additionalProperties': False}}, 'title': 'GateDecideRequest', 'required': ['task_id', 'task_type', 'success_definition', 'provider_candidates'], 'properties': {'task_id': {'type': 'string', 'title': 'Task Id', 'maxLength': 200}, 'currency': {'type': 'string', 'title': 'Currency', 'default': 'USD', 'maxLength': 16}, 'task_type': {'type': 'string', 'title': 'Task Type', 'maxLength': 120, 'description': 'What kind of job this is. Success history is pooled under it, so it must be stable.'}, 'max_budget': {'anyOf': [{'type': 'number', 'maximum': 100000000, 'minimum': 0}, {'type': 'null'}], 'title': 'Max Budget', 'default': None}, 'failure_cost': {'anyOf': [{'type': 'number', 'maximum': 100000000, 'minimum': 0}, {'type': 'null'}], 'title': 'Failure Cost', 'default': None}, 'revenue_models': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Revenue Models', 'maxItems': 6, 'description': 'Optional. Say what the task is worth in the terms you actually measure, and Ghost derives value_of_success / customer_revenue / max_budget from it — never overriding a value you stated yourself. Each entry needs a `type`: SALES_ROI (spend, qualified_leads?, meetings?, closed_deals?, realized_revenue?), AFFILIATE_ROI (commission_rate?, order_value?, conversion_probability?, tool_cost?, inference_cost?, transaction_cost?), PROCUREMENT_SAVINGS (current_total_cost?, alternative_total_cost?, switching_cost?, migration_cost?), RETURN_ROI (expected_return, data_cost?, model_cost?, execution_cost?, expected_risk_loss?; expected_return is YOURS to state and is never estimated by Ghost), CREDIT_AFFORDABILITY (available_credit, planned_spend?). Ratios are derived only where the denominator exists; conversion rates are never invented.'}, 'switching_cost': {'anyOf': [{'type': 'number', 'maximum': 100000000, 'minimum': 0}, {'type': 'null'}], 'title': 'Switching Cost', 'default': None}, 'required_margin': {'anyOf': [{'type': 'number', 'maximum': 1, 'minimum': 0}, {'type': 'null'}], 'title': 'Required Margin', 'default': None}, 'customer_revenue': {'anyOf': [{'type': 'number', 'maximum': 100000000, 'minimum': 0}, {'type': 'null'}], 'title': 'Customer Revenue', 'default': None}, 'value_of_success': {'anyOf': [{'type': 'number', 'maximum': 100000000, 'minimum': 0}, {'type': 'null'}], 'title': 'Value Of Success', 'default': None}, 'payment_signature': {'type': 'string', 'description': 'x402 PAYMENT-SIGNATURE header value. Omit it to receive the payment terms; call again with it to run the tool.'}, 'success_definition': {'type': 'string', 'title': 'Success Definition', 'maxLength': 1000, 'description': 'What counts as success, written down BEFORE paying. verified_success is later judged against this.'}, 'fallback_authorized': {'type': 'boolean', 'title': 'Fallback Authorized', 'default': False, 'description': 'May Ghost route to a different candidate than the first? Off by default: an unrequested reroute is a payment the operator did not choose.'}, 'provider_candidates': {'type': 'array', 'items': {'$ref': '#/$defs/ProviderCandidateModel'}, 'title': 'Provider Candidates', 'maxItems': 20, 'minItems': 1}}, 'description': "The inline pre-spend gate's input: one task, its economics, its candidates.\n\nEvery optional economic field is genuinely optional and stays UNKNOWN. Ghost will not\nsubstitute a default revenue or an assumed margin — a gate that invents the numbers\nit gates on is not a control.", 'additionalProperties': False}
Input schema
{'type': 'object', 'title': 'CheckRequest', 'required': ['url'], 'properties': {'url': {'type': 'string', 'title': 'Url', 'maxLength': 2048, 'description': 'Public URL of a JSON Schema or OpenAPI document'}, 'known_fingerprint': {'type': 'string', 'title': 'Known Fingerprint', 'default': '', 'maxLength': 128, 'description': 'The fingerprint from a previous check. Empty means first observation.'}, 'payment_signature': {'type': 'string', 'description': 'x402 PAYMENT-SIGNATURE header value. Omit it to receive the payment terms; call again with it to run the tool.'}}, 'description': 'What a buyer sends.', 'additionalProperties': False}
Input schema
{'type': 'object', 'title': 'SearchRequest', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query', 'maxLength': 300, 'description': 'What to search the web for.'}, 'country': {'type': 'string', 'title': 'Country', 'default': '', 'maxLength': 8, 'description': "Country code for localisation, e.g. 'us', 'de'."}, 'results': {'type': 'integer', 'title': 'Results', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'How many organic results to return.'}, 'language': {'type': 'string', 'title': 'Language', 'default': '', 'maxLength': 8, 'description': "Interface language, e.g. 'en', 'es'."}, 'payment_signature': {'type': 'string', 'description': 'x402 PAYMENT-SIGNATURE header value. Omit it to receive the payment terms; call again with it to run the tool.'}}, 'description': "What a buyer asks Verified Web Search for. One field is required: the query.\n\nThe provider-selection knobs this carried before (min_payers, max_price_usd,\nnetwork) described a pick the buyer then had to pay for separately. On the merchant\npath Ghost makes that choice itself and eats the upstream cost, so the buyer's only\ninputs are about the search.", 'additionalProperties': False}
Recent tool changes
Similar MCP servers
Tenjin
Searches, reads, and publishes paid essays and synthesized answers, with USDC payments handled through x402.
SCRIPTMASTERLABS — SqueezeOS MCP
Discovers and routes machine capabilities, provides web access and search verification, and supports caller-authorized x402 payme…
x402 Market Intelligence + Russian Web Access
Fetches websites through country-specific or residential IPs, provides Russian web access and proxies, runs sandboxed code, and o…
Anyway Possible Paid Agent Utilities
Provides Base wallet and payment-readiness checks, merchant intelligence, public URL verification, and verifiable web evidence th…
What Agents Buy
Evaluates x402 API sellers, checks payment safety and value, ranks providers by accuracy or demand, and reports on marketplace ac…
x402-list-mcp
Searches and evaluates x402 payment APIs using service health, uptime, pricing, compliance, change events, and on-chain settlemen…
Agent Deals
Checks and compares x402 services, finds lower-cost working APIs, and reads public webpages or PDFs as Markdown.
nohumans.directory
Discovers and evaluates paid x402 APIs and datasets, including pricing, schemas, payment chains, reputation, and verified deliver…