{
  "$schema": "https://modelcontextprotocol.io/schemas/server-card.json",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "robauto",
    "title": "Robauto MCP",
    "description": "Robauto MCP — Agent Intelligence & Brand Discovery Infrastructure.",
    "version": "0.7.1",
    "websiteUrl": "https://robauto.ai",
    "documentationUrl": "https://robauto.ai/mcp-server",
    "contractUrl": "https://raw.githubusercontent.com/robauto-ai/mcp/main/docs/manifest.json",
    "repositoryUrl": "https://github.com/robauto-ai/mcp"
  },
  "instructions": "Robauto MCP — Agent Intelligence & Brand Discovery Infrastructure. Robauto never exposes user contact details, account identities, or a single site's proprietary analytics over MCP. Site- and agent-level traffic is published only where the site owner already publishes it (the public leaderboards), and everything else is returned as network aggregates.",
  "transports": [
    {
      "type": "streamable-http",
      "endpoint": "https://mcp.robauto.ai",
      "aliases": [
        "https://robauto.ai/mcp"
      ],
      "authentication": "none"
    }
  ],
  "endpoint": "https://mcp.robauto.ai",
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": false,
    "prompts": false
  },
  "tools": [
    {
      "name": "get_site_agent_card",
      "title": "One canonical agent card for any website",
      "description": "Return one canonical machine-readable object for a domain: identity and category, description, declared products with checkout URLs, contact routes, policies, capabilities (llms.txt, MCP server card, A2A agent card, agent payments), agent and MCP endpoints, accepted payment methods, verification and freshness counts, and the stored Agent Readiness score. This is the single call to make before deciding whether and how to transact with a site — it replaces get_brand_profile plus get_brand_contacts plus get_brand_policies plus get_brand_products. Every contact and policy value carries the page it came from and the day it was last checked; nothing is withheld for age. Capability findings are a live read-only fetch of the site's own discovery files.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "ask_brand",
      "title": "Ask a plain question about a brand",
      "description": "Ask a plain-language question about a company and get an answer grounded strictly in that company's published agent card: what it sells, who to contact for support or disputes, its refund and shipping policy, which products fall under a price, how ready it is to deal with agents. Nothing outside the card is used, no fact is invented, and every value carries the day it was last checked. The full card and its source URLs are returned alongside the answer so you can verify every claim. Use this instead of chaining four lookup tools.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "compare_brands",
      "title": "Compare brands side by side",
      "description": "Compare two to five domains on the criteria you choose: products, pricing range, policies, agent readiness, contact routes and agent capabilities. Returns one structured row per domain plus a readiness ranking for the domains that have a score. A blank column means nothing is published for that domain yet, which is itself the finding — it is never filled in with a guess. Use this to choose between suppliers or vendors on evidence an agent can check.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "get_network_data",
      "title": "Robauto network data in one call",
      "description": "Fetch Robauto's public network data with one call. view='summary' (default) returns AI-search KPIs plus the top five sites and agents; 'top_sites' and 'top_agents' return the public leaderboards ranked by agent visits; 'boosts' returns the boosted-content feed; 'featured' returns the featured brand and active brand agents; 'ai_search' returns the full AI-search KPI block with the engine mix. Network-wide aggregates only — no owner identity, contact details or private per-site analytics. This replaces get_top_sites, get_top_agents, get_boost_feed, get_featured_brands and get_ai_search_data.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "find_brands",
      "title": "Find a brand in the agent resolution index",
      "description": "Search Robauto's brand resolution index by name or domain and return the matching domains with category, agent readiness score, how many contact and policy details are currently published, and the canonical profile URL. Use this first when you only know a company's name.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "get_brand_profile",
      "title": "Full agent resolution profile for one domain",
      "description": "Return everything published for one brand domain: official website, category, agent readiness, whether the brand claimed the profile, freshness counts, and every contact and policy detail with its source page, last-checked date and method (crawled, submitted, verified or reported). Nothing is withheld for age; the source URL and last-checked date stay so you can re-check anything yourself.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "get_brand_contacts",
      "title": "Support, dispute, escalation, legal and unsubscribe routes",
      "description": "Return only the contact routes for a brand domain: support, dispute or chargeback, escalation, legal notices, and unsubscribe / opt-out (unsubscribe URL, email preferences, opt-out method, do-not-sell and data-deletion routes). Role mailboxes only, never a named individual. Every route carries its source page and last-checked date; nothing is withheld for age.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "get_brand_policies",
      "title": "Returns, refunds, shipping, warranty, privacy and AI-agent policies",
      "description": "Return the published policy pages for a brand domain: returns and refunds (with the refund window in days when known), shipping, warranty, cancellation, privacy, terms and any stated AI-agent policy. Every policy carries its source page and last-checked date. Read the policy before transacting on a human's behalf.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "get_brand_agent_endpoints",
      "title": "MCP server and agent-to-agent endpoints for a domain",
      "description": "Return the machine-to-machine entry points a brand publishes for agents: its MCP server endpoint and MCP manifest, its agent card (A2A / .well-known/agent-card.json), any ChatGPT or OpenAI connector it exposes, its agent-facing API docs (OpenAPI), how an agent signs in (auth discovery), and its agent payments endpoint (x402 / ACP / AP2). Each value carries the page it came from and the day it was last checked; nothing is withheld for age. Prefer these endpoints over scraping the website.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "report_contact_outcome",
      "title": "Report whether a published contact route actually worked",
      "description": "Tell Robauto whether a route from get_brand_contacts or get_brand_policies actually worked. Reports are evidence, never truth: they are logged against your client id, counted, and a route several independent clients report broken is queued for a human verifier. Nothing you report overwrites a published value on its own.",
      "annotations": {
        "readOnlyHint": false
      },
      "cost": "free"
    },
    {
      "name": "submit_brand",
      "title": "Add or update a brand in the index in one call",
      "description": "Add a brand to the resolution index, or fill in fields it is missing — identity plus every contact, opt-out and policy field in a single call. Built for crawling agents: read a company's own pages, then send what you found. Every field must arrive with the page you read it from, and that page must be on the brand's own domain — no source, no store. Values land with method 'submitted' and are queued for a human check; they never overwrite a human-verified value. Only role mailboxes are stored, never a named individual. Leave a field out rather than guessing it. Pass `brands` to submit up to 20 domains per call.",
      "annotations": {
        "readOnlyHint": false
      },
      "cost": "free"
    },
    {
      "name": "agent_scan",
      "title": "Agent Scan — full agent-readiness audit",
      "description": "Run Robauto's Agent Scan on any public domain: 25 read-only checks across four levels (Signal Basics, Technical Groundwork, Agent Integration, Agentic Commerce) covering robots.txt, sitemap, llms.txt, structured data, Link response headers, API catalog, OpenAPI, markdown content negotiation, Auth.md and OAuth/OIDC discovery, A2A agent card, MCP server card, agent skills, Content Signals, WebMCP, DNS-AID, RFC 9421 signatures, x402, ACP, AP2, MPP and UCP. Returns a 0-100 readiness score, per-level scores, and for every gap an implementation fix plus a paste-ready agent prompt. Reads only public pages and discovery files and changes nothing on the target site.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "signal_scan",
      "title": "Signal Strength scan for any domain",
      "description": "Scan any public domain and return its Signal Strength (0-100) plus per-file findings (robots.txt, sitemap.xml, llms.txt, security.txt, ai-plugin.json, HTTPS/redirect health). Canonical response field is signal_strength.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free",
      "deprecated": true,
      "replacedBy": "agent_scan",
      "removalDate": "2027-03-01"
    },
    {
      "name": "get_ai_search_data",
      "title": "Get Robauto's public AI search data",
      "description": "Fetch Robauto's aggregate AI-search KPIs across the network. Returns a compact summary by default, with traffic split into bot classes (llm_crawler, ai_referral, search_bot, headless, other_bot) so classic SEO crawlers and headless browsers are never counted as AI search. Pass view='engines' | 'timeseries' | 'full' for more detail. Network aggregates only — never one site's private stats.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free",
      "deprecated": true,
      "replacedBy": "get_network_data",
      "removalDate": "2027-03-01"
    },
    {
      "name": "get_top_sites",
      "title": "Top websites by agent traffic",
      "description": "Return the public Brand Leaderboard — up to the top 100 tracked websites ranked by agent visits in the last 7 days, with 24h and all-time agent visit counts, whether the site publishes an agent page, and its public social profiles. This is the same data published on https://robauto.ai/leaderboard; no owner identity, contact details or private analytics are included.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free",
      "deprecated": true,
      "replacedBy": "get_network_data",
      "removalDate": "2027-03-01"
    },
    {
      "name": "get_top_agents",
      "title": "Top AI agents and crawlers",
      "description": "Return the public Agent Leaderboard — up to the top 100 AI agents and crawlers ranked by visits across the Robauto network, with 24h and 7-day visits, how many distinct sites each agent touched, its bot class (llm_crawler, ai_referral, search_bot, headless, other_bot) and when it was last seen. Counts are network-wide aggregates; no per-site breakdown is returned.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free",
      "deprecated": true,
      "replacedBy": "get_network_data",
      "removalDate": "2027-03-01"
    },
    {
      "name": "get_boost_feed",
      "title": "Boosted content feed",
      "description": "Return the public boost feed: URLs that brands have put into agent focus, with the destination, platform, status and the day it was boosted, plus network aggregates (total boosts, boosts in the last 30 days, distinct domains). Boost spend, owner identity and per-site performance are never exposed.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free",
      "deprecated": true,
      "replacedBy": "get_network_data",
      "removalDate": "2027-03-01"
    },
    {
      "name": "get_featured_brands",
      "title": "Featured brands and brand agents",
      "description": "Return the brand layer of the network: the brand currently holding the featured placement, recent featured runs, and the sites running an active brand agent with its public intro. Includes aggregate placement impressions and clicks for the shared featured slot. No advertiser contact details, bids, spend or per-site analytics are exposed.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free",
      "deprecated": true,
      "replacedBy": "get_network_data",
      "removalDate": "2027-03-01"
    },
    {
      "name": "search_products",
      "title": "Search products across the network",
      "description": "Search products across every Robauto brand that has connected an approved product feed. Results are the brand's DECLARED layer — catalog data the brand publishes itself (Google Merchant Center feed, Schema.org Product/Offer JSON-LD, or /products.json) — never Robauto's observed scan data. Every row carries its layer label, fetched_at, the brand's /p/ agent page, a UTM-tagged checkout URL and which commerce protocols the brand supports (deep-link, prefilled checkout, x402, ACP, AP2, MPP, UCP). Price and availability are always returned with fetched_at attached; settle against the brand's checkout URL, never a cached number.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "get_brand_products",
      "title": "One brand's product catalog",
      "description": "Return the declared product catalog for a single domain: title, description, image, category, price, availability, UTM-tagged checkout URL, the brand's /p/ agent page and the commerce protocols the brand supports. Brand-submitted data, labelled 'declared', stamped with fetched_at; nothing is withheld for age.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "list_learn_content",
      "title": "Robauto Learn courses and lessons",
      "description": "List the Robauto Learn micro-courses (https://robauto.ai/learn) with their slug, title, estimated minutes and lesson count. Pass a course slug to get every lesson in order with its headline, body text, source name, source URL and canonical lesson URL, so an agent can cite or teach the material directly. Public educational content — no user data involved.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "list_repos",
      "title": "Robauto public source repositories",
      "description": "List Robauto's public git repositories with their clone URL, what each one contains, and the install command for the MCP server. Use this to fetch the authoritative tool contracts and client config instead of guessing them.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "register_site_for_human",
      "title": "Register a site for a human",
      "description": "Invite a human to create a Robauto account and start tracking their site. Emails the invite and creates no site record until the human registers. Always pass a real agent_id for attribution.",
      "annotations": {
        "readOnlyHint": false
      },
      "cost": "free"
    },
    {
      "name": "soul_verify",
      "title": "Verify a Robot Soul",
      "description": "Request a one-time Robot Soul challenge, then submit the agent's Ed25519 public key and signature to receive a 90-day scoped bearer token.",
      "annotations": {
        "readOnlyHint": false
      },
      "cost": "free"
    },
    {
      "name": "soul_recall",
      "title": "Recall soul memory",
      "description": "Read an agent's persistent Robot Soul memory using the bearer token returned by soul_verify. Optionally return one semantic key.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "free"
    },
    {
      "name": "soul_remember",
      "title": "Write soul memory",
      "description": "Merge structured facts into an agent's durable Robot Soul memory. Requires the bearer token from soul_verify and costs $0.01 USDC over x402.",
      "annotations": {
        "readOnlyHint": false
      },
      "cost": "$0.01 USDC"
    },
    {
      "name": "soul_pay",
      "title": "Soul payment",
      "description": "Return Robot Soul tiers, per-action USDC pricing, and x402 payment terms. Use this before calling a paid soul action.",
      "annotations": {
        "readOnlyHint": true
      },
      "cost": "x402 (USDC on Base)"
    }
  ],
  "variants": [
    {
      "name": "authenticated",
      "url": "https://mcp.robauto.ai/auth",
      "tools": [
        "whoami",
        "list_my_sites",
        "get_my_site_traffic",
        "get_my_scan"
      ],
      "authentication": "oauth2.1",
      "authorizationServer": "https://hkeytqaukllckucnhzey.supabase.co/auth/v1",
      "resourceMetadata": "https://robauto.ai/.well-known/oauth-protected-resource",
      "dynamicClientRegistration": true,
      "description": "Owner-scoped MCP surface. Requires OAuth 2.1 (dynamic client registration supported); every read runs under row-level security as the signed-in Robauto account, so it returns only that account's sites, their private agent-vs-human traffic and their stored scan findings."
    }
  ],
  "dataPolicy": "Robauto never exposes user contact details, account identities, or a single site's proprietary analytics over MCP. Site- and agent-level traffic is published only where the site owner already publishes it (the public leaderboards), and everything else is returned as network aggregates.",
  "repositories": [
    {
      "name": "robauto-ai/mcp",
      "url": "https://github.com/robauto-ai/mcp",
      "role": "contract-of-record",
      "description": "The Robauto MCP server contract of record: docs/manifest.json is the generated machine-readable tool contract (names, input schemas, kind, cost, deprecations) for the live endpoint, alongside client config and deprecation policy. Generated from src/lib/mcp/catalog.ts — never hand-edited."
    },
    {
      "name": "robauto-ai/dsh-growth",
      "url": "https://github.com/robauto-ai/dsh-growth",
      "role": "client-sdk",
      "description": "Developer toolkit for the Signal/growth endpoints — reference stdio client, npm SDK and agent-page helpers. It does NOT define the tool contract; the contract of record is robauto-ai/mcp docs/manifest.json."
    }
  ]
}
