{
  "schemaVersion": "0.2.0",
  "name": "tbv-agents-mcp",
  "title": "TBV Agents MCP",
  "transport": {
    "local": {
      "type": "stdio",
      "command": "tbv-agent",
      "args": ["mcp", "serve"],
      "messageFraming": "newline-delimited-jsonrpc"
    },
    "remote": {
      "type": "streamable-http",
      "status": "planned",
      "url": "https://agents.babylonlabs.io/mcp",
      "auth": "oauth2-pkce-protected-resource-metadata"
    }
  },
  "capabilities": {
    "tools": { "listChanged": false },
    "resources": { "subscribe": false, "listChanged": false },
    "prompts": { "listChanged": false }
  },
  "securitySchemes": [{ "type": "noauth" }],
  "defaultAnnotations": {
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "outputSchema": {
    "type": "object",
    "required": ["product"],
    "additionalProperties": true,
    "properties": {
      "product": { "type": "string" },
      "command": { "type": "string" },
      "status": { "type": "string" }
    }
  },
  "tools": [
    { "name": "get_networks", "title": "Get Networks", "description": "Use this when an agent needs supported TBV network metadata.", "inputSchema": { "type": "object", "properties": {} } },
    { "name": "get_network_config", "title": "Get Network Config", "description": "Use this when an agent needs one TBV network config.", "inputSchema": { "type": "object", "required": ["network_id"], "properties": { "network_id": { "type": "string" } } } },
    { "name": "get_protocol_params", "title": "Get Protocol Params", "description": "Use this when an agent needs protocol limits and timing parameters for a network.", "inputSchema": { "type": "object", "required": ["network_id"], "properties": { "network_id": { "type": "string" } } } },
    { "name": "get_wallet_capabilities", "title": "Get Wallet Capabilities", "description": "Use this when an agent needs the wallet capability matrix.", "inputSchema": { "type": "object", "properties": {} } },
    { "name": "list_flows", "title": "List Flows", "description": "Use this when an agent needs available TBV flow specs.", "inputSchema": { "type": "object", "properties": {} } },
    { "name": "get_flow_spec", "title": "Get Flow Spec", "description": "Use this when an agent needs one TBV flow spec.", "inputSchema": { "type": "object", "required": ["flow_id"], "properties": { "flow_id": { "type": "string" } } } },
    { "name": "quote_pegin", "title": "Quote Peg-In", "description": "Use this when an agent needs a public-testnet peg-in quote.", "inputSchema": { "type": "object", "required": ["network_id", "amount"], "properties": { "network_id": { "type": "string" }, "amount": { "type": "string", "pattern": "^[0-9]+(\\.[0-9]{1,8})?btc$" } } } },
    { "name": "simulate_flow", "title": "Simulate Flow", "description": "Use this when an agent needs to simulate a TBV flow without signing.", "inputSchema": { "type": "object", "required": ["network_id", "flow_id"], "properties": { "network_id": { "type": "string" }, "flow_id": { "type": "string" }, "amount": { "type": "string" } } } },
    { "name": "get_operation_status", "title": "Get Operation Status", "description": "Use this when an agent needs status for a long-running testnet operation or baby-tester run.", "inputSchema": { "type": "object", "required": ["operation_id"], "properties": { "operation_id": { "type": "string" } } } },
    { "name": "list_recent_operations", "title": "List Recent Operations", "description": "Use this when an agent needs recent local public-testnet baby-tester operations.", "inputSchema": { "type": "object", "properties": { "environment": { "type": "string" }, "limit": { "type": "integer", "minimum": 1, "maximum": 100 } } } },
    { "name": "faucet_status", "title": "Faucet Status", "description": "Use this when an agent needs TBV public-testnet faucet status and agent-readiness blockers.", "inputSchema": { "type": "object", "properties": {} } },
    { "name": "faucet_claim_plan", "title": "Faucet Claim Plan", "description": "Use this when an agent needs a safe faucet claim plan without bypassing Turnstile.", "inputSchema": { "type": "object", "required": ["signet_address", "sepolia_address"], "properties": { "signet_address": { "type": "string" }, "sepolia_address": { "type": "string" }, "btc_amount": { "type": "string" }, "sepolia_eth_amount": { "type": "string" }, "mock_usdc_amount": { "type": "string" }, "voucher": { "type": "string" } } } },
    { "name": "faucet_get_policy", "title": "Faucet Policy", "description": "Use this when an agent needs the TBV agent faucet policy, trust tiers, and allowed flow assets.", "inputSchema": { "type": "object", "properties": {} } },
    { "name": "faucet_get_quota", "title": "Faucet Quota", "description": "Use this when an agent needs its current TBV agent faucet quota contract.", "inputSchema": { "type": "object", "properties": { "agent_id": { "type": "string" }, "subject": { "type": "string" }, "trust_tier": { "type": "string" } } } },
    {
      "name": "faucet_request_voucher",
      "title": "Request Faucet Voucher",
      "description": "Use this when an authenticated testnet agent needs a flow-scoped faucet voucher.",
      "securitySchemes": [
        { "type": "oauth2", "scopes": ["tbv:testnet:faucet.request"] },
        { "type": "apiKey", "name": "X-TBV-Agent-Voucher", "in": "header" }
      ],
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "inputSchema": { "type": "object", "required": ["agent_id", "subject", "flow_type", "operation_id", "signet_address", "sepolia_address", "wallet_proof", "idempotency_key"], "properties": { "agent_id": { "type": "string" }, "subject": { "type": "string" }, "trust_tier": { "type": "string" }, "network_id": { "type": "string" }, "flow_type": { "type": "string" }, "operation_id": { "type": "string" }, "signet_address": { "type": "string" }, "sepolia_address": { "type": "string" }, "wallet_proof": { "oneOf": [{ "type": "string" }, { "type": "object", "additionalProperties": true }] }, "operation_evidence": { "oneOf": [{ "type": "string" }, { "type": "object", "additionalProperties": true }] }, "idempotency_key": { "type": "string" }, "assets": { "type": "array", "items": { "type": "string" } } } }
    },
    {
      "name": "faucet_claim_voucher",
      "title": "Claim Faucet Voucher",
      "description": "Use this when an agent needs to claim an issued TBV faucet voucher.",
      "securitySchemes": [
        { "type": "oauth2", "scopes": ["tbv:testnet:faucet.claim"] },
        { "type": "apiKey", "name": "X-TBV-Agent-Voucher", "in": "header" }
      ],
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "inputSchema": { "type": "object", "required": ["voucher_id", "idempotency_key"], "properties": { "voucher_id": { "type": "string", "pattern": "^fv_[a-f0-9]{24}$" }, "idempotency_key": { "type": "string" }, "payout_mode": { "type": "string" } } }
    },
    { "name": "faucet_get_receipt", "title": "Get Faucet Receipt", "description": "Use this when an agent needs a signed TBV faucet receipt by id.", "inputSchema": { "type": "object", "required": ["receipt_id"], "properties": { "receipt_id": { "type": "string" } } } },
    { "name": "live_readiness", "title": "Live Readiness", "description": "Use this when an agent needs to check public network and faucet reachability.", "inputSchema": { "type": "object", "properties": { "network_id": { "type": "string" } } } },
    { "name": "toolkit_readiness", "title": "Toolkit Readiness", "description": "Use this when an agent needs the production readiness checklist for TBV Agents.", "inputSchema": { "type": "object", "properties": {} } },
    { "name": "agent_artifacts", "title": "Agent Artifacts", "description": "Use this when an agent needs downloadable or public agent artifacts for this toolkit.", "inputSchema": { "type": "object", "properties": {} } }
  ],
  "resources": [
    { "uri": "tbv://docs/llms", "name": "TBV Agents llms.txt", "mimeType": "text/markdown" },
    { "uri": "tbv://docs/llms-full", "name": "TBV Agents full agent guide", "mimeType": "text/markdown" },
    { "uri": "tbv://data/network-config", "name": "TBV network config", "mimeType": "application/json" },
    { "uri": "tbv://data/flows", "name": "TBV flow specs", "mimeType": "application/json" },
    { "uri": "tbv://docs/mcp-client-setup", "name": "MCP client setup", "mimeType": "text/markdown" },
    { "uri": "tbv://docs/agent-faucet", "name": "Agent faucet", "mimeType": "text/markdown" }
  ],
  "prompts": [
    { "name": "plan_testnet_pegin_borrow", "title": "Plan Testnet Peg-In And Borrow" },
    { "name": "triage_failed_operation", "title": "Triage Failed TBV Operation" }
  ]
}
