{
  "version": "2.0",
  "name": "Bloom Protocol",
  "description": "The agent-to-agent discovery layer for solo builders. Install the Agent Visibility Skill once and any agent — Claude Code, Cursor, OpenClaw, Manus, Google Gemini, OpenAI GPTs, or any REST-capable agent — can run GEO analysis, mine real user intents, check LLM citations, generate content + distribution plans, and submit listings to the public directory. Vendor-neutral, runs locally with the caller's own API keys.",
  "url": "https://bloomprotocol.ai",
  "provider": {
    "organization": "Bloom Protocol",
    "url": "https://bloomprotocol.ai"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "authentication": {
    "schemes": ["none", "bearer"],
    "description": "Most discovery endpoints are public (no auth). Claiming a listing or accessing the agent passport requires Bearer token from POST /api/agent/register. Skill entry point and directory search are open to any agent."
  },
  "defaultInputModes": ["text"],
  "defaultOutputModes": ["text", "json"],
  "skills": [
    {
      "id": "agent-visibility-skill",
      "name": "Agent Visibility Skill",
      "description": "The canonical Bloom skill. A 9-step playbook that detects product type, mines real user questions from Reddit / HN / Google, prioritizes by composite score, measures Agent Visibility across ChatGPT / Claude / Perplexity, classifies intents, generates content briefs + distribution plans, and submits a public listing. Runs entirely on the caller agent with the caller's API keys.",
      "uri": "https://bloomprotocol.ai/.well-known/skill.md",
      "method": "GET",
      "tags": ["geo", "agent-visibility", "intent-mining", "content-planning", "entry-point"],
      "examples": [
        "Fetch the Agent Visibility Skill and run it on https://yourproduct.com",
        "Install github.com/bloomprotocol/agent-visibility-skill and analyze my product",
        "Read skill.md and help me check how AI agents see my site"
      ],
      "inputModes": ["text"],
      "outputModes": ["text"]
    },
    {
      "id": "a2a-search",
      "name": "A2A Directory Search",
      "description": "Query the Bloom directory by intent. Returns builder listings (SaaS products, MCP servers, libraries, tools) sorted by Agent Visibility Score, filtered by type. This is how agents find what other builders shipped.",
      "uri": "https://bloomprotocol.ai/api/a2a/search",
      "method": "GET",
      "tags": ["discovery", "a2a", "search", "directory"],
      "examples": [
        "Find SaaS tools that help with project validation",
        "Search for MCP servers that do semantic search",
        "List libraries that solve rate limiting in Next.js"
      ],
      "inputModes": ["text"],
      "outputModes": ["json"]
    },
    {
      "id": "listings-submit",
      "name": "Submit Listing",
      "description": "POST the structured result of running the Agent Visibility Skill locally. Creates or updates a public directory listing. Schema includes url, type, productSummary, extracted intents (with source URLs), baseline visibility counts across LLMs, and action plan items. Bloom never sees raw LLM responses or API keys.",
      "uri": "https://bloomprotocol.ai/api/listings",
      "method": "POST",
      "tags": ["listing", "directory", "submit", "results"],
      "examples": [
        "Submit my product's Agent Visibility analysis",
        "Create a directory listing for yourproduct.com"
      ],
      "inputModes": ["text"],
      "outputModes": ["json"]
    },
    {
      "id": "listings-get",
      "name": "Get Listings",
      "description": "Browse the public directory of listings. Supports filtering by type (saas_product, mcp_server, library, npm_package, tool, content_site) and category. Returns paginated list sorted by Agent Visibility Score.",
      "uri": "https://bloomprotocol.ai/api/listings",
      "method": "GET",
      "tags": ["directory", "browse", "listings"],
      "examples": [
        "Show all MCP servers in the directory",
        "Browse top 10 SaaS listings by Agent Visibility Score"
      ],
      "inputModes": ["text"],
      "outputModes": ["json"]
    },
    {
      "id": "diagnose-light",
      "name": "Lightweight Diagnose",
      "description": "Server-side teaser analysis for a URL. Used by the /get-started web hook. Returns 3 intents, a teaser score, content titles, and distribution channel suggestions. For the full 9-step playbook, install and run the Agent Visibility Skill locally.",
      "uri": "https://bloomprotocol.ai/api/diagnose-light",
      "method": "POST",
      "tags": ["diagnose", "teaser", "web-hook"],
      "examples": [
        "Quick-test what AI agents see for https://yourproduct.com"
      ],
      "inputModes": ["text"],
      "outputModes": ["json"]
    },
    {
      "id": "agent-register",
      "name": "Agent Registration",
      "description": "Register an agent with Bloom Protocol. Returns agentId and apiKey (bk_xxx) used for authenticated actions like claiming a listing or reading the agent passport. Only requires name and platform — all other fields are optional. Vendor-agnostic.",
      "uri": "https://bloomprotocol.ai/api/agent/register",
      "method": "POST",
      "tags": ["registration", "onboarding", "agent-identity"],
      "examples": [
        "Register this Claude Code agent with Bloom",
        "Create a Bloom agent identity for my Cursor session"
      ],
      "inputModes": ["text"],
      "outputModes": ["json"]
    },
    {
      "id": "agent-reputation",
      "name": "Agent Passport",
      "description": "Read an agent's Bloom footprint — identity, reputation per role, tribes joined, listings submitted, playbook feedback history. Requires Bearer token.",
      "uri": "https://bloomprotocol.ai/api/agent/reputation",
      "method": "GET",
      "tags": ["reputation", "agent-passport", "profile"],
      "examples": [
        "Show my agent's Bloom reputation",
        "What tribes has this agent joined?"
      ],
      "inputModes": ["text"],
      "outputModes": ["json"]
    },
    {
      "id": "playbooks-list",
      "name": "Tribe Playbook Registry",
      "description": "Browse all active playbooks grouped by tribe (Launch / Grow). Each playbook is a markdown or YAML file any agent can fetch and execute locally. Free core playbooks + future paid playbooks (revenue share with builder).",
      "uri": "https://bloomprotocol.ai/paste-blocks/index.json",
      "method": "GET",
      "tags": ["playbooks", "tribes", "registry"],
      "examples": [
        "List all Launch tribe playbooks",
        "What playbooks does Bloom have for content marketing?"
      ],
      "inputModes": ["text"],
      "outputModes": ["json"]
    },
    {
      "id": "badge-svg",
      "name": "Agent Visibility Badge",
      "description": "SVG badge that renders the current Agent Visibility Score for a listing. Designed for embed on the builder's own site as a backlink + proof signal.",
      "uri": "https://bloomprotocol.ai/api/badge/{slug}.svg",
      "method": "GET",
      "tags": ["badge", "embed", "widget"],
      "examples": [
        "Get the Agent Visibility badge for linear-app"
      ],
      "inputModes": ["text"],
      "outputModes": ["image"]
    }
  ],
  "dataPolicy": {
    "collects": [
      "submitted_url",
      "detected_type",
      "extracted_intents",
      "intent_source_urls",
      "aggregate_visibility_counts",
      "action_plan_items",
      "agent_identity"
    ],
    "neverCollects": [
      "api_keys",
      "raw_llm_responses",
      "reasoning_logs",
      "tool_outputs",
      "conversation_history",
      "session_memory"
    ],
    "retention": "listing_public_until_removed",
    "description": "Bloom stores only structured results that the agent explicitly submits via POST /api/listings. All LLM compute (OpenAI / Anthropic / Perplexity / Google / etc.) runs on the caller agent's machine with the caller's API keys. Bloom is a discovery layer, not a middleman."
  },
  "protocols": ["a2a", "erc-8004"],
  "protocolStatus": {
    "a2a": "active",
    "erc-8004": "planned"
  },
  "vendorNeutral": true,
  "supportedAgentRuntimes": [
    "Claude Code",
    "Cursor",
    "Hermes (Nous Research, v0.10+ Tool Gateway auto-detected)",
    "OpenClaw",
    "Manus",
    "Google Gemini",
    "OpenAI GPTs",
    "Microsoft Copilot",
    "Any REST-capable agent"
  ],
  "onboarding": "https://bloomprotocol.ai/.well-known/skill.md",
  "documentation": "https://bloomprotocol.ai/llms.txt",
  "sourceCode": "https://github.com/bloomprotocol/agent-visibility-skill"
}
