addrbookFor publishers
← The evidence ledger

Evidence row 579010

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint e9d877fc-a486-4929-8076-b3e815750670
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
f0fdafd04b16f332d8397dfa68803b456aeb4d9bf20064b7632974e5b195029f
Leaf
0x56bfe5c247c65f8663c8efaa46f90e5f5c9ca7337a7fe1b7140a8f97289a00f7

What was observed

{
  "count": 19,
  "tools": [
    {
      "description": "Is this store ready for ChatGPT shopping? Audit whether an online store is ready for AI shopping agents (ChatGPT shopping and Instant Checkout via ACP, Google AI Mode via UCP, Perplexity, Claude): AI bot access to product pages, Product structured data (price, currency, availability, GTIN/MPN, brand, ratings), return policy and shipping details, policy pages, product sitemap/feed, platform and Stripe detection, and agent protocol discovery files (/.well-known/ucp, /.well-known/acp.json, MCP server card). Returns a 0-100 score, readiness level and a prioritized fix list.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "url": {
            "description": "Store domain or a product page URL, e.g. \"allbirds.com\" or \"https://shop.example.com/products/blue-mug\".",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "agentic_commerce_readiness"
    },
    {
      "description": "AI search / GEO / AEO audit: score how well AI assistants (ChatGPT, Claude, Perplexity, Gemini) can find, read and cite a public web page: 0-100 score, letter grade, pass/fail checks (AI answer-bot access in robots.txt, server-rendered content, title/meta, JSON-LD, canonical, llms.txt, sitemap) and a prioritized fix list. Blocking bulk training crawlers is treated as a policy choice and does not lower the score.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "url": {
            "description": "Public page URL or domain, e.g. \"example.com\" or \"https://example.com/pricing\".",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "ai_visibility_score"
    },
    {
      "description": "Brainstorm ideas for a topic, goal, problem or question, each scored 1-10 on three criteria that fit the kind of brainstorm (for business ideas: market size, ease to start, profit potential; for problem solving: impact, feasibility, cost to implement) with an overall score, sorted best first. depth 2 also grows 3 sub-ideas under each of the top 3. Returns a map_url that opens the result as an interactive bubble map on stormap.ai, where a person can keep growing, re-scoring and sharing it. Scores are quick model estimates for sorting, not research.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "description": "Ideas at the top level (default 5).",
            "maximum": 5,
            "minimum": 3,
            "type": "integer"
          },
          "depth": {
            "description": "1 (default) or 2 to also grow sub-ideas under the top 3.",
            "maximum": 2,
            "minimum": 1,
            "type": "integer"
          },
          "mode": {
            "description": "Kind of brainstorm; sets the scoring criteria (default general). breakdown splits the topic into exhaustive, non-overlapping parts with no scores.",
            "enum": [
              "general",
              "breakdown",
              "business",
              "content",
              "product",
              "problem",
              "learn",
              "story"
            ],
            "type": "string"
          },
          "steer": {
            "description": "Optional constraint, e.g. \"cheap, no hardware\", \"for beginners\".",
            "type": "string"
          },
          "topic": {
            "description": "What to brainstorm, e.g. \"side hustles for engineers\", \"reduce factory scrap rate\", \"YouTube channel about home cooking\".",
            "type": "string"
          }
        },
        "required": [
          "topic"
        ],
        "type": "object"
      },
      "name": "brainstorm_ideas"
    },
    {
      "description": "Check whether AI crawlers (GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, PerplexityBot, Google-Extended, CCBot) may access a public URL according to its robots.txt, and score the page's machine readability (status, title, meta description, canonical, JSON-LD, server-rendered text). Returns a 0-100 score and a list of findings.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "url": {
            "description": "Public page URL or domain, e.g. \"https://example.com/pricing\".",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "check_ai_crawler_access"
    },
    {
      "description": "Should your agent pay this? Run before paying an x402 / pay-per-call endpoint, an unfamiliar seller or a wallet address. Returns a verdict (ok_to_pay, caution, dont_pay, no_payment_needed) with reasons, from: the endpoint's live payment terms (price, token, payment address), its listing in Coinbase's x402 marketplace (how many different wallets paid it in 30 days, listed payment address), whether the live payment address matches the listing, whether the token is real USDC, the price compared with typical prices for similar tools, and the seller domain's age, website and mail security. Read-only: never pays or signs anything.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "amount_usd": {
            "description": "Optional: the amount in USD you are about to pay, to check it against what the endpoint asks for.",
            "type": "number"
          },
          "target": {
            "description": "Paid endpoint URL (e.g. \"https://api.example.com/v1/search\"), seller domain (e.g. \"example.com\") or wallet address (0x...).",
            "type": "string"
          }
        },
        "required": [
          "target"
        ],
        "type": "object"
      },
      "name": "check_before_paying"
    },
    {
      "description": "Did they raise prices or change their terms? What changed on a company's pricing, terms of service, privacy policy and subprocessor pages, and when. Returns the change history (prices added/removed, free plan or trial added/removed, subprocessors added/removed, text added/removed) and the current prices. Stormap checks tracked pages about once a day; asking about a new company starts tracking it, so history builds from that day. Useful for competitor monitoring, vendor renewals and compliance.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "domain": {
            "description": "Company domain, e.g. \"linear.app\".",
            "type": "string"
          },
          "since_days": {
            "default": 365,
            "description": "Only return changes from the last N days.",
            "maximum": 3650,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "company_changes"
    },
    {
      "description": "Company profile from a domain: a one-line summary, what the company does, founded, headquarters, industry, employee count, founders, parent company, public listing (ticker, exchange, SEC business address and industry), key pages (pricing, docs, contact, careers, status), social profiles, current prices with the date seen, tech stack, role contact emails, domain age and mail provider, and AI-readiness. From the company's own website plus Wikidata, SEC EDGAR, RDAP and DNS.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "domain": {
            "description": "Company domain or homepage URL, e.g. \"stripe.com\".",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "company_profile"
    },
    {
      "description": "Is this email address or domain real and legitimate? For lead research, signup / fraud screening, outreach list cleaning and vendor checks. Returns a verdict (looks_legitimate, risky, invalid) with reasons, plus: email syntax, role address (sales@, info@), free provider or disposable/throwaway service, whether the domain accepts mail (MX, null MX), mail provider (Google Workspace, Microsoft 365...), SPF and DMARC policy, whether the website loads, and domain age from RDAP. Does not contact the mail server, so it cannot confirm a specific mailbox exists.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "description": "Email address (e.g. \"sales@stripe.com\") or a bare domain (e.g. \"stripe.com\").",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "name": "email_domain_check"
    },
    {
      "description": "Describe what you need (\"web search\", \"weather forecast\", \"verify an email\", \"pdf to text\", \"people enrichment\") and get the top 1-5 pay-per-call (x402) APIs to use, from an hourly index of Coinbase's x402 marketplace (~38,000 endpoints). Ranked by evidence that other agents keep paying for them: calls per paying wallet over 30 days (so one-off sampling bots count little), how recently each was paid, relevance and price vs. typical. Top candidates are checked live (still asking for payment, at the listed price). Each result: endpoint URL, method, price, network, why it ranks there, and flags (mostly one-time payers, above typical price, not called recently, did not answer). Read-only; never pays.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "check_live": {
            "description": "Check the top candidates live (default true). False is faster.",
            "type": "boolean"
          },
          "limit": {
            "description": "How many APIs to return (default 3).",
            "maximum": 5,
            "minimum": 1,
            "type": "integer"
          },
          "max_price_usd": {
            "description": "Optional price cap per call in USD, e.g. 0.05.",
            "type": "number"
          },
          "task": {
            "description": "What you need the API for, in a few words, e.g. \"web search\", \"transcribe audio\", \"company enrichment\".",
            "type": "string"
          }
        },
        "required": [
          "task"
        ],
        "type": "object"
      },
      "name": "find_best_api"
    },
    {
      "description": "Generate robots.txt rules for AI crawlers from a policy: \"open\" (allow all), \"balanced\" (allow search and user-triggered fetchers, block bulk training crawlers) or \"block\" (block all). Optional per-bot overrides, allowed/blocked paths, sitemap and crawl delay. No network access.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "allow_paths": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "crawl_delay": {
            "maximum": 60,
            "minimum": 1,
            "type": "integer"
          },
          "disallow_paths": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "overrides": {
            "additionalProperties": {
              "enum": [
                "allow",
                "block"
              ],
              "type": "string"
            },
            "description": "e.g. {\"GPTBot\":\"allow\",\"CCBot\":\"block\"}",
            "type": "object"
          },
          "policy": {
            "default": "balanced",
            "enum": [
              "open",
              "balanced",
              "block"
            ],
            "type": "string"
          },
          "site_url": {
            "type": "string"
          },
          "sitemap_url": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "generate_ai_robots_txt"
    },
    {
      "description": "Generate an llms.txt file (llmstxt.org format) for a public website. Uses the site name, summary and pages you pass; anything missing is filled from the homepage and sitemap.xml. Returns the file text plus notes on how to improve it.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "max_pages": {
            "default": 25,
            "maximum": 60,
            "minimum": 5,
            "type": "integer"
          },
          "pages": {
            "description": "Optional list of the most important page URLs. If omitted, sitemap.xml is used.",
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "type": "array"
          },
          "site_name": {
            "type": "string"
          },
          "site_url": {
            "description": "Site root, e.g. \"https://example.com\".",
            "type": "string"
          },
          "summary": {
            "description": "One paragraph: what the site is, who it is for, what is most useful.",
            "type": "string"
          }
        },
        "required": [
          "site_url"
        ],
        "type": "object"
      },
      "name": "generate_llms_txt"
    },
    {
      "description": "Return one Stormap guide as clean Markdown with front matter (title, URL, dates, tags). Accepts a slug (\"how-to-install-hermes-desktop\") or a stormap.ai post URL.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "max_chars": {
            "default": 60000,
            "maximum": 200000,
            "minimum": 1000,
            "type": "integer"
          },
          "slug": {
            "description": "Guide slug or full https://stormap.ai/post/... URL.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_guide"
    },
    {
      "description": "Before installing an npm or PyPI package: does it exist (AI-suggested names are sometimes made up, and attackers register them), has it been reported as malicious, which known vulnerabilities affect this version (with the fixed version), is it deprecated or yanked, how old is it, does it run code on install, how many downloads, and does its name imitate a popular package (typosquat). Verdict: ok_to_install, caution, dont_install or does_not_exist, with reasons. From OSV.dev, deps.dev, the npm registry and PyPI.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "ecosystem": {
            "description": "npm (default) or pypi.",
            "enum": [
              "npm",
              "pypi"
            ],
            "type": "string"
          },
          "name": {
            "description": "Package name, optionally with a version: \"lodash\", \"lodash@4.17.15\", \"@scope/pkg\", \"requests==2.31.0\".",
            "type": "string"
          },
          "version": {
            "description": "Optional version to check (default: latest).",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "package_check"
    },
    {
      "description": "Read a web page for an AI: fetch a public page and return its main content as clean, LLM-ready Markdown (navigation, footers, scripts and cookie banners removed) plus metadata: title, description, author, published/modified dates, canonical URL, language and word count. Reads server-rendered HTML (no JavaScript execution) and respects robots.txt.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "max_chars": {
            "default": 20000,
            "description": "Maximum Markdown length to return.",
            "maximum": 100000,
            "minimum": 500,
            "type": "integer"
          },
          "url": {
            "description": "Public page URL, e.g. \"https://example.com/blog/post\".",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "read_url"
    },
    {
      "description": "Search Stormap's practical guides on building with AI agents (OpenClaw, Hermes, Claude, coding agents, browser automation, RAG, MCP, AI news). Returns titles, URLs, Markdown URLs and short descriptions.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "description": "Optional category filter, e.g. \"OpenClaw Tutorials\", \"AI News\", \"AI Tools\", \"Automation\".",
            "type": "string"
          },
          "limit": {
            "default": 5,
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "What to look for, e.g. \"install hermes desktop\" or \"stop coding agents overwriting files\".",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_guides"
    },
    {
      "description": "US stock trading halts right now and earlier today (Nasdaq, NYSE, NYSE American and other US markets), from Nasdaq's halt feed refreshed every minute. For each: symbol, market, the reason in plain English (news pending, volatility pause, additional information requested, regulatory concern...), halt time, and when quoting and trading resume, with a status (halted, resuming_soon, resumed). Filter by one or more tickers, or omit for all.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "symbols": {
            "description": "Optional: one or more tickers separated by commas, e.g. \"FFAI, AAPL\". Omit for all current halts.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "trading_halts"
    },
    {
      "description": "Vendor security review / third-party risk check: a first-pass security and privacy profile of a software vendor from its own public website, given a domain. Answers \"is this vendor SOC 2 certified?\" and \"do they train AI on our data?\": certifications it claims (SOC 2 Type I/II, ISO 27001/27701/42001, HIPAA, PCI DSS, FedRAMP…), whether it trains AI models on customer data (with the exact quote and page), subprocessor list, DPA, data residency, security features (SSO/SAML, SCIM, MFA, encryption, pen tests, bug bounty), security.txt contact, status page, links to trust center, privacy policy and terms, plus a 0-100 transparency score. Use for vendor risk assessments, procurement and security questionnaires. Certifications are vendor claims, not verified audits.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "domain": {
            "description": "Vendor domain, e.g. \"notion.com\".",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "vendor_trust_profile"
    },
    {
      "description": "For a US stock ticker: the likely catalysts behind a move, from primary sources, in seconds. Ranks the last 48 hours (adjustable) of SEC filings: 8-K events decoded into plain English (deals, earnings, new debt, unregistered share sales, delisting notices, management changes), the press-release headline from Exhibit 99.1, offerings and shelf registrations (dilution), insider open-market buys and sells from Form 4 (who, shares, price, value), 5%+ stakes (13D/13G); plus whether the stock is halted or was halted today and why. Each item has its time, a link to the filing and why it ranks where it does; filing bursts say which filing to read first. An explicit answer status (filing_found, news_halt_no_filing_yet, unexplained_by_primary_sources) and a coverage block (window searched, when each source was last checked, latest filing date) let an agent tell \"nothing filed\" apart from \"a source failed\". Facts only: no price data and no buy/sell opinions.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "hours": {
            "description": "How far back to look, in hours (default 48).",
            "maximum": 168,
            "minimum": 1,
            "type": "integer"
          },
          "ticker": {
            "description": "US stock ticker, e.g. \"AAPL\" or \"BRK.B\".",
            "type": "string"
          }
        },
        "required": [
          "ticker"
        ],
        "type": "object"
      },
      "name": "why_is_it_moving"
    },
    {
      "description": "What paid AI-agent tools cost and who sells the most, from an hourly index of Coinbase's x402 marketplace (about 38,000 pay-per-call endpoints). For a category or a search phrase: the typical price that paying wallets actually accept (median, middle range, top 10%), a price distribution, the top sellers by distinct paying wallets in the last 30 days, new listings this week that are already being paid, and how concentrated the market is. Use it to price your own x402 endpoint, or to pick which paid tool to call.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "description": "Optional category, e.g. \"scraping\", \"web_search\", \"llm\", \"market_data\", \"onchain\". Omit for the whole marketplace plus a per-category table.",
            "enum": [
              "web_search",
              "email",
              "enrichment",
              "scraping",
              "llm",
              "image",
              "audio",
              "documents",
              "news",
              "weather",
              "market_data",
              "onchain",
              "domain_security",
              "other"
            ],
            "type": "string"
          },
          "limit": {
            "description": "How many top sellers and new listings to return (default 10).",
            "maximum": 25,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "Optional search phrase matched against listing names, descriptions and URLs, e.g. \"transcription\" or \"weather\".",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "x402_market_report"
    }
  ]
}

What the leaf hashes

{"body":"f0fdafd04b16f332d8397dfa68803b456aeb4d9bf20064b7632974e5b195029f","id":579010,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793143254867511,"prev":null,"subject":"e9d877fc-a486-4929-8076-b3e815750670","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0x56bf9eeedb820619add45badca72473f68999c46d402046a64a833017578d840
  2. 0xb524b3c8e8a91b6dd50bd829f953ae878e4ada694e5a6aa1a5c3d4604f98bdce
  3. 0x0ac53b5c3036e521ed04f735ec6b005c300ec254cd8338d0651afc7c468974fa
  4. 0x3dd0906eee843139dc06a8bcd0a751755e020ea237a50b5637d54d4f0328d8bc
  5. 0x26b673c979a73733b12edff795864d10db5303a790fa268e26d934abd16b4310
  6. 0xab87c1c48b447e79882505a716ff0b02419cf7324eda90cffe44d5aa77c2eb10
  7. 0xaf53b6483b1bd2941675993e6cf6a44c7236e3b7995193007d6dbec8e55812cd
  8. 0x18bff92a9a31a5312e9cb38eff57292b4fb78e7daabef19030c7423ebcd6ddcd
  9. 0xcc4002c8175aa2376f2eae47758ec37537ca6601d99374863f2e42f106a86c0c
  10. 0xc69bdb44e5c6b8cf371784b0313363ac72c0c8b7cf2a10203966cbe3857fc7a6
  11. 0xaec8530a2e156f659d0929b3462a514a0cf7d2e6669110bb34b6ef56abdae9fd
  12. 0xe06cb1b692af263d62f5739bc4ad709ffe5a2576ef5a59a1610d50c03c7b9584
  13. 0x906b5f0e8ef1fe7894886d84f460bb3239d5f14b14ad4adff27c7dcea6265169
  14. 0x674bc1173d39130be4d15bbfc7327f8a8af87eb251e54c8d4409c7e840b9e538
  15. 0xb78ea6a255dd06e2f402a1a733bca392fa6243920bcba95e8b80bdfc6ce5f553
  16. 0x3ed50f053eca72dfd3a9d45a11935240bfe691e57835c367ddebe2cbc49efe9d
  17. 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON