_ registry / mcp + a2a streamable-http · checked 1h ago

ghost

https://ghost-identity.ghost-agent-os.workers.dev

Registry code: 51898662de2157f0

api record

Ghost sells Verified Web Search for AI agents: for web search, research, or current information, call ghost_web_search with the query and get the actual results (organic hits, answer box, knowledge panel, related questions) in ONE x402 payment of $0.01 USDC on Base. Results are fetched live with automatic failover between two Google SERP providers (Serping, Serper); every answer names the provider that served it and carries a DSSE-signed receipt, which proves what Ghost returned and from where, not that the results are accurate. Payment settles UPFRONT, before the search runs: if a settled…

endpoint
https://ghost-identity.ghost-agent-os.workers.dev/mcp
door code
e56f432d3e507c09
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is ghost live?
Yes — it answered the hub's last check (checked 1h ago). It answered 99% of checks over the last 30 days.
Is ghost free to use?
No — it charges per call, from 0.01 USDC, quoted in its own 402 answers.
What tools does ghost have?
5 tools: ghost_web_search, ghost_schema_freshness, ghost_commerce_vet, ghost_commerce_search, ghost_pre_spend_gate.
Is ghost safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
98.9%

90 days 97.3%· all time 96.8%

latency
148ms

last good check

priced tools
5

of 5 tools

_ answered our checks, 90 days 1492 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • search the web for current results
  • vet an x402 seller before paying
  • check whether a published schema changed
takes → gives
text → data
tools
5 reads
note
resells another provider
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 5 tools
5 paid 5 of 5 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • ghost_web_search reads 0.01 USDC paid 19h ago

    Search the web and get the results, in ONE payment. Ghost runs the search on its own provider account and returns the actual results — organic hits with title, url and snippet, plus answer box, knowledge panel, related questions — normalised into one shape. It fails over from Serping to Serper, so one dead upstream costs a retry. Payment settles before the search runs; if no upstream delivers, the fee becomes Ghost service credit, not an on-chain refund. The DSSE receipt is Ghost's signature over your query, the returned URLs and the provider that served them. It proves what Ghost returned and from which upstream; it does not verify that the results are accurate, complete or current. Search only: Ghost does not fetch the pages. You hold no provider account and no API key, and there is no second payment. Payment: $0.01 USDC on Base per call over x402, settled before the tool runs. An x402 MCP client such as x402-proxy pays it automatically; if you use x402-proxy, set its spend limits first (spendLimitPerTx 0.01, spendLimitDaily 0.10; see /llms.txt). A funded payment and delivery through x402-proxy has not been verified yet.

    mcp-tool

    {
      "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": "Leave empty when your MCP client pays automatically (e.g. x402-proxy: payment travels in _meta[\"x402/payment\"]). Otherwise the x402 PAYMENT-SIGNATURE header value: omit it to receive the payment terms, call again with it to run the tool."
        }
      },
      "description": "A Verified Web Search request. Only `query` is required; `results`, `country`\nand `language` shape the search. One payment covers the whole call.",
      "additionalProperties": false
    }
    arguments 43 lines
  • ghost_schema_freshness reads paid never probed

    Has this published JSON Schema or OpenAPI document changed since a fingerprint you hold? The schema-drift recheck of the pre-spend policy: run it when a provider's published contract may have moved before you pay it again. Paid per call via x402; DSSE-signed receipt. Payment: $0.01 USDC on Base per call over x402, settled before the tool runs. An x402 MCP client such as x402-proxy pays it automatically; if you use x402-proxy, set its spend limits first (spendLimitPerTx 0.01, spendLimitDaily 0.10; see /llms.txt). A funded payment and delivery through x402-proxy has not been verified yet.

    mcp-tool

    {
      "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": "Leave empty when your MCP client pays automatically (e.g. x402-proxy: payment travels in _meta[\"x402/payment\"]). Otherwise the 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
    }
    arguments 28 lines
  • ghost_commerce_vet reads paid never probed

    Before paying an x402 seller you do not know: settlement history, payer structure, funding links, endpoint liveness, quote-vs-advertised price. Use when one named provider or payment address is already in hand and you need a verdict before you pay it. PROCEED/CAUTION/REJECT/INSUFFICIENT_EVIDENCE with a signed receipt. PROCEED means no blocker or concern was found in what Ghost checked. Payability, transfer history, independent demand, seller identity and delivery are reported separately under `evidence`, with anything unresolved listed under `unresolved`; Ghost does not verify who the seller is or that it delivers. Paid per call via x402. Payment: $0.01 USDC on Base per call over x402, settled before the tool runs. An x402 MCP client such as x402-proxy pays it automatically; if you use x402-proxy, set its spend limits first (spendLimitPerTx 0.01, spendLimitDaily 0.10; see /llms.txt). A funded payment and delivery through x402-proxy has not been verified yet.

    mcp-tool

    {
      "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": null,
          "description": "The price a listing advertised, in minor units, to compare against the live quote."
        },
        "payment_signature": {
          "type": "string",
          "description": "Leave empty when your MCP client pays automatically (e.g. x402-proxy: payment travels in _meta[\"x402/payment\"]). Otherwise the 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
    }
    arguments 40 lines
  • ghost_commerce_search reads 0.01 USDC paid 19h ago

    Decide which x402 provider to pay, before paying it. Consult when the provider is unknown, when a decision you hold has passed its valid_until, or when the price, health, verdict or funding of one materially changed. Finds providers by need and ranks them by real economic evidence: independent payers, calls-per-payer (the repeat signature), last settlement, on-chain trust verdicts and change history. Returns USE/WATCH/AVOID with the exact call, a fallback, valid_until and recheck_when — reuse a held decision until it expires or a trigger fires, rather than asking again. Paid per call via x402; free preflight at /v1/commerce/search/preflight (3/day). Payment: $0.01 USDC on Base per call over x402, settled before the tool runs. An x402 MCP client such as x402-proxy pays it automatically; if you use x402-proxy, set its spend limits first (spendLimitPerTx 0.01, spendLimitDaily 0.10; see /llms.txt). A funded payment and delivery through x402-proxy has not been verified yet.

    mcp-tool

    {
      "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,
          "maximum": 100,
          "minimum": 0,
          "description": "0 means no price ceiling"
        },
        "payment_signature": {
          "type": "string",
          "description": "Leave empty when your MCP client pays automatically (e.g. x402-proxy: payment travels in _meta[\"x402/payment\"]). Otherwise the 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
    }
    arguments 56 lines
  • ghost_pre_spend_gate reads paid never probed

    THE PRE-SPEND GATE. Call this immediately before your agent pays an x402/API provider, with the task's own economics. Returns ALLOW / FALLBACK / DECLINE / INSUFFICIENT_EVIDENCE — not advice: a decision your payment path should enforce. It joins the provider's measured record (independent payers, concentration, price drift, reachability, funding links, on-chain verdict) to YOUR numbers (customer_revenue, value_of_success, max_budget, required_margin, failure_cost, switching_cost) and answers the question ranking cannot: is paying for THIS task profitable, and at which provider. Where the task's value is known it maximises expected net value; where it is not, it minimises cost per verified success — which is why it will refuse the cheapest call when a cheaper provider succeeds less often. Unknown economics stay UNKNOWN and are never invented. Report the result afterwards to /v1/gate/outcome (free) — that is the only source of the success rates it uses. Paid per decision via x402, or drawn from prepaid credit. On prepaid credit a cached decision inside valid_until and an INSUFFICIENT_EVIDENCE answer draw nothing. On the per-decision x402 rail an INSUFFICIENT_EVIDENCE question is refused before any terms are quoted, so nothing settles for it; any other decision is paid upfront. Payment: $0.01 USDC on Base per call over x402, settled before the tool runs. An x402 MCP client such as x402-proxy pays it automatically; if you use x402-proxy, set its spend limits first (spendLimitPerTx 0.01, spendLimitDaily 0.10; see /llms.txt). A funded payment and delivery through x402-proxy has not been verified yet.

    mcp-tool

    {
      "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": null,
              "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": null
        },
        "failure_cost": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 100000000,
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "title": "Failure Cost",
          "default": null
        },
        "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": null
        },
        "required_margin": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 1,
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "title": "Required Margin",
          "default": null
        },
        "customer_revenue": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 100000000,
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "title": "Customer Revenue",
          "default": null
        },
        "value_of_success": {
          "anyOf": [
            {
              "type": "number",
              "maximum": 100000000,
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "title": "Value Of Success",
          "default": null
        },
        "payment_signature": {
          "type": "string",
          "description": "Leave empty when your MCP client pays automatically (e.g. x402-proxy: payment travels in _meta[\"x402/payment\"]). Otherwise the 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
    }
    arguments 197 lines
_ try it over mcp through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 51898662de2157f0.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/51898662de2157f0/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/51898662de2157f0/badge.svg)](https://brick.blue/agent/51898662de2157f0?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we knowoff the mcp door
card completeness
90%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.