{
  "protocolVersion": "0.3.0",
  "name": "Ivy (BlueChatBox)",
  "description": "Ivy is BlueChatBox's built-in AI. Over A2A she answers other agents' questions about BlueChatBox: what it is, how people join, and how agents connect to it (MCP, OAuth). Public information only; she can't see anyone's chats or act for anyone.",
  "version": "1.0.0",
  "url": "https://bluechatbox.com/a2a",
  "preferredTransport": "JSONRPC",
  "supportedInterfaces": [
    {
      "url": "https://bluechatbox.com/a2a",
      "transport": "JSONRPC",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "additionalInterfaces": [
    {
      "url": "https://bluechatbox.com/a2a",
      "transport": "JSONRPC"
    }
  ],
  "provider": {
    "organization": "BlueChatBox",
    "url": "https://bluechatbox.com"
  },
  "iconUrl": "https://bluechatbox.com/favicon.svg",
  "documentationUrl": "https://bluechatbox.com/agents",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain"
  ],
  "skills": [
    {
      "id": "bluechatbox-info",
      "name": "About BlueChatBox",
      "description": "What BlueChatBox is, its features (Clubs, group chats, DMs, Ivy and Juno), platforms, privacy, and how people join.",
      "tags": [
        "bluechatbox",
        "messaging",
        "group chat",
        "faq"
      ],
      "examples": [
        "What is BlueChatBox?",
        "How do I join a group from an invite link?",
        "Is there an Android app?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain"
      ]
    },
    {
      "id": "agent-onboarding",
      "name": "Connecting an agent to BlueChatBox",
      "description": "How an AI agent connects to BlueChatBox on a user's behalf: the MCP server, OAuth sign-in with dynamic client registration, and the available tools.",
      "tags": [
        "mcp",
        "oauth",
        "agents",
        "integration"
      ],
      "examples": [
        "How can my agent read and send BlueChatBox messages for my user?",
        "What MCP tools does BlueChatBox have?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain"
      ]
    },
    {
      "id": "own-ivy",
      "name": "Your own Ivy",
      "description": "Signed in with OAuth (same issuer as the MCP server), talk to the user's own Ivy: messages land in their Ivy chat labeled as from your agent, and Ivy replies with her memories, reminders and tools. contextId is the chat id. Optional message.metadata.agent_name labels you.",
      "tags": [
        "assistant",
        "personal",
        "oauth"
      ],
      "examples": [
        "Remind me to call mom at 6pm",
        "What did I ask you to remember about my trip?"
      ],
      "inputModes": [
        "text/plain"
      ],
      "outputModes": [
        "text/plain"
      ],
      "security": [
        {
          "bluechatbox_oauth": [
            "openid",
            "email",
            "profile"
          ]
        }
      ]
    }
  ],
  "securitySchemes": {
    "bluechatbox_oauth": {
      "type": "oauth2",
      "description": "BlueChatBox sign-in (authorization code + PKCE, dynamic client registration). Without a token you get public Ivy.",
      "oauth2MetadataUrl": "https://jqzcxesyummyosrpmzcx.supabase.co/.well-known/oauth-authorization-server/auth/v1",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://jqzcxesyummyosrpmzcx.supabase.co/auth/v1/oauth/authorize",
          "tokenUrl": "https://jqzcxesyummyosrpmzcx.supabase.co/auth/v1/oauth/token",
          "refreshUrl": "https://jqzcxesyummyosrpmzcx.supabase.co/auth/v1/oauth/token",
          "scopes": {
            "openid": "Sign in",
            "email": "Your email address",
            "profile": "Your basic profile"
          }
        }
      }
    }
  }
}