{
  "name": "Animam.ai",
  "description": "AI agent infrastructure for builders. Multi-tenant, multichannel (widget, API, voice, MCP), white-label platform for deploying AI agents at scale. BYOK multi-provider support.",
  "url": "https://api.animam.ai",
  "provider": {
    "organization": "Animam",
    "url": "https://animam.ai"
  },
  "version": "2.1.0",
  "documentationUrl": "https://animam.ai/llms-full.txt",
  "openApiSpec": "https://api.animam.ai/openapi.json",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extensions": [
      {
        "uri": "https://github.com/google-agentic-commerce/ap2/tree/v0.1",
        "description": "Animam accepts agent-initiated payments for plan signup and credit top-ups via the Agent Payments Protocol (AP2). Implementation slated for Q3 2026. See extensions.ap2 below for endpoint and scope details.",
        "params": {
          "roles": ["merchant"]
        }
      }
    ]
  },
  "authentication": {
    "schemes": ["bearer", "oauth2"],
    "instructions": "For MCP: OAuth 2.1 + PKCE auto-discovery via https://mcp.animam.ai/.well-known/oauth-protected-resource (Claude Desktop, Cursor, claude.ai handle this transparently). For REST API: use a static API token from the dashboard as Authorization: Bearer ak_xxx or X-API-Key: ak_xxx.",
    "oauth": {
      "authorizationServer": "https://api.animam.ai",
      "discovery": "https://api.animam.ai/.well-known/oauth-authorization-server",
      "registration": "https://api.animam.ai/oauth/register",
      "pkce": "S256"
    }
  },
  "skills": [
    {
      "id": "chat",
      "name": "Chat with AI agent (agent-to-agent)",
      "description": "Send messages to an Animam-powered AI agent via plain HTTP POST to /chat/{slug}. Declare yourself as an agent with the X-Agent-Model header (or [AGENT:model] message prefix) — the chatbot returns a structured JSON envelope (message, conversationId, toolExecutions[], llmModel, llmProvider, agentModel echo) instead of SSE. The chatbot is the only public agent surface; it owns and orchestrates the tools (corpus search, booking, payment, recommendations) on the caller's behalf — no anonymous tools/list endpoint exists. Streaming via SSE remains opt-in for browsers (default for human visitors).",
      "tags": ["chatbot", "ai-agent", "agent-to-agent", "json-envelope", "multichannel"],
      "examples": [
        "Chat with the AI agent for dr-martin",
        "Ask the bot about appointment availability with X-Agent-Model: claude-opus-4-7",
        "Get a structured response with toolExecutions and llmModel attribution"
      ]
    },
    {
      "id": "voice",
      "name": "Voice AI agent",
      "description": "Phone answering via Vapi Custom LLM integration. Same brain as chat, voice-adapted with STT/TTS.",
      "tags": ["voice", "telephony", "phone"],
      "examples": [
        "Set up voice answering for a dental clinic",
        "Get call recordings for tenant dr-martin"
      ]
    },
    {
      "id": "multi-tenant",
      "name": "Multi-tenant management",
      "description": "Create and manage child bots under a parent account. Builder plan: one account, N bots, pooled conversations.",
      "tags": ["multi-tenant", "builder", "agencies"],
      "examples": [
        "Create a new bot for client ACME Corp",
        "List all bots and pool usage"
      ]
    },
    {
      "id": "context-discovery",
      "name": "Discover agent context",
      "description": "Get full context about an Animam-powered agent: bot persona, knowledge base, available tools, segments, capabilities.",
      "tags": ["discovery", "context", "knowledge-base"],
      "examples": [
        "What does the agent for my-business know about?",
        "Get the knowledge base for tenant acme-corp"
      ]
    },
    {
      "id": "manage-tenant",
      "name": "Manage agent settings",
      "description": "Update bot persona (name, title, tone, colors), manage segments, configure tools and voice via MCP or REST API.",
      "tags": ["management", "configuration", "mcp"],
      "examples": [
        "Change the bot name to Sophie",
        "Enable voice module for this tenant"
      ]
    },
    {
      "id": "manage-corpus",
      "name": "Manage knowledge base",
      "description": "Create, update, delete knowledge base entries. Import from URLs, files (MD, PDF, CSV, HTML). Supports idempotent externalId upsert + bulk (max 50) for CMS integrations.",
      "tags": ["knowledge-base", "corpus", "content"],
      "examples": [
        "Add a FAQ entry about pricing",
        "Import content from https://example.com/faq",
        "Bulk sync 30 CMS articles via externalId"
      ]
    },
    {
      "id": "wordpress-integration",
      "name": "WordPress plugin",
      "description": "Official WordPress plugin (PHP 7.4+, WP 6.0+). One-click install: widget injection, automatic content sync (posts, pages, custom post types) via idempotent externalId upsert. The agent drives the tenant's existing plugins via curated bridges (WPForms, WooCommerce, MailPoet) — leads, orders and subscriptions land in the native plugin the tenant already uses, with existing automations (Zapier, notification emails) preserved. Source in monorepo wordpress/animam/.",
      "tags": ["wordpress", "cms", "plugin", "integration", "bridges"],
      "examples": [
        "How do I install Animam on my WordPress site?",
        "Sync WordPress posts to my Animam agent",
        "Have the agent submit a WPForms form on behalf of a visitor",
        "Have the agent add a product to the WooCommerce cart"
      ]
    },
    {
      "id": "outgoing-webhooks",
      "name": "Outgoing webhooks",
      "description": "Stripe-style HMAC-SHA256 signed webhook deliveries. Per-tenant endpoints with configurable events (submission.created, submission.updated). Exponential backoff retries, delivery log, manual redeliver. Use for CRM sync, custom integrations, or bridging to Zapier/n8n/Make.",
      "tags": ["webhooks", "integrations", "hmac", "events"],
      "examples": [
        "Send every new submission to my CRM",
        "Register a webhook for submission events",
        "Verify a webhook signature"
      ]
    }
  ],
  "defaultInputModes": ["text"],
  "defaultOutputModes": ["text"],
  "supportedInterfaces": [
    {
      "transport": "https",
      "url": "https://api.animam.ai/chat/{slug}",
      "modes": ["text"],
      "description": "Canonical agent-to-agent endpoint. POST with X-Agent-Model header → structured JSON envelope (message, conversationId, toolExecutions[], agentModel echo, llmModel transparency). Without the header → SSE streaming for browser widgets. The chatbot orchestrates tools internally; no anonymous tools/list is exposed.",
      "agentEnvelope": {
        "trigger": "X-Agent-Model header OR [AGENT:model] message prefix",
        "format": "application/json",
        "fields": ["message", "sessionId", "conversationId", "messageCount", "visitorType", "agentModel", "toolExecutions", "contactSubmitted", "toolResults", "status", "llmSource", "llmProvider", "llmModel"],
        "transparency": ["X-AI-Generated: true response header (AI Act Art. 50)", "llmModel exposes the exact model that generated the reply"]
      }
    },
    {
      "transport": "https",
      "url": "https://api.animam.ai/voice/{slug}/chat",
      "modes": ["voice"],
      "description": "Voice (Vapi Custom LLM) chat completions for telephony."
    },
    {
      "transport": "sse",
      "url": "https://mcp.animam.ai/mcp/sse",
      "modes": ["mcp"],
      "description": "Model Context Protocol server with 17 tools for managing agents and corpus."
    },
    {
      "transport": "https",
      "url": "https://api.animam.ai/context/{slug}",
      "modes": ["text"],
      "description": "Public read-only context discovery — bot persona, capabilities, knowledge base summary."
    }
  ],
  "preferredTransport": "https",
  "endpoints": {
    "chat": "https://api.animam.ai/chat/{slug}",
    "voice": "https://api.animam.ai/voice/{slug}/chat",
    "context": "https://api.animam.ai/context/{slug}",
    "mcp": "https://mcp.animam.ai/mcp/sse"
  },
  "supplementary": {
    "llmsTxt": "https://animam.ai/llms.txt",
    "llmsFullTxt": "https://animam.ai/llms-full.txt",
    "llmFeed": "https://animam.ai/.well-known/llmfeed.json",
    "mcpServerCard": "https://animam.ai/.well-known/mcp/server-card.json",
    "mcpDiscovery": "https://animam.ai/.well-known/mcp.json",
    "agentSkills": "https://animam.ai/.well-known/agent-skills/index.json",
    "apiCatalog": "https://animam.ai/.well-known/api-catalog",
    "openApi": "https://api.animam.ai/openapi.json",
    "wordpressPlugin": "https://github.com/animam-ai/animam.ai/tree/master/wordpress/animam"
  },
  "extensions": {
    "ap2": {
      "version": "0.1",
      "supported": true,
      "description": "Agent Payments Protocol — Animam will accept agent-initiated purchases for plan signup and credit top-ups. Implementation slated for Q3 2026 alongside the Stripe Sessions 2026 SPT/MPP rollout.",
      "endpoints": {
        "mandate": "https://api.animam.ai/billing/ap2-mandate",
        "purchase": "https://api.animam.ai/billing/agent-signup"
      },
      "scopes": [
        "plan:purchase",
        "credit:topup"
      ],
      "status": "planned"
    }
  },
  "contentNegotiation": {
    "markdown": {
      "supported": true,
      "request": "Accept: text/markdown",
      "response": "Returns llms-full.txt content with Content-Type: text/markdown",
      "note": "Self-hosted equivalent of Cloudflare's Markdown for Agents (Free tier)."
    }
  },
  "integrations": {
    "wordpress": {
      "status": "available",
      "pluginSource": "https://github.com/animam-ai/animam.ai/tree/master/wordpress/animam",
      "marketingUrl": "https://wordpress.animam.ai",
      "signupUrl": "https://animam.ai/wordpress/signup",
      "checkoutUrl": "https://animam.ai/wordpress/checkout",
      "metaUrl": "https://api.animam.ai/wp/plugin-meta?slug=animam",
      "downloadUrl": "https://api.animam.ai/wp/plugin-download/0.1.14",
      "requires": { "wordpress": ">=6.0", "php": ">=7.4" },
      "capabilities": [
        "widget-injection",
        "content-auto-sync (posts/pages/custom-post-types)",
        "bridge-wpforms (agent submits visitor data through native WPForms pipeline)",
        "bridge-woocommerce (agent searches products + drives cart, checkout stays native)",
        "bridge-mailpoet (agent subscribes visitors to whitelisted lists, double opt-in preserved)",
        "16 admin tools (SEO audit, image alt bulk, draft management, schema.org, etc.)",
        "advanced REST access toggle (wp_rest_call) for power users",
        "shortcode: [animam_chat]"
      ]
    },
    "webhooks": {
      "status": "available",
      "scheme": "HMAC-SHA256",
      "header": "X-Animam-Signature: t=<unix>,v1=<hex>",
      "events": ["submission.created", "submission.updated"],
      "register": "POST https://api.animam.ai/tenants/{slug}/webhooks"
    }
  }
}
