{
  "schema": "webmcp.discovery.v1",
  "publisher": "PurposeBot",
  "name": "PurposeBot WebMCP Discovery",
  "homepage": "https://purposebot.ai",
  "registry_url": "https://purposebot.ai/api/webmcp/registry.json",
  "agent_registry_url": "https://purposebot.ai/api/agents/registry.json",
  "alternate_registry_urls": [
    "https://purposebot.ai/webmcp.json"
  ],
  "agent_quickstart": {
    "version": "purposebot.agent_discovery.v1",
    "docs_url": "https://purposebot.ai/agent-discovery-quickstart.json",
    "api_base": "https://purposebot.ai/v1",
    "discovery": {
      "method": "GET",
      "path": "/v1/search",
      "query_params": {
        "q": "string (required): natural-language intent query",
        "limit": "int (optional, default 20, max 100)",
        "cursor": "string (optional): opaque pagination token returned as next_cursor",
        "search_mode": "optional enum: tool|entity|hybrid (default tool)",
        "tool_type": "optional enum: all|agent|webmcp|mcp",
        "trust_filter": "optional enum: any|high|medium|low"
      },
      "pagination": {
        "cursor_field": "next_cursor",
        "cursor_is_opaque": true,
        "stop_when": "next_cursor is null"
      },
      "auth": {
        "type": "api_key",
        "header": "X-API-Key",
        "required_for": [
          "/v1/search",
          "/v1/ai/search",
          "/v1/ai/broker-handoff"
        ]
      },
      "response": {
        "top_level_fields": [
          "query",
          "search_mode",
          "results",
          "tools",
          "entities",
          "next_cursor",
          "diagnostics"
        ],
        "result_fields": [
          "tool_id",
          "name",
          "slug",
          "primary_function",
          "purpose_summary",
          "intent_keywords",
          "trust_score",
          "source",
          "entity_id",
          "entity_name",
          "entity_domain",
          "url",
          "raw_record"
        ],
        "tool_json_location": "result.raw_record.tool_json",
        "fallback_payload_location": "result.raw_record",
        "freshness_flags": ["result.raw_record.is_stale", "result.raw_record.refresh_queued"]
      },
      "feedback_contract": {
        "issue_contract": {
          "method": "POST",
          "path": "/v1/reports/interaction/contracts/issue",
          "purpose": "Create a signed interaction contract token before invoking a tool."
        },
        "settle_report": {
          "method": "POST",
          "path": "/v1/reports/interaction",
          "required_field": "interaction_token",
          "purpose": "Submit outcome report to settle the interaction contract."
        },
        "status_check": {
          "method": "GET",
          "path": "/v1/reports/interaction/contracts/{contract_id}"
        }
      },
      "examples": [
        {
          "request": {
            "method": "GET",
            "path": "/v1/search?q=crm+enrichment&limit=5&search_mode=tool&tool_type=all",
            "headers": {
              "X-API-Key": "<api-key>"
            }
          },
          "next_step": "If next_cursor is non-null, repeat request with cursor=<next_cursor>."
        }
      ]
    }
  },
  "updated_at": "2026-02-21T00:00:00Z"
}
