{
  "schema_version": "2025-06-18",
  "name": "infrai",
  "title": "Infrai MCP Server",
  "description": "One key, one wallet, one bill for every online-infrastructure capability an AI agent needs. Exposes every capability (364) across 20 modules as MCP tools.",
  "vendor": "Calf Technology Pte. Ltd.",
  "homepage": "https://infrai.cc",
  "documentation": "https://docs.infrai.cc",
  "package": {
    "registry": "npm",
    "name": "@infrai/mcp-server",
    "version": "0.1.0",
    "run": "npx -y @infrai/mcp-server"
  },
  "transports": [
    {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@infrai/mcp-server",
        "--transport",
        "stdio"
      ]
    },
    {
      "type": "http",
      "url": "https://api.infrai.cc/mcp",
      "method": "POST"
    }
  ],
  "auth": {
    "type": "bearer",
    "env": "INFRAI_API_KEY",
    "note": "Project API key (ifr_...). Forwarded as Authorization: Bearer. Never logged or persisted by the server. Get a key by signing in at the console with Google/GitHub (+ $2 free credit; email sign-in starts at $0)."
  },
  "tool_count": 298,
  "ga_module_count": 19,
  "modules": [
    {
      "module": "ai-runtime",
      "ga": "ai.runtime",
      "tools": [
        "ai.chat",
        "ai.chat_stream",
        "ai.image.generate",
        "ai.embed.create"
      ]
    },
    {
      "module": "ai-video",
      "ga": "ai.video",
      "tools": [
        "ai.video.generate",
        "ai.video.status"
      ]
    },
    {
      "module": "comm-email",
      "ga": "infra.email",
      "tools": [
        "email.send",
        "email.status",
        "email.template.create",
        "email.suppression.check"
      ]
    },
    {
      "module": "sms",
      "ga": "infra.sms",
      "tools": [
        "sms.send",
        "sms.status"
      ]
    },
    {
      "module": "scheduling",
      "ga": "infra.scheduling",
      "tools": [
        "cron.schedule",
        "cron.list",
        "cron.trigger",
        "queue.publish",
        "queue.subscribe",
        "queue.stats",
        "queue.dlq_requeue",
        "webhook.endpoint.create",
        "webhook.send",
        "webhook.verify"
      ]
    },
    {
      "module": "observability",
      "ga": "infra.error",
      "tools": [
        "flag.is_enabled",
        "flag.get_value",
        "flag.create",
        "flag.rollout",
        "error.capture",
        "error.search",
        "error.groups",
        "alert.create"
      ]
    },
    {
      "module": "analytics",
      "ga": "infra.analytics",
      "tools": [
        "analytics.track",
        "analytics.query.events"
      ]
    },
    {
      "module": "captcha",
      "ga": "infra.captcha",
      "tools": [
        "captcha.verify",
        "captcha.create_widget"
      ]
    },
    {
      "module": "pdf",
      "ga": "infra.pdf",
      "tools": [
        "pdf.generate_from_html",
        "pdf.parse",
        "pdf.ocr"
      ]
    },
    {
      "module": "image-process",
      "ga": "infra.image_process",
      "tools": [
        "image_process.resize",
        "image_process.watermark",
        "image_process.pipeline"
      ]
    },
    {
      "module": "realtime",
      "ga": "infra.realtime",
      "tools": [
        "realtime.publish",
        "realtime.token.issue",
        "realtime.channel.create"
      ]
    },
    {
      "module": "storage",
      "ga": "infra.storage",
      "tools": [
        "storage.put_url",
        "storage.get_url",
        "storage.list"
      ]
    },
    {
      "module": "account-billing",
      "ga": "(account/entry surface; the control-plane module)",
      "tools": [
        "account.whoami",
        "account.topup"
      ]
    }
  ],
  "clients": [
    "Claude Desktop",
    "Claude Code",
    "Cursor",
    "Cline",
    "Continue",
    "Windsurf",
    "Aider"
  ],
  "license": "Apache-2.0",
  "_note": "Served from api.infrai.cc/.well-known/mcp.json. tool_count/ga_module_count are SSOT-gated by docs/doc_stats.mjs. Tool inputSchemas derived from infrai-spec/ (SSOT). Full list: /.well-known/infrai-discovery.json."
}
