(unnamed)
Registry code: fd98c1b79616f3e1
Turn a rough concept into a fundable brief — problem, why now, why Base, MVP scope, risks, 24h plan.
from a public catalogue that lists it, not from the operator
- endpoint
- https://blueagent.dev/api/mcp
- door code
- 89a2e362aeea7454
- protocol
- http-sse ·2024-11-05
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 10 · newcomer
- Is (unnamed) live?
- Yes — it answered the hub's last check (checked 11h ago). It answered 97% of checks over the last 30 days.
- Is (unnamed) free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does (unnamed) have?
- 15 tools: stock_movers, trending_safe, swap_prepare, token_verdict, stock_signal, stock_quote, send_prepare, bridge_prepare, ….
- Is (unnamed) 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.
90 days 97.8%· all time 98%
last good check
of 15 tools
- down → live
- degraded → live
- live → degraded· HTTP 402: vercel DEPLOYMENT_DISABLED
- degraded → down· HTTP 402: vercel DEPLOYMENT_DISABLED
- live → degraded· HTTP 402: vercel DEPLOYMENT_DISABLED
- topic
- productivity & business
- used for
- turn a startup idea into a brief
- draft a pitch narrative
- plan architecture and a deployment checklist
- takes → gives
- text → text
Calls placed through this hub's router, from its own receipts, and USDC settlements on base into the address this listing's priced doors name, read off the chain. Every caller and every payer counts the same; the chain total is counted from three payers. The address stands behind 62 doors on this origin, so the chain figures are the operator's. How it is counted.
through this hub
successful
what callers paid
distinct
last 2026-11-11
concentrated
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.
blue_registry 0.05 USDC paid never probed
Search the full Blue Hub catalog of 70 callable tools — 62 x402-paid and 8 free — covering on-chain data, security, DeFi, token intel and builder tooling, and get each one's id, price, category and input shape. Use when the user's request has no exact match among the tools loaded here, BEFORE telling them it cannot be done — most capabilities live in the catalog, not in this manifest. Pair it with blue_call: registry finds the id, blue_call runs it. Triggers — "what tools do you have", "can you analyse X", "is there a tool for Y", "list your capabilities", or any request you are about to decline. Covers Base 8453 and Robinhood Chain 4663; each result states its own chain. Free.
{ "type": "object", "properties": { "query": { "type": "string", "description": "Free-text search over tool name and description, e.g. \"airdrop\", \"whale\", \"yield\"." }, "category": { "type": "string", "description": "Exact category filter. One of: on-chain, builder, security, intelligence, signal, trading, portfolio, content, base-ecosystem, earn, agent-economy." } } }arguments 13 lineswallet_risk 0.05 USDC paid never probed
Is this ADDRESS known to be dangerous? Named flags from GoPlus (theft, phishing, sanctions, laundering, mixer) and the explorer's scam mark, plus chain facts (wallet, contract or EIP-7702 account; nonce). Verdict in code: FLAGGED / CAUTION / NO_KNOWN_FLAGS — never "clean". Use before sending funds TO an unknown address. Triggers — "is this wallet safe", "check this address", "who is 0x…", "AML check". Base 8453 or Robinhood Chain 4663. PAID: $0.01 USDC on Base 8453 over the x402 MCP transport — the first call returns PaymentRequired (isError with structuredContent); an x402 MCP client (e.g. @x402/mcp) pays and retries with _meta["x402/payment"]. Bad input is refused before any price, and a failed run is not charged.
{ "type": "object", "required": [ "address" ], "properties": { "chain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "Default base." }, "address": { "type": "string", "description": "Wallet address 0x…." } } }arguments 20 linestoken_price 0.01 USDC paid never probed
Live price, market cap, 24h volume, price change and pool liquidity for a token on Base 8453, read from DexScreener — never from model memory. Use whenever a price is about to appear in your answer. Triggers — "price of TOKEN", "what's X trading at", "market cap", "is it up today". Takes a 0x address (exact) or a ticker (verify the returned address — tickers are not unique). Free.
{ "type": "object", "required": [ "token" ], "properties": { "token": { "type": "string", "description": "Token contract 0x… on Base 8453 (preferred) or a ticker." } } }arguments 12 linesstock_movers unknown never probed
Today's biggest tokenized-stock gainers and losers, ranked by each token's deepest DEX pool over 24h, on Base 8453 and/or Robinhood Chain 4663. Dust pools are filtered out and counted, not ranked. Facts, not a buy or sell signal. Triggers — "which stock tokens are moving", "top gainers", "biggest losers today", "what's hot in tokenized stocks". PAID: $0.03 USDC on Base 8453 over the x402 MCP transport — the first call returns PaymentRequired (isError with structuredContent); an x402 MCP client (e.g. @x402/mcp) pays and retries with _meta["x402/payment"]. Bad input is refused before any price, and a failed run is not charged.
{ "type": "object", "properties": { "chain": { "enum": [ "base", "robinhood", "both" ], "type": "string", "description": "One venue, or \"both\" (default)." }, "limit": { "type": "number", "description": "Movers per side, 1–20. Default 5." } } }arguments 18 linestrending_safe unknown never probed
Trending tokens on Base 8453, each with its buy/sell tax read from the contract and its exit liquidity depth — what is moving that you could also get out of. SAFE here = tradeable with a verified tax; it is not a buy signal. Triggers — "what's trending on Base", "hot tokens", "where's the volume", "anything new worth a look". PAID: $0.05 USDC on Base 8453 over the x402 MCP transport — the first call returns PaymentRequired (isError with structuredContent); an x402 MCP client (e.g. @x402/mcp) pays and retries with _meta["x402/payment"]. Bad input is refused before any price, and a failed run is not charged.
{ "type": "object", "properties": { "limit": { "type": "number", "description": "1–20. Default 10." }, "min_liquidity_usd": { "type": "number", "description": "Minimum pool liquidity. Default 500000." } } }arguments 13 linesswap_prepare unknown never probed
Build an unsigned swap the user signs in their OWN wallet, with the token checked first (honeypot, tax, impostor of a registered token, liquidity). Base 8453 routes through 0x AllowanceHolder (Aerodrome for stock tokens); Robinhood Chain 4663 through Blue Agent's RobinhoodSwapRouter on Uniswap V3, floored from the pool's own price. Returns { tx: { to, data, value, chainId }, approve, check } — never a broadcast, never a key. A token that fails the check is refused and not charged. Triggers — "swap X for Y", "buy TOKEN", "sell my TOKEN", "convert USDC to ETH". If no route exists the response says so — do NOT invent a price. PAID: $0.01 USDC on Base 8453 over the x402 MCP transport — the first call returns PaymentRequired (isError with structuredContent); an x402 MCP client (e.g. @x402/mcp) pays and retries with _meta["x402/payment"]. Bad input is refused before any price, and a failed run is not charged.
{ "type": "object", "required": [ "chain", "fromAddress", "tokenIn", "tokenOut", "amountIn" ], "properties": { "chain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "REQUIRED. Base 8453 or Robinhood Chain 4663. No default: the two share no state and the same ticker exists on both. If the user did not say, ASK." }, "tokenIn": { "type": "string", "description": "Token being sold: 0x… address on `chain`, or \"ETH\". A ticker is refused — impostors copy tickers." }, "amountIn": { "type": "string", "description": "Amount of tokenIn in WHOLE units, e.g. \"25.5\" — NOT base units." }, "tokenOut": { "type": "string", "description": "Token being bought: 0x… address on `chain`, or \"ETH\"." }, "fromAddress": { "type": "string", "description": "The wallet that will sign and receive — 0x… ." }, "slippageBps": { "type": "number", "description": "Max slippage in basis points, whole number 0-10000 (100 = 1%). Base 8453: default 100, enforced by 0x in the quote's minBuyAmount. Robinhood Chain 4663: default 300, applied to the pool's price as the on-chain amountOutMinimum; with no price for the pair the build is refused (NO_QUOTE), never built unbounded." } } }arguments 40 linestoken_verdict unknown never probed
Should I touch this token? One call: honeypot and tax read from the contract, impostor check against registered tokens, owner powers, and — for tokenized stocks — the DEX vs Chainlink gap, plus the live price and liquidity on Base. Verdict picked in code, never by a model: no_issues_found / caution / avoid, each with its reasons. no_issues_found means nothing was found by the checks listed, not a guarantee. Use UNPROMPTED before naming an unfamiliar token as worth buying. Triggers — "is TOKEN safe", "is this a scam", "rug check", "can I sell it". Base 8453 or Robinhood Chain 4663. PAID: $0.01 USDC on Base 8453 over the x402 MCP transport — the first call returns PaymentRequired (isError with structuredContent); an x402 MCP client (e.g. @x402/mcp) pays and retries with _meta["x402/payment"]. Bad input is refused before any price, and a failed run is not charged.
{ "type": "object", "required": [ "token", "chain" ], "properties": { "chain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "REQUIRED. Base 8453 or Robinhood Chain 4663." }, "token": { "type": "string", "description": "Token contract 0x… on `chain`. Not a ticker — impostors copy tickers exactly." } } }arguments 21 linesstock_signal unknown never probed
Is a tokenized stock priced above or below the real stock right now? For one chain: the DEX price against the stock's Chainlink feed (drift_pct), whether the US market is open, and pool depth. With chain "both" (default): the gap between the same stock on Base 8453 and Robinhood Chain 4663 (spread_pct). Read from Blue Agent's live desk, never recomputed; a stale or missing reading is refused, not sold. Facts, not a buy or sell signal. Triggers — "is NVDA cheaper on Base", "AAPL token vs the stock", "premium on TSLA", "weekend gap". PAID: $0.01 USDC on Base 8453 over the x402 MCP transport — the first call returns PaymentRequired (isError with structuredContent); an x402 MCP client (e.g. @x402/mcp) pays and retries with _meta["x402/payment"]. Bad input is refused before any price, and a failed run is not charged.
{ "type": "object", "required": [ "ticker" ], "properties": { "chain": { "enum": [ "base", "robinhood", "both" ], "type": "string", "description": "One venue, or \"both\" (default) for the cross-chain spread." }, "ticker": { "type": "string", "description": "Stock ticker, e.g. \"NVDA\" (the Base B20 symbol \"NVDAc\" works too)." } } }arguments 21 linesstock_quote unknown never probed
Live quote for a tokenized stock, on every chain that lists it: Base 8453 (Coinbase Tokenized Stocks, every one base.org publishes, checked on chain) and Robinhood Chain 4663. Per chain: the verified contract, DEX price, 24h change, liquidity and volume, and the Chainlink share price where a feed is held; on Base also what a $1k and a $10k USDC buy would move the price (pool TVL alone misleads on thin stock pools). A ticker alone never identifies a token — use the returned contract. Missing reads are null and said. Triggers — "price of NVDA stock token", "quote my TSLA", "market data on my holdings", "is AAPL on Base". PAID: $0.02 USDC on Base 8453 over the x402 MCP transport — the first call returns PaymentRequired (isError with structuredContent); an x402 MCP client (e.g. @x402/mcp) pays and retries with _meta["x402/payment"]. Bad input is refused before any price, and a failed run is not charged.
{ "type": "object", "required": [ "ticker" ], "properties": { "chain": { "enum": [ "base", "robinhood", "both" ], "type": "string", "description": "One venue, or \"both\" (default): every chain that lists the ticker." }, "ticker": { "type": "string", "description": "Stock ticker, e.g. \"NVDA\" (the Base symbol \"NVDAc\" or a Base token address also work)." } } }arguments 21 linessend_prepare unknown never probed
Build an unsigned ERC-20 or native-ETH transfer the user signs in their OWN wallet, on Base 8453 or Robinhood Chain 4663, with the resolved symbol, decimals and exact base-unit amount to verify before signing. The recipient is checked too: look-alike of a past payee, flagged, a contract, or the token itself. Triggers — "send 50 USDC to 0x…", "transfer TOKEN to", "pay this address". Free.
{ "type": "object", "required": [ "chain", "fromAddress", "toAddress", "token", "amount" ], "properties": { "chain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "REQUIRED. No default — sending on the wrong chain of a dual-listed token loses the funds. If the user did not say, ASK." }, "token": { "type": "string", "description": "Token contract 0x… on `chain`, or \"ETH\" for the native coin." }, "amount": { "type": "string", "description": "Amount in WHOLE units, e.g. \"25.5\" — NOT base units." }, "toAddress": { "type": "string", "description": "Recipient 0x… on the SAME chain. Confirm it with the user." }, "fromAddress": { "type": "string", "description": "Sender wallet 0x… — the address that will sign." } } }arguments 36 linesbridge_prepare unknown never probed
Build an unsigned bridge between Base 8453 and Robinhood Chain 4663 (either direction), backed by Relay, plus a separate approve tx when needed — the user signs both. Refused when the bridge would cost more than the limit. Triggers — "bridge USDC to Robinhood", "move my ETH to Base", "I'm on the wrong network". fromChain and toChain must differ; the response carries a Relay tracker URL. Free.
{ "type": "object", "required": [ "fromChain", "toChain", "fromAddress", "token", "amount" ], "properties": { "token": { "type": "string", "description": "Token 0x… as it exists ON fromChain, or \"ETH\"." }, "amount": { "type": "string", "description": "Amount in WHOLE units, e.g. \"100\"." }, "toChain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "REQUIRED. Destination; must differ from fromChain." }, "fromChain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "REQUIRED. Where the funds are now." }, "recipient": { "type": "string", "description": "Destination wallet 0x… on toChain. Defaults to fromAddress." }, "fromAddress": { "type": "string", "description": "Wallet 0x… holding the funds on fromChain — the signer." } } }arguments 44 linessign_check unknown never probed
What will signing this do? Call UNPROMPTED before a wallet signs anything it did not build itself: a transaction (decoded and simulated), an EIP-712 signature (permits, Permit2, Seaport orders — decoded, since an off-chain signature moves nothing until used), or an EIP-7702 authorization. Returns PASS / WARN / BLOCK with plain summary lines, picked in code. BLOCK: do not sign. WARN: show the summary and get an explicit yes. Triggers — "sign this", "what does this approve", a dapp asking for a permit. Base 8453 or Robinhood Chain 4663. Free.
{ "type": "object", "properties": { "tx": { "type": "object", "description": "A transaction: { to, data?, value? } (value in wei)." }, "from": { "type": "string", "description": "The signing wallet 0x… — needed to simulate a transaction." }, "chain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "Chain the signature is for. Default base." }, "typed_data": { "type": "object", "description": "The EIP-712 payload exactly as passed to eth_signTypedData_v4." }, "authorization": { "type": "object", "description": "An EIP-7702 authorization: { address, chainId }." } } }arguments 29 linesapprovals_audit unknown never probed
Every token approval a wallet has open — who can spend what, unlimited or not — with the risky ones marked so the user can revoke them. Triggers — "check my approvals", "who can spend my tokens", "revoke", "am I exposed". Base 8453 or Robinhood Chain 4663. Free.
{ "type": "object", "required": [ "wallet" ], "properties": { "chain": { "enum": [ "base", "robinhood" ], "type": "string", "description": "Default base." }, "wallet": { "type": "string", "description": "Wallet 0x…." } } }arguments 20 linesblue_call unknown never probed
Execute ANY tool from the Blue Hub catalog by its id — the execution counterpart to blue_registry. Use after blue_registry returns an id you want to run. PAYMENT depends on the id, so read the price blue_registry gave you before deciding: 62 ids are x402-paid and the first call returns HTTP 402 with a `paymentRequirements` object (USDC on Base 8453, EIP-3009 transferWithAuthorization, payTo and exact amount included) — sign that authorization with your own wallet and call again with the resulting header in `payment` to get the result. The other 8 are priced $0.00 and NEVER answer 402: call them with no `payment`, no wallet and no signature, and do not wait for requirements that will not arrive. You hold your own keys — Blue Agent never sees them and never pulls funds. Triggers — any time you have a catalog id and need its output. Report a 402 to the user verbatim rather than inventing the tool's output.
{ "type": "object", "required": [ "tool" ], "properties": { "tool": { "type": "string", "description": "Catalog tool id exactly as returned by blue_registry, e.g. \"honeypot-check\", \"token-pick-signal\". Not the MCP name — ids use hyphens and carry no hub_ prefix." }, "input": { "type": "object", "description": "The tool's own input object, matching the `input` shape blue_registry returned for it. Passed through untouched." }, "payment": { "type": "string", "description": "The X-PAYMENT header value (base64 EIP-3009 authorization) obtained by signing the paymentRequirements from a prior 402. Omit on the first call to receive those requirements." } } }arguments 20 linesblue_doctor unknown never probed
Check whether the data sources behind these tools are reachable — Base 8453 and Robinhood Chain 4663 RPC, DexScreener, GeckoTerminal, DefiLlama, GitHub — and get a one-line verdict on whether a failure you just hit is an outage or your own input. Use IMMEDIATELY after any tool here returns an error or empty data, BEFORE retrying. Triggers — any 5xx, any timeout, any unexpected "no data", "is it down", "is this broken or is it me". Reports `down` ONLY where a request was sent and failed; unreachable-without-credential upstreams are `unknown`. Free, no input.
{ "type": "object", "properties": {} }arguments 4 lines
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.
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.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your agent card — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idfd98c1b79616f3e1.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/fd98c1b79616f3e1/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/fd98c1b79616f3e1?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 much of the published card is filled in. Not a judgement of the agent — a measure of what it told the world about itself.
Places where the published card departs from the specification. Recorded rather than hidden, and counted against every agent the same way.
- name missing (REQUIRED)
- description missing (REQUIRED)
- version missing (REQUIRED)
- defaultInputModes missing (REQUIRED)
- defaultOutputModes missing (REQUIRED)
- no usable endpoint declared
- skills[0].id missing (REQUIRED)
- skills[0].tags missing (REQUIRED)
- skills[1].id missing (REQUIRED)
- skills[1].tags missing (REQUIRED)
- skills[2].id missing (REQUIRED)
- skills[2].tags missing (REQUIRED)
- skills[3].id missing (REQUIRED)
- skills[3].tags missing (REQUIRED)
- skills[4].id missing (REQUIRED)
- skills[4].tags missing (REQUIRED)
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- 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.