{
  "$comment": "GENERATED FROM api/_tools/<slug>/route.mjs — do not edit by hand",
  "type": "https://eips.ethereum.org/EIPS/eip-8257#tool-manifest-v1",
  "name": "mcp-first-call-card",
  "description": "Inspect a public MCP Server Card before an agent connects. Fetches /.well-known/mcp.json, extracts endpoint, transport, capabilities, tool/resource/prompt counts, auth/payment hints, and returns the first safe initialize request plus an optional live initialize probe. Built for cold-agent onboarding, first-call affordances, and payment/refusal legibility. HTTPS-only with DNS/private-network SSRF guards.",
  "endpoint": "https://www.clawbots.org/api/tools/mcp-first-call-card",
  "image": "https://www.clawbots.org/tools/icons/mcp-first-call-card.png",
  "featuredImage": "https://www.clawbots.org/tools/featured/mcp-first-call-card.png",
  "inputs": {
    "type": "object",
    "properties": {
      "origin": {
        "type": "string",
        "description": "Public HTTPS origin. The tool fetches <origin>/.well-known/mcp.json. Private hosts and IP literals are rejected.",
        "maxLength": 300
      },
      "cardUrl": {
        "type": "string",
        "description": "Explicit public HTTPS MCP Server Card URL. Private hosts and IP literals are rejected.",
        "maxLength": 500
      },
      "probeInitialize": {
        "type": "boolean",
        "default": true,
        "description": "If true, POST a safe MCP initialize request to the card endpoint. It does not invoke tools or send secrets."
      },
      "timeoutMs": {
        "type": "integer",
        "minimum": 1000,
        "maximum": 12000,
        "default": 8000,
        "description": "Per-network-call timeout in milliseconds."
      }
    },
    "additionalProperties": false,
    "anyOf": [
      {
        "required": [
          "origin"
        ]
      },
      {
        "required": [
          "cardUrl"
        ]
      }
    ]
  },
  "outputs": {
    "type": "object",
    "properties": {
      "cardUrl": {
        "type": "string",
        "description": "Fetched MCP Server Card URL."
      },
      "fetchedAt": {
        "type": "string",
        "format": "date-time"
      },
      "verdict": {
        "type": "string",
        "enum": [
          "ready",
          "partial",
          "blocked"
        ],
        "description": "ready when card shape and initialize probe are usable; partial/blocked identify legibility gaps."
      },
      "problems": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "server": {
        "type": "object",
        "description": "Server name/title/version/schema/protocol summary."
      },
      "endpoint": {
        "type": [
          "string",
          "null"
        ],
        "description": "Absolute MCP endpoint derived from the card."
      },
      "transport": {
        "type": "object",
        "description": "Transport type and declared endpoint."
      },
      "capabilities": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Declared top-level MCP capabilities."
      },
      "counts": {
        "type": "object",
        "description": "Counts of listed tools/resources/prompts in the card."
      },
      "samples": {
        "type": "object",
        "description": "First listed tools/resources/prompts, bounded for context."
      },
      "authPayment": {
        "type": "object",
        "description": "Cheap hints for x402, Tool Pass/SIWE/EIP-3009, API key, or declared security scheme language."
      },
      "firstSafeCall": {
        "type": "object",
        "description": "Copyable initialize request that should not spend, mutate, or leak secrets."
      },
      "initializeProbe": {
        "type": "object",
        "description": "Live response summary for the safe initialize probe, if enabled."
      },
      "evidence": {
        "type": "object",
        "description": "Fetch status, bytes, latency, and SSRF guard evidence."
      }
    },
    "required": [
      "cardUrl",
      "fetchedAt",
      "verdict",
      "problems",
      "server",
      "endpoint",
      "transport",
      "capabilities",
      "counts",
      "samples",
      "authPayment",
      "firstSafeCall",
      "initializeProbe",
      "evidence"
    ]
  },
  "creatorAddress": "0xef2cc7d15d3421629f93ffa39727f14179f31c75",
  "tags": [
    "mcp",
    "agent",
    "server-card",
    "first-call",
    "preflight",
    "x402",
    "onboarding"
  ],
  "pricing": [
    {
      "amount": "0.02",
      "asset": "USDC",
      "recipient": "0xef2cc7d15d3421629f93ffa39727f14179f31c75",
      "protocol": "x402"
    }
  ],
  "authentication": [
    {
      "type": "siwe",
      "description": "Sign In With Ethereum. Holders of the Axiom Tool Pass NFT get free unlimited access. Sign a SIWE message proving wallet ownership; the server verifies your wallet holds the pass on-chain.",
      "header": "Authorization: SIWE <base64url(message)>.<0xsignature>",
      "passContract": "0xfc9ce3990f85fA1A3a0eE51a710642396a6Cad82",
      "chain": "base",
      "chainId": 8453,
      "collection": "https://opensea.io/collection/axiom-tool-pass"
    },
    {
      "type": "x402",
      "description": "Pay per call in USDC on Base via the x402 protocol. No account or API key needed.",
      "header": "x-payment: <x402 authorization>"
    }
  ],
  "onChain": {
    "registry": "0x265BB2DBFC0A8165C9A1941Eb1372F349baD2cf1",
    "chainId": 8453,
    "toolId": 307
  }
}
