{
  "schema": "agent-catalog/1.0",
  "name": "NetShow.AI",
  "version": "1.0.0",
  "description": "AI-native agent building platform. Build, deploy, and manage AI agents powered by OpenAI GPT, Anthropic Claude, and Google Gemini models.",
  "homepage": "https://app.netshow.ai",
  "documentation": "https://app.netshow.ai/docs/openapi",
  "openapi": "https://app.netshow.ai/openapi.yaml",
  "catalog_url": "https://app.netshow.ai/agent-catalog.json",
  "updated_at": "2026-09-29T00:00:00Z",
  "contact": {
    "url": "https://app.netshow.ai",
    "support": "https://app.netshow.ai/dashboard"
  },
  "authentication": {
    "type": "bearer",
    "description": "Laravel Sanctum Bearer token. Obtain from Settings → API Tokens at https://app.netshow.ai or via POST /api/user/login.",
    "header": "Authorization",
    "format": "Bearer <token>"
  },
  "base_urls": {
    "production": "https://app.netshow.ai/api"
  },
  "providers": [
    {
      "name": "openai",
      "display_name": "OpenAI",
      "models": ["gpt-6-sol", "gpt-realtime-2.1-mini"],
      "capabilities": ["chat", "voice_realtime", "reasoning", "vision"]
    },
    {
      "name": "anthropic",
      "display_name": "Anthropic",
      "models": ["claude-sonnet-5", "claude-opus-5-5"],
      "capabilities": ["chat", "tools", "thinking", "long_context"]
    },
    {
      "name": "google",
      "display_name": "Google",
      "models": ["gemini-3.1-pro-preview"],
      "capabilities": ["multimodal", "long_context"]
    },
    {
      "name": "elevenlabs",
      "display_name": "ElevenLabs",
      "capabilities": ["tts", "voice_cloning", "lip_sync_timestamps"]
    },
    {
      "name": "twilio",
      "display_name": "Twilio",
      "capabilities": ["phone_calls", "sms", "media_streams"]
    }
  ],
  "capabilities": [
    {
      "id": "claude_agent_sdk",
      "name": "Claude Agent SDK",
      "category": "ai_inference",
      "description": "Send prompts to Anthropic Claude Sonnet or Opus. Supports adaptive thinking, tool registry, named profiles, and Sonnet→Opus escalation bridge for complex tasks.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/anthropic/prompt",
          "summary": "Send a prompt to Claude",
          "auth": "bearer"
        },
        {
          "method": "POST",
          "path": "/api/anthropic/tools/execute",
          "summary": "Execute a single Claude tool_use block",
          "auth": "bearer"
        },
        {
          "method": "POST",
          "path": "/api/anthropic/tools/batch",
          "summary": "Execute multiple Claude tool_use blocks in sequence",
          "auth": "bearer"
        }
      ],
      "profiles": [
        { "name": "sonnetFast", "model": "claude-sonnet-5", "use_case": "Latency-sensitive" },
        { "name": "sonnetBalanced", "model": "claude-sonnet-5", "use_case": "General-purpose (default)" },
        { "name": "sonnetStrong", "model": "claude-sonnet-5", "use_case": "Complex coding, debugging" },
        { "name": "opusDeep", "model": "claude-opus-5-5", "use_case": "Deep architecture, long-horizon" }
      ],
      "features": ["adaptive_thinking", "tool_use", "sonnet_to_opus_bridge", "batch_tools"]
    },
    {
      "id": "openai_chat",
      "name": "OpenAI Chat Proxy",
      "category": "ai_inference",
      "description": "Server-side proxy for OpenAI chat completions. API keys never exposed to browser. Returns raw OpenAI response shape.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/ai/chat",
          "summary": "OpenAI chat completions (platform default GPT model)",
          "auth": "bearer",
          "rate_limit": "30/min"
        }
      ]
    },
    {
      "id": "brain_bridge",
      "name": "Brain Bridge",
      "category": "ai_reasoning",
      "description": "Core intelligence escalation system. Routes complex questions to the platform's OpenAI reasoning model for deep reasoning. Used by voice agents, call center agents, and embed widgets. Returns concise, context-optimized answers.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/chat/consult-brain",
          "summary": "Route question to the OpenAI reasoning model for deep reasoning",
          "auth": "bearer",
          "rate_limit": "20/min"
        }
      ],
      "profiles": [
        { "name": "voice_companion", "reasoning": "low", "use_case": "Fast relational voice agent" },
        { "name": "sales_agent", "reasoning": "medium", "use_case": "Customer-facing sales" },
        { "name": "default", "reasoning": "medium", "use_case": "General-purpose" }
      ],
      "features": ["vision_support", "call_correlation", "multi_context"]
    },
    {
      "id": "voice_realtime_webrtc",
      "name": "Voice AI (WebRTC)",
      "category": "voice",
      "description": "Sub-200ms voice conversations via OpenAI Realtime API and WebRTC. Browser-based ephemeral token flow. Built-in consult_brain and consult_brain_vision tools.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/realtime/session",
          "summary": "Create ephemeral WebRTC session token",
          "auth": "bearer",
          "rate_limit": "20/min"
        },
        {
          "method": "POST",
          "path": "/api/realtime/tool",
          "summary": "Handle tool call from browser Realtime session",
          "auth": "bearer",
          "rate_limit": "20/min"
        }
      ],
      "voices": ["alloy", "ash", "ballad", "coral", "echo", "fable", "onyx", "nova", "sage", "shimmer"],
      "features": ["brain_bridge_integration", "vision_support", "custom_personas", "instruction_injection_protection"]
    },
    {
      "id": "phone_realtime_twilio",
      "name": "Phone AI Agents (Twilio)",
      "category": "voice",
      "description": "Twilio Media Streams bridge connecting phone calls to OpenAI Realtime API for voice AI agents. Supports outbound calls, inbound webhooks, SMS tools, and call forwarding.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/phone-realtime/initiate",
          "summary": "Initiate an outbound AI phone call",
          "auth": "bearer",
          "rate_limit": "20/min"
        },
        {
          "method": "WS",
          "path": "/api/phone-realtime/media",
          "summary": "Twilio Media Stream WebSocket (wss://)",
          "auth": "twilio_signature"
        }
      ],
      "features": ["outbound_calls", "inbound_calls", "sms_tool", "call_forwarding", "email_tool", "call_recording"]
    },
    {
      "id": "agent_management",
      "name": "Agent Management",
      "category": "platform",
      "description": "Create, configure, and manage AI agents. 300+ templates for web agents, voice agents, call center agents, and more.",
      "endpoints": [
        {
          "method": "GET",
          "path": "/api/agent/{name}",
          "summary": "Get agent configuration",
          "auth": "bearer"
        },
        {
          "method": "GET",
          "path": "/api/agent_data/{id}",
          "summary": "Get embed-safe agent config (public)",
          "auth": "none"
        },
        {
          "method": "POST",
          "path": "/api/agent/get_agent_list_zapier",
          "summary": "List agents for Zapier integration",
          "auth": "bearer"
        }
      ],
      "features": ["300_templates", "zapier_integration", "embed_tokens", "type_variants"]
    },
    {
      "id": "agent_commerce",
      "name": "Agent Commerce",
      "category": "monetization",
      "description": "Stripe-powered monetization for AI agents. Agents can sell products, subscriptions, and services. Includes wallet, transaction history, and payment rail management.",
      "endpoints": [
        {
          "method": "GET",
          "path": "/api/agent/{agentId}/commerce/status",
          "summary": "Commerce status",
          "auth": "bearer"
        },
        {
          "method": "GET",
          "path": "/api/agent/{agentId}/commerce/products",
          "summary": "List products",
          "auth": "bearer"
        },
        {
          "method": "POST",
          "path": "/api/agent/{agentId}/commerce/checkout",
          "summary": "Create Stripe checkout session",
          "auth": "bearer"
        }
      ],
      "features": ["stripe_checkout", "subscriptions", "agent_wallet", "mcp_commerce_public_api"]
    },
    {
      "id": "embed_system",
      "name": "Embeddable Widget",
      "category": "integration",
      "description": "Embed NetShow AI agents on any external website as an iframe widget. Supports voice and chat modes. Single iframe or floating JS widget.",
      "embed_url": "https://app.netshow.ai/dashboard/chats/embed_chat?token=YOUR_TOKEN",
      "parameters": {
        "token": "Agent embed token (from Widget tab in agent settings)",
        "chat_enabled": "0 = voice only, 1 = chat enabled"
      },
      "features": ["iframe_embed", "floating_js_widget", "voice_support", "chat_support", "token_based_auth"]
    },
    {
      "id": "chat_sessions",
      "name": "Chat Sessions",
      "category": "platform",
      "description": "Conversation session tracking, message storage, visitor identity resolution, and session handoff between agents.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/create-session",
          "summary": "Create a chat session",
          "auth": "bearer",
          "rate_limit": "30/min"
        },
        {
          "method": "POST",
          "path": "/api/save-message/{sessionId}",
          "summary": "Save message to transcript",
          "auth": "bearer"
        },
        {
          "method": "GET",
          "path": "/api/session/active",
          "summary": "List active sessions",
          "auth": "bearer"
        }
      ]
    },
    {
      "id": "text_to_speech",
      "name": "Text-to-Speech & Transcription",
      "category": "voice",
      "description": "ElevenLabs TTS with word-level timestamps for avatar lip-sync. OpenAI Whisper for audio transcription.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/avatar/tts",
          "summary": "Generate ElevenLabs speech with lip-sync timestamps",
          "auth": "none",
          "rate_limit": "10/min"
        },
        {
          "method": "GET",
          "path": "/api/avatar/voices",
          "summary": "List available ElevenLabs voices",
          "auth": "none"
        },
        {
          "method": "POST",
          "path": "/api/whisper/transcribe",
          "summary": "Transcribe audio with OpenAI Whisper",
          "auth": "bearer",
          "rate_limit": "20/min"
        }
      ]
    },
    {
      "id": "mcp_tools",
      "name": "MCP Tool Execution",
      "category": "platform",
      "description": "Model Context Protocol tool execution. Execute registered tools (web_search, calculator, code_review, etc.) and manage per-agent tool permissions.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/mcp/server/execute_tool",
          "summary": "Execute a registered MCP tool",
          "auth": "bearer",
          "rate_limit": "30/min"
        },
        {
          "method": "GET",
          "path": "/api/mcp/server/enabled_agent_tools/{userId}/{agentId}/{agentType}",
          "summary": "Get tools enabled for a specific agent",
          "auth": "bearer"
        }
      ]
    },
    {
      "id": "workflow_automation",
      "name": "Workflow Automation",
      "category": "platform",
      "description": "Multi-step workflow automation with visual node editor, conditional logic, and execution history tracking.",
      "endpoints": [
        {
          "method": "GET",
          "path": "/api/workflows",
          "summary": "List workflows",
          "auth": "bearer"
        },
        {
          "method": "POST",
          "path": "/api/workflows",
          "summary": "Create workflow",
          "auth": "bearer"
        },
        {
          "method": "POST",
          "path": "/api/workflows/execute",
          "summary": "Execute workflow",
          "auth": "bearer"
        }
      ]
    },
    {
      "id": "live_handoff",
      "name": "Live Agent Handoff",
      "category": "call_center",
      "description": "Transfer conversations from AI to human operators. Check operator availability, request handoff, and return to AI after resolution.",
      "endpoints": [
        {
          "method": "POST",
          "path": "/api/live-handoff/request",
          "summary": "Request a live human agent",
          "auth": "none",
          "rate_limit": "20/min"
        },
        {
          "method": "GET",
          "path": "/api/live-handoff/status",
          "summary": "Check operator availability",
          "auth": "none"
        }
      ]
    },
    {
      "id": "health_check",
      "name": "Health Check",
      "category": "infrastructure",
      "description": "Public health endpoint for monitoring API availability.",
      "endpoints": [
        {
          "method": "GET",
          "path": "/api/health",
          "summary": "Platform health status",
          "auth": "none"
        }
      ]
    },
    {
      "id": "live_agent_studio",
      "name": "Live Agent Studio",
      "category": "live_agents",
      "description": "Where an agent comes to life: meet an agent with a face and a voice, make your own with its brain, skills, voice and look, and put it to work on your website, your phone and in your business.",
      "audience": "Owners, creators and teams who want an agent that talks to people for them.",
      "how_to_start": "Open the Studio, meet an agent, then sign up and create your own.",
      "url": "https://app.netshow.ai/studio"
    },
    {
      "id": "living_avatar_widget",
      "name": "Living-avatar widget",
      "category": "live_agents",
      "description": "One pasted tag puts your agent's face, voice and chat on any website you already run, answering visitors from your business knowledge.",
      "audience": "Businesses and site owners who want every visitor greeted by their own agent.",
      "how_to_start": "Sign in, open your agent, choose Deploy, publish and copy the tag shown there into your site.",
      "paste_snippet": "<script src=\"https://app.netshow.ai/js/ns-chat-widget-v2.js\" data-ns-v2-enable=\"1\" data-agent-id=\"YOUR_AGENT_ID\" data-slug=\"your-agent-slug\" data-api=\"https://app.netshow.ai/agent/your-agent-slug/chat\" data-name=\"Your Agent\"></script>",
      "url": "https://app.netshow.ai/help/publish-it"
    },
    {
      "id": "harness",
      "name": "NetShow Harness",
      "category": "live_agents",
      "description": "Where your agent works: the tools, skills and doors your agent can use inside NetShow, and the place to bring your own agent harness home to NetShow's memory, voice and reach.",
      "audience": "Builders and teams who already run their own agents.",
      "how_to_start": "Open the Harness page and pick the agent you already run - Claude Code, Codex, Hermes, n8n, OpenClaw or a headless CLI agent - under Bring your own harness, create a free account, and your agent walks you through connecting it. Your harness keeps the setup and sign-ins it already has, and connects with a private code.",
      "url": "https://app.netshow.ai/harness#bring-your-own"
    },
    {
      "id": "voice_proxy",
      "name": "Voice for your agent",
      "category": "live_agents",
      "description": "Your agent speaks: visitors talk to it out loud on your website, and it answers its own phone number, in real time, with the voice you choose.",
      "audience": "Businesses that want calls answered and visitors spoken to by an agent that knows their business.",
      "how_to_start": "Sign in, open your agent's voice and phone settings, choose a voice and turn on website voice or a phone number.",
      "url": "https://app.netshow.ai/docs/voice-phone-setup"
    },
    {
      "id": "talking_websites",
      "name": "Talking websites",
      "category": "live_agents",
      "description": "A website that talks back: each visitor meets a living agent that listens, answers from the business's own knowledge and offers the next step, on NetShow and on a customer's own site through the pasted widget.",
      "audience": "Any business whose website should hold a conversation instead of waiting to be read.",
      "how_to_start": "Meet live agents in the Agent Directory, then build your own in the Studio and paste its widget into your site.",
      "url": "https://app.netshow.ai/agents"
    }
  ],
  "rate_limits": {
    "description": "Rate limits use Laravel throttle middleware, counted per authenticated user (or IP for public endpoints).",
    "limits": [
      { "group": "User registration", "limit": "5/min", "auth": false },
      { "group": "Avatar TTS", "limit": "10/min", "auth": false },
      { "group": "Realtime session + tools", "limit": "20/min", "auth": true },
      { "group": "Brain Bridge", "limit": "20/min", "auth": true },
      { "group": "Live handoff", "limit": "20/min", "auth": false },
      { "group": "Whisper transcription", "limit": "20/min", "auth": true },
      { "group": "Chat sessions", "limit": "30/min", "auth": true },
      { "group": "OpenAI chat proxy", "limit": "30/min", "auth": true },
      { "group": "MCP tool execution", "limit": "30/min", "auth": true },
      { "group": "Commerce webhook (Stripe)", "limit": "60/min", "auth": false }
    ],
    "retry_header": "Retry-After",
    "retry_status": 429
  },
  "use_cases": [
    "Customer support automation",
    "Sales development representatives (AI SDR)",
    "Voice AI call center agents",
    "Lead qualification and routing",
    "Product knowledge bases",
    "Employee onboarding assistants",
    "Real estate and property management agents",
    "Healthcare appointment scheduling",
    "Legal intake and FAQ agents",
    "E-commerce shopping assistants",
    "Educational tutoring agents",
    "Developer documentation assistants"
  ],
  "integrations": [
    "Twilio (voice + SMS)",
    "Stripe (payments)",
    "ElevenLabs (voice synthesis)",
    "Zapier (workflow automation)",
    "Any website (embed widget)"
  ],
  "agent_discovery": {
    "description": "This catalog is designed to help AI agents discover and interact with NetShow.AI programmatically.",
    "machine_readable_formats": [
      {
        "format": "OpenAPI 3.1",
        "url": "https://app.netshow.ai/openapi.yaml",
        "content_type": "application/yaml"
      },
      {
        "format": "Agent Catalog JSON",
        "url": "https://app.netshow.ai/agent-catalog.json",
        "content_type": "application/json"
      }
    ],
    "quick_start": "POST https://app.netshow.ai/api/chat/consult-brain with {\"question\": \"your question\", \"agent_profile\": \"default\"} and Authorization: Bearer <token>",
    "get_token": "POST https://app.netshow.ai/api/user/login with {\"email\": \"...\", \"password\": \"...\"}"
  }
}
