{
  "openapi": "3.1.0",
  "info": {
    "title": "Mammoth Dev API",
    "version": "1.0.0",
    "description": "Mammoth Dev runs a multi-tenant Model Context Protocol service. A single MCP endpoint exposes hundreds of pre-wired tools across CRMs, mailboxes, calendars, ad platforms, AI providers, and more — each authenticated per-user via OAuth or stored API keys.\n\n**81 adapters · 1019 tools.**\n\n## Quickstart\n1. **Get a bearer token** — login via `/api/auth/login` or grab an API token from your portal profile.\n2. **List tools** — `POST /mcp` with `{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}`.\n3. **Call a tool** — `POST /mcp` with `{\"method\":\"tools/call\",\"params\":{\"name\":\"<service>_<tool>\",\"arguments\":{...}}}`.\n\n## MCP-protocol clients\nUse this server like any other MCP server. Claude Desktop / Code config:\n```json\n{\n  \"mcpServers\": {\n    \"mammoth-dev\": {\n      \"url\": \"https://mcp-router-production-d6a7.up.railway.app/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer $MAMMOTH_DEV_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n## Reference\nThe per-adapter sections below list every tool, its argument schema, and a runnable `curl` snippet you can copy-paste.",
    "contact": {
      "name": "Mammoth Dev",
      "url": "https://mammoth-dev.com"
    },
    "license": {
      "name": "Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://mcp-router-production-d6a7.up.railway.app",
      "description": "Production"
    },
    {
      "url": "http://localhost:3001",
      "description": "Local development"
    }
  ],
  "tags": [
    {
      "name": "MCP Protocol",
      "description": "JSON-RPC protocol over HTTP/SSE — the primary integration surface"
    },
    {
      "name": "Health",
      "description": "Liveness, readiness, and observability probes"
    },
    {
      "name": "Auth",
      "description": "Login, sessions, and API tokens"
    },
    {
      "name": "Services",
      "description": "Service connections and OAuth lifecycle"
    },
    {
      "name": "Brain",
      "description": "Per-user data warehouse query interface"
    },
    {
      "name": "adspirer",
      "description": "Adspirer — multi-network ad campaign manager.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 8"
    },
    {
      "name": "airtable",
      "description": "Airtable — bases, tables, records CRUD.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 8"
    },
    {
      "name": "anthropic",
      "description": "Anthropic — Claude chat, token counting, brand visibility checks.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 5"
    },
    {
      "name": "apify",
      "description": "Apify — actor marketplace + run scrapers.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 10"
    },
    {
      "name": "apollo",
      "description": "Apollo.io — people/company search, enrichment, sequences.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 9"
    },
    {
      "name": "brain",
      "description": "Brain — per-user Postgres warehouse with synced CRM/email/calendar data.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 24"
    },
    {
      "name": "brave-search",
      "description": "Brave Search — web/image/news/video search, summarizer.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 6"
    },
    {
      "name": "buffer",
      "description": "Buffer — schedule + publish to social profiles.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 4"
    },
    {
      "name": "claude-mailbox",
      "description": "Claude Mailbox — async messages between Claude sessions.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 4"
    },
    {
      "name": "custom",
      "description": "custom adapter\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 0"
    },
    {
      "name": "dataforseo",
      "description": "DataForSEO — SERP, keywords, backlinks, on-page, AEO/LLM-answers.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 17"
    },
    {
      "name": "docuseal",
      "description": "DocuSeal — self-hosted e-signature: templates, submissions, submitters.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 15"
    },
    {
      "name": "enablement",
      "description": "Enablement — onboarding flows, getting-started, suggested skills.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 6"
    },
    {
      "name": "exa",
      "description": "Exa — neural search, find similar, get contents, research.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 5"
    },
    {
      "name": "ezsmartleads-calendar",
      "description": "Outlook Calendar (EZ Smart Leads tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 6"
    },
    {
      "name": "ezsmartleads-onedrive",
      "description": "OneDrive (EZ Smart Leads tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "ezsmartleads-outlook",
      "description": "Outlook (EZ Smart Leads tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 23"
    },
    {
      "name": "ezsmartleads-sharepoint",
      "description": "SharePoint (EZ Smart Leads tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 17"
    },
    {
      "name": "ezsmartleads-teams",
      "description": "Microsoft Teams (EZ Smart Leads tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 8"
    },
    {
      "name": "firecrawl",
      "description": "Firecrawl — web scraping, crawl, map, extract, search.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 7"
    },
    {
      "name": "forest",
      "description": "Forest — workflow templates and scheduled runs.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 11"
    },
    {
      "name": "ganalytics",
      "description": "Google Analytics 4 — run reports, realtime, pivot, batch.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 8"
    },
    {
      "name": "gcalendar",
      "description": "Google Calendar — events, free/busy, meet links.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 12"
    },
    {
      "name": "gchat",
      "description": "Google Chat — spaces, members, messages, search.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "gcontacts",
      "description": "Google Contacts — search, create, update people records.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 8"
    },
    {
      "name": "gdocs",
      "description": "Google Docs — create, append, replace, style, insert tables and images.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "gdrive",
      "description": "Google Drive — search, upload, share, move, export.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 14"
    },
    {
      "name": "gemini",
      "description": "Google Gemini — text generation, embeddings, vision.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 8"
    },
    {
      "name": "gforms",
      "description": "Google Forms — create forms, questions, quiz settings, list responses.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 8"
    },
    {
      "name": "github",
      "description": "GitHub — issues, PRs, comments, repos, commits, labels.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 15"
    },
    {
      "name": "gkeep",
      "description": "Google Keep — notes (read-only via Tasks API surface).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 4"
    },
    {
      "name": "gmail",
      "description": "Gmail (Workspace) — read, send, label, draft. Account: primary connected Google account.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 19"
    },
    {
      "name": "gmeet",
      "description": "Google Meet — spaces, conference records, participants.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 6"
    },
    {
      "name": "google-ads",
      "description": "Google Ads — campaign management, performance, keyword ideas.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 9"
    },
    {
      "name": "gphotos",
      "description": "Google Photos — albums, media items, sharing.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "grok",
      "description": "xAI Grok — chat, live search, brand visibility.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 5"
    },
    {
      "name": "gsc",
      "description": "Google Search Console — search analytics, sitemaps, URL inspection.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 8"
    },
    {
      "name": "gsearch",
      "description": "Google Custom Search — programmable web/image search.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 4"
    },
    {
      "name": "gsheets",
      "description": "Google Sheets — read, batch update, format, charts, protected ranges.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 14"
    },
    {
      "name": "gslides",
      "description": "Google Slides — create presentations, slides, text boxes, images, templates.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "gtasks",
      "description": "Google Tasks — lists, tasks, completion.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "gtranslate",
      "description": "Google Translate — translate text and detect languages.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 4"
    },
    {
      "name": "hubspot",
      "description": "HubSpot CRM — contacts, companies, deals, tickets, engagements, and workflows.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 47"
    },
    {
      "name": "hunter",
      "description": "Hunter.io — domain search, email finder, verifier, author finder.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 7"
    },
    {
      "name": "images",
      "description": "Image generation — wraps OpenAI/Replicate/Stability/Ideogram/BFL.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 6"
    },
    {
      "name": "landing",
      "description": "Landing — generate and preview landing pages.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 4"
    },
    {
      "name": "linkedin",
      "description": "LinkedIn — posts, profile, organization stats, ads.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 11"
    },
    {
      "name": "manus",
      "description": "Manus — async task runner.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 4"
    },
    {
      "name": "marketing",
      "description": "Marketing — multi-channel campaigns, A/B tests, content calendar.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 12"
    },
    {
      "name": "meta",
      "description": "meta adapter\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 6"
    },
    {
      "name": "meta-ads",
      "description": "Meta Ads — campaigns, ad insights, page/instagram insights.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 7"
    },
    {
      "name": "n8n",
      "description": "n8n — workflow execution and management (deprecation in progress).\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 20"
    },
    {
      "name": "notion",
      "description": "Notion — pages, databases, blocks, search.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 13"
    },
    {
      "name": "openai",
      "description": "OpenAI — chat completions, embeddings, image generation, moderations.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 8"
    },
    {
      "name": "optimizer",
      "description": "Optimizer — n8n-style workflow engine (legacy).\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 16"
    },
    {
      "name": "perplexity",
      "description": "Perplexity — ask, chat, deep research.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 4"
    },
    {
      "name": "pipedrive",
      "description": "Pipedrive CRM — deals, persons, organizations, activities, pipelines.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 18"
    },
    {
      "name": "premier-calendar",
      "description": "Outlook Calendar (Premier tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 6"
    },
    {
      "name": "premier-onedrive",
      "description": "OneDrive (Premier tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "premier-outlook",
      "description": "Outlook (Premier Consulting Partners tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 23"
    },
    {
      "name": "premier-sharepoint",
      "description": "SharePoint (Premier tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 17"
    },
    {
      "name": "premier-teams",
      "description": "Microsoft Teams (Premier tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 8"
    },
    {
      "name": "psi",
      "description": "PageSpeed Insights — Core Web Vitals analysis.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 2"
    },
    {
      "name": "reporting",
      "description": "Reporting — exec/weekly/monthly/daily digest reports.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 7"
    },
    {
      "name": "reports",
      "description": "Reports — saved reports definitions and runs.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 6"
    },
    {
      "name": "skills",
      "description": "Internal — Claude Code skills marketplace and runtime.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 10"
    },
    {
      "name": "slack",
      "description": "Slack — channels, messages, reactions, search.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 11"
    },
    {
      "name": "smartlead",
      "description": "SmartLead — cold email campaigns, leads, sequences, analytics.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 34"
    },
    {
      "name": "studio",
      "description": "Studio — design + branding tools.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 17"
    },
    {
      "name": "tiktok",
      "description": "TikTok — video upload, status, campaigns.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 5"
    },
    {
      "name": "tmrw-calendar",
      "description": "Outlook Calendar (TMRW tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 6"
    },
    {
      "name": "tmrw-onedrive",
      "description": "OneDrive (TMRW tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 10"
    },
    {
      "name": "tmrw-outlook",
      "description": "Outlook (TMRW tenant) — messages, drafts, attachments, rules, folders.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 23"
    },
    {
      "name": "tmrw-sharepoint",
      "description": "SharePoint (TMRW tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 17"
    },
    {
      "name": "tmrw-teams",
      "description": "Microsoft Teams (TMRW tenant).\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 8"
    },
    {
      "name": "twilio",
      "description": "Twilio — SMS, MMS, A2P registration, short links.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 14"
    },
    {
      "name": "twitter",
      "description": "X / Twitter — tweets, threads, list recent, campaigns.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 5"
    },
    {
      "name": "video",
      "description": "Video generation — wraps Sora/Pika/Runway/HeyGen.\n\n**Auth:** Internal — no external auth (or scoped to caller's bearer token)\n\n**Tools:** 6"
    },
    {
      "name": "winterleaf",
      "description": "Winterleaf — MLM/affiliate-platform operations.\n\n**Auth:** API key — supplied as a per-credential record. Store via `/api/services/{name}/credentials`.\n\n**Tools:** 131"
    },
    {
      "name": "wix",
      "description": "Wix — sites, products, blog, bookings, contacts, media.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 34"
    },
    {
      "name": "zoho",
      "description": "Zoho CRM — leads, contacts, deals, modules, blueprints.\n\n**Auth:** OAuth 2.0 — connect via portal (`/services/{name}/connect`)\n\n**Tools:** 27"
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "summary": "Health check",
        "tags": [
          "Health"
        ],
        "responses": {
          "200": {
            "description": "Server status with circuit breaker info"
          }
        }
      }
    },
    "/livez": {
      "get": {
        "summary": "Liveness probe",
        "tags": [
          "Health"
        ],
        "responses": {
          "200": {
            "description": "Lightweight liveness check (no DB)"
          }
        }
      }
    },
    "/readyz": {
      "get": {
        "summary": "Readiness probe",
        "tags": [
          "Health"
        ],
        "responses": {
          "200": {
            "description": "DB connectivity verified"
          },
          "503": {
            "description": "DB unavailable"
          }
        }
      }
    },
    "/api/auth/login": {
      "post": {
        "summary": "Login",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  }
                },
                "required": [
                  "email",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JWT token returned"
          },
          "401": {
            "description": "Invalid credentials"
          }
        }
      }
    },
    "/api/auth/me": {
      "get": {
        "summary": "Get current user profile",
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "User profile"
          }
        }
      }
    },
    "/api/services/list": {
      "get": {
        "summary": "List available services",
        "tags": [
          "Services"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Services with connection status"
          }
        }
      }
    },
    "/api/brain/query": {
      "post": {
        "summary": "Execute read-only SQL on per-user brain DB",
        "tags": [
          "Brain"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sql": {
                    "type": "string"
                  },
                  "max_rows": {
                    "type": "number"
                  },
                  "timeout_ms": {
                    "type": "number"
                  }
                },
                "required": [
                  "sql"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Query results"
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "summary": "MCP protocol — JSON-RPC entry point",
        "tags": [
          "MCP Protocol"
        ],
        "description": "Streamable HTTP transport for the Model Context Protocol. Send JSON-RPC requests like `tools/list` and `tools/call`. Tool names are prefixed with the service name (`hubspot_search_contacts`, `gmail_send_email`, etc.). See the per-adapter sections for the full tool catalog.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonRpcRequest"
              },
              "examples": {
                "listTools": {
                  "summary": "List all tools available to the caller",
                  "value": {
                    "jsonrpc": "2.0",
                    "id": 1,
                    "method": "tools/list"
                  }
                },
                "callTool": {
                  "summary": "Invoke a specific tool",
                  "value": {
                    "jsonrpc": "2.0",
                    "id": 2,
                    "method": "tools/call",
                    "params": {
                      "name": "hubspot_search_contacts",
                      "arguments": {
                        "query": "acme corp",
                        "limit": 10
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response"
          }
        }
      }
    },
    "/mcp#tool=adspirer_usage_status": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "usage_status",
        "operationId": "adspirer_usage_status",
        "description": "Check current quota usage and tier (free=15 calls/mo). Free read-only tool — does not consume quota.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_usage_status\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=adspirer_list_connected_accounts": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "list_connected_accounts",
        "operationId": "adspirer_list_connected_accounts",
        "description": "List ad accounts connected to this Adspirer account across Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads. Free read-only tool — does not consume quota.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_list_connected_accounts\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=adspirer_connections_status": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "connections_status",
        "operationId": "adspirer_connections_status",
        "description": "Diagnostic — show OAuth connection health for each linked ad platform. Free read-only tool — does not consume quota.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_connections_status\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=adspirer_execute_tool": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "execute_tool",
        "operationId": "adspirer_execute_tool",
        "description": "Execute any Adspirer tool by name. Forwards to POST /api/v1/tools/<tool_name>/execute with the supplied args. Tool names follow patterns like google_ads_*, meta_ads_*, linkedin_ads_*, tiktok_ads_*. Free diagnostic tools: get_usage_status, list_connected_accounts, get_connections_status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_execute_tool\",\"arguments\":{\"tool_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tool_name": {
                        "type": "string",
                        "description": "Adspirer tool name, e.g. \"google_ads_list_campaigns\", \"meta_ads_create_campaign\", \"linkedin_ads_create_audience\"."
                      },
                      "args": {
                        "type": "object",
                        "description": "Arguments to pass to the tool. Shape depends on the specific tool."
                      }
                    },
                    "required": [
                      "tool_name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=adspirer_list_campaigns": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "list_campaigns",
        "operationId": "adspirer_list_campaigns",
        "description": "List campaigns on a given ad platform. Convenience wrapper that delegates to the platform-specific Adspirer tool.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_list_campaigns\",\"arguments\":{\"platform\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "platform": {
                        "type": "string",
                        "enum": [
                          "google_ads",
                          "meta_ads",
                          "linkedin_ads",
                          "tiktok_ads"
                        ],
                        "description": "Which ad platform to list campaigns from."
                      },
                      "accountId": {
                        "type": "string",
                        "description": "Optional ad account ID — required for some platforms when more than one account is connected."
                      }
                    },
                    "required": [
                      "platform"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=adspirer_get_performance": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "get_performance",
        "operationId": "adspirer_get_performance",
        "description": "Get performance metrics (impressions, clicks, spend, conversions) for a campaign on a given platform. Date range optional.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_get_performance\",\"arguments\":{\"platform\":\"<string>\",\"campaignId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "platform": {
                        "type": "string",
                        "enum": [
                          "google_ads",
                          "meta_ads",
                          "linkedin_ads",
                          "tiktok_ads"
                        ]
                      },
                      "campaignId": {
                        "type": "string",
                        "description": "Campaign ID on the platform."
                      },
                      "startDate": {
                        "type": "string",
                        "description": "YYYY-MM-DD (optional)."
                      },
                      "endDate": {
                        "type": "string",
                        "description": "YYYY-MM-DD (optional)."
                      }
                    },
                    "required": [
                      "platform",
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=adspirer_create_audience": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "create_audience",
        "operationId": "adspirer_create_audience",
        "description": "Create a retargeting / custom audience on the given platform. Use this for website-visitor retargeting, lookalikes, or contact-list-based audiences.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_create_audience\",\"arguments\":{\"platform\":\"<string>\",\"name\":\"<string>\",\"type\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "platform": {
                        "type": "string",
                        "enum": [
                          "google_ads",
                          "meta_ads",
                          "linkedin_ads",
                          "tiktok_ads"
                        ]
                      },
                      "name": {
                        "type": "string",
                        "description": "Audience name."
                      },
                      "type": {
                        "type": "string",
                        "description": "Audience type — e.g. \"website_visitors\", \"lookalike\", \"customer_list\". Exact set depends on platform."
                      },
                      "spec": {
                        "type": "object",
                        "description": "Platform-specific audience spec. For website_visitors: { pixelId, retentionDays, urlContains? }. For lookalike: { sourceAudienceId, country, sizePercent }."
                      }
                    },
                    "required": [
                      "platform",
                      "name",
                      "type"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=adspirer_create_campaign": {
      "post": {
        "tags": [
          "adspirer"
        ],
        "summary": "create_campaign",
        "operationId": "adspirer_create_campaign",
        "description": "Create a new campaign on the given platform. Will be created PAUSED by default — review and activate manually after.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"adspirer_create_campaign\",\"arguments\":{\"platform\":\"<string>\",\"name\":\"<string>\",\"objective\":\"<string>\",\"dailyBudget\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "platform": {
                        "type": "string",
                        "enum": [
                          "google_ads",
                          "meta_ads",
                          "linkedin_ads",
                          "tiktok_ads"
                        ]
                      },
                      "name": {
                        "type": "string",
                        "description": "Campaign name."
                      },
                      "objective": {
                        "type": "string",
                        "description": "Campaign objective — e.g. \"conversions\", \"traffic\", \"leads\", \"awareness\". Exact values depend on platform."
                      },
                      "dailyBudget": {
                        "type": "number",
                        "description": "Daily budget in account currency."
                      },
                      "audienceId": {
                        "type": "string",
                        "description": "Optional audience ID to target (e.g. a retargeting audience created via create_audience)."
                      },
                      "spec": {
                        "type": "object",
                        "description": "Platform-specific extras (bidding, placements, schedule, etc.)."
                      }
                    },
                    "required": [
                      "platform",
                      "name",
                      "objective",
                      "dailyBudget"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_list_bases": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "list_bases",
        "operationId": "airtable_list_bases",
        "description": "List all bases your token can access. Returns base IDs needed for table/record operations. Requires \"schema.bases:read\" PAT scope.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_list_bases\",\"arguments\":{\"offset\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "string",
                        "description": "Pagination offset token."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_get_base_schema": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "get_base_schema",
        "operationId": "airtable_get_base_schema",
        "description": "Get all tables and fields in a base. Returns table IDs/names + field IDs/types. Use to discover the schema before querying records.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_get_base_schema\",\"arguments\":{\"base_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "base_id": {
                        "type": "string",
                        "description": "Airtable base ID (starts with \"app...\")."
                      }
                    },
                    "required": [
                      "base_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_list_records": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "list_records",
        "operationId": "airtable_list_records",
        "description": "List records from a table. Supports filter, sort, view, and field selection. Returns up to 100 records per request — paginate with offset.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_list_records\",\"arguments\":{\"base_id\":\"<string>\",\"table\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "base_id": {
                        "type": "string",
                        "description": "Base ID."
                      },
                      "table": {
                        "type": "string",
                        "description": "Table ID or name."
                      },
                      "view": {
                        "type": "string",
                        "description": "View ID or name to filter through."
                      },
                      "fields": {
                        "type": "array",
                        "description": "Fields to return. Reduces payload."
                      },
                      "filterByFormula": {
                        "type": "string",
                        "description": "Airtable formula. E.g. {Status}='Active' or AND({Stage}='Lead', {Score}>50)."
                      },
                      "sort": {
                        "type": "array",
                        "description": "Array of [{field, direction:\"asc\"|\"desc\"}]."
                      },
                      "maxRecords": {
                        "type": "number",
                        "description": "Hard limit on total records."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Records per page (max 100)."
                      },
                      "offset": {
                        "type": "string",
                        "description": "Pagination token from previous response."
                      }
                    },
                    "required": [
                      "base_id",
                      "table"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_get_record": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "get_record",
        "operationId": "airtable_get_record",
        "description": "Fetch a single record by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_get_record\",\"arguments\":{\"base_id\":\"<string>\",\"table\":\"<string>\",\"record_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "base_id": {
                        "type": "string",
                        "description": "Base ID."
                      },
                      "table": {
                        "type": "string",
                        "description": "Table ID or name."
                      },
                      "record_id": {
                        "type": "string",
                        "description": "Record ID (starts with \"rec...\")."
                      }
                    },
                    "required": [
                      "base_id",
                      "table",
                      "record_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_create_records": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "create_records",
        "operationId": "airtable_create_records",
        "description": "Create up to 10 records per call. Pass records as array of {fields: {...}}. Set typecast:true to auto-convert strings to the right types.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_create_records\",\"arguments\":{\"base_id\":\"<string>\",\"table\":\"<string>\",\"records\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "base_id": {
                        "type": "string",
                        "description": "Base ID."
                      },
                      "table": {
                        "type": "string",
                        "description": "Table ID or name."
                      },
                      "records": {
                        "type": "array",
                        "description": "Array of record objects: [{fields: {FieldName: \"value\", ...}}]. Max 10."
                      },
                      "typecast": {
                        "type": "boolean",
                        "description": "Auto-coerce strings to select/multi-select/date etc. Default false."
                      }
                    },
                    "required": [
                      "base_id",
                      "table",
                      "records"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_update_records": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "update_records",
        "operationId": "airtable_update_records",
        "description": "Update up to 10 records per call. Pass records as [{id, fields: {...}}]. Uses PATCH — only updates provided fields. Use PUT-style via method:\"PUT\" to clear unspecified fields.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_update_records\",\"arguments\":{\"base_id\":\"<string>\",\"table\":\"<string>\",\"records\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "base_id": {
                        "type": "string",
                        "description": "Base ID."
                      },
                      "table": {
                        "type": "string",
                        "description": "Table ID or name."
                      },
                      "records": {
                        "type": "array",
                        "description": "Array of [{id, fields: {...}}]. Max 10."
                      },
                      "typecast": {
                        "type": "boolean"
                      },
                      "method": {
                        "type": "string",
                        "description": "\"PATCH\" (default) updates only given fields. \"PUT\" clears unspecified."
                      }
                    },
                    "required": [
                      "base_id",
                      "table",
                      "records"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_delete_records": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "delete_records",
        "operationId": "airtable_delete_records",
        "description": "Delete up to 10 records per call by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_delete_records\",\"arguments\":{\"base_id\":\"<string>\",\"table\":\"<string>\",\"record_ids\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "base_id": {
                        "type": "string",
                        "description": "Base ID."
                      },
                      "table": {
                        "type": "string",
                        "description": "Table ID or name."
                      },
                      "record_ids": {
                        "type": "array",
                        "description": "Array of record IDs. Max 10."
                      }
                    },
                    "required": [
                      "base_id",
                      "table",
                      "record_ids"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=airtable_user_info": {
      "post": {
        "tags": [
          "airtable"
        ],
        "summary": "user_info",
        "operationId": "airtable_user_info",
        "description": "Get info about the authenticated user/token including scopes + bases.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"airtable_user_info\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=anthropic_ask": {
      "post": {
        "tags": [
          "anthropic"
        ],
        "summary": "ask",
        "operationId": "anthropic_ask",
        "description": "Ask Claude a question. Single-turn convenience wrapper over /messages. Default model \"claude-sonnet-4-5\" (balanced). Use \"claude-opus-4\" for max quality, \"claude-haiku-4\" for cheap/fast.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"anthropic_ask\",\"arguments\":{\"question\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "question": {
                        "type": "string",
                        "description": "The question."
                      },
                      "model": {
                        "type": "string",
                        "description": "Claude model. \"claude-opus-4\" (smartest), \"claude-sonnet-4-5\" (default), \"claude-haiku-4\" (cheapest)."
                      },
                      "system": {
                        "type": "string",
                        "description": "Optional system prompt."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max output tokens. Default 1024."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Temperature (0-1). Default 1.0."
                      }
                    },
                    "required": [
                      "question"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=anthropic_chat": {
      "post": {
        "tags": [
          "anthropic"
        ],
        "summary": "chat",
        "operationId": "anthropic_chat",
        "description": "Raw Claude /messages call. Multi-turn. Pass your own messages array and optional system prompt. Returns full response including stop_reason and usage counts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"anthropic_chat\",\"arguments\":{\"model\":\"<string>\",\"messages\":[],\"max_tokens\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Claude model name."
                      },
                      "messages": {
                        "type": "array",
                        "description": "Anthropic message format: [{role: \"user\"|\"assistant\", content: \"...\" | [content blocks]}]."
                      },
                      "system": {
                        "type": "string",
                        "description": "System prompt."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max output tokens. Default 1024."
                      },
                      "temperature": {
                        "type": "number"
                      },
                      "top_p": {
                        "type": "number"
                      },
                      "top_k": {
                        "type": "number"
                      },
                      "stop_sequences": {
                        "type": "array",
                        "description": "Custom stop strings."
                      }
                    },
                    "required": [
                      "model",
                      "messages",
                      "max_tokens"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=anthropic_brand_visibility_check": {
      "post": {
        "tags": [
          "anthropic"
        ],
        "summary": "brand_visibility_check",
        "operationId": "anthropic_brand_visibility_check",
        "description": "AEO helper — asks Claude a set of comparison questions and reports whether the target brand is mentioned. Same shape as openai/grok/perplexity equivalents — run same prompt pack across all 4 engines for unified AEO tracking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"anthropic_brand_visibility_check\",\"arguments\":{\"brand\":\"<string>\",\"questions\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "brand": {
                        "type": "string",
                        "description": "Brand name to check for."
                      },
                      "questions": {
                        "type": "array",
                        "description": "Comparison prompts."
                      },
                      "model": {
                        "type": "string",
                        "description": "Claude model. Default \"claude-sonnet-4-5\"."
                      }
                    },
                    "required": [
                      "brand",
                      "questions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=anthropic_count_tokens": {
      "post": {
        "tags": [
          "anthropic"
        ],
        "summary": "count_tokens",
        "operationId": "anthropic_count_tokens",
        "description": "Count input tokens for a message list without running the model. Useful for budget planning on bulk operations. Free.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"anthropic_count_tokens\",\"arguments\":{\"model\":\"<string>\",\"messages\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Claude model."
                      },
                      "messages": {
                        "type": "array",
                        "description": "Anthropic message format."
                      },
                      "system": {
                        "type": "string",
                        "description": "Optional system prompt."
                      }
                    },
                    "required": [
                      "model",
                      "messages"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=anthropic_list_models": {
      "post": {
        "tags": [
          "anthropic"
        ],
        "summary": "list_models",
        "operationId": "anthropic_list_models",
        "description": "List available Claude models with their IDs and pricing tier.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"anthropic_list_models\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_run_actor_sync": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "run_actor_sync",
        "operationId": "apify_run_actor_sync",
        "description": "Run an Apify Actor synchronously and return dataset items when finished. Best for quick scrapes that complete under 5 minutes (Apify's sync timeout). Returns scraped data directly. Example actors: apify/web-scraper, apify/google-maps-scraper, apify/instagram-scraper, apify/linkedin-profile-scraper.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_run_actor_sync\",\"arguments\":{\"actorId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "actorId": {
                        "type": "string",
                        "description": "Actor identifier — either \"username~actor-name\" (e.g. \"apify/google-maps-scraper\") or just the actor ID."
                      },
                      "input": {
                        "type": "object",
                        "description": "Input JSON for the actor. Shape depends on the actor — use get_actor to see its input schema first. Common fields: startUrls, keywords, maxItems."
                      },
                      "timeout": {
                        "type": "number",
                        "description": "Run timeout in seconds. Max 300 for sync endpoints. Default 120."
                      },
                      "memoryMbytes": {
                        "type": "number",
                        "description": "Memory allocation for the run. More memory = faster, more cost. Default 1024, max depends on plan."
                      },
                      "maxItems": {
                        "type": "number",
                        "description": "Limit number of dataset rows returned. Keeps cost predictable."
                      }
                    },
                    "required": [
                      "actorId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_run_actor_async": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "run_actor_async",
        "operationId": "apify_run_actor_async",
        "description": "Start an Apify Actor run asynchronously. Returns run ID immediately — use get_run to poll status and get_dataset_items when finished. Use this for long-running scrapes (> 5 min).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_run_actor_async\",\"arguments\":{\"actorId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "actorId": {
                        "type": "string",
                        "description": "Actor identifier."
                      },
                      "input": {
                        "type": "object",
                        "description": "Input JSON for the actor."
                      },
                      "timeout": {
                        "type": "number",
                        "description": "Run timeout in seconds."
                      },
                      "memoryMbytes": {
                        "type": "number",
                        "description": "Memory allocation."
                      },
                      "webhooks": {
                        "type": "array",
                        "description": "Webhooks to call on run events (ACTOR.RUN.SUCCEEDED, ACTOR.RUN.FAILED). Each: {eventTypes, requestUrl}."
                      }
                    },
                    "required": [
                      "actorId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_get_run": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "get_run",
        "operationId": "apify_get_run",
        "description": "Get status and details of an Actor run. Status values: READY, RUNNING, SUCCEEDED, FAILED, ABORTED, TIMING-OUT, TIMED-OUT. When status=SUCCEEDED, use defaultDatasetId with get_dataset_items.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_get_run\",\"arguments\":{\"runId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "runId": {
                        "type": "string",
                        "description": "Apify run ID."
                      }
                    },
                    "required": [
                      "runId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_abort_run": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "abort_run",
        "operationId": "apify_abort_run",
        "description": "Abort a running Actor. Stops compute charges. Run remains in history with status ABORTED.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_abort_run\",\"arguments\":{\"runId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "runId": {
                        "type": "string",
                        "description": "Apify run ID."
                      }
                    },
                    "required": [
                      "runId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_get_dataset_items": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "get_dataset_items",
        "operationId": "apify_get_dataset_items",
        "description": "Fetch items from an Apify dataset (the output of an Actor run). Use after get_run shows SUCCEEDED.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_get_dataset_items\",\"arguments\":{\"datasetId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "datasetId": {
                        "type": "string",
                        "description": "Dataset ID (from run.defaultDatasetId)."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max items to return. Default 100."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset. Default 0."
                      },
                      "format": {
                        "type": "string",
                        "description": "\"json\" (default), \"csv\", \"xml\", \"html\", \"rss\"."
                      },
                      "clean": {
                        "type": "boolean",
                        "description": "If true, only return fields that aren't internal Apify metadata."
                      }
                    },
                    "required": [
                      "datasetId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_list_actors": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "list_actors",
        "operationId": "apify_list_actors",
        "description": "List Actors you own or have added to your account. For discovering public scrapers, use search_store instead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_list_actors\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results. Default 1000."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      },
                      "my": {
                        "type": "boolean",
                        "description": "If true, only return actors owned by you. Default false (all accessible)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_get_actor": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "get_actor",
        "operationId": "apify_get_actor",
        "description": "Get details for a specific Actor, including its input schema. Use before run_actor to understand required input fields.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_get_actor\",\"arguments\":{\"actorId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "actorId": {
                        "type": "string",
                        "description": "Actor ID or \"username~actor-name\"."
                      }
                    },
                    "required": [
                      "actorId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_search_store": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "search_store",
        "operationId": "apify_search_store",
        "description": "Search the public Apify Store for Actors (pre-built scrapers). Try queries like \"linkedin\", \"google maps\", \"amazon\", \"instagram\", \"shopify\", \"email scraper\", \"contact finder\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_search_store\",\"arguments\":{\"search\":\"<string>\",\"category\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "search": {
                        "type": "string",
                        "description": "Search query, e.g. \"linkedin profile scraper\"."
                      },
                      "category": {
                        "type": "string",
                        "description": "Category filter: \"ECOMMERCE\", \"SOCIAL_MEDIA\", \"JOBS\", \"TRAVEL\", \"SEO\", \"LEAD_GENERATION\", \"NEWS\", \"REAL_ESTATE\", etc."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results. Default 20."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      },
                      "sortBy": {
                        "type": "string",
                        "description": "\"relevance\" (default for search), \"popularity\", \"newest\", \"lastUpdated\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_list_runs": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "list_runs",
        "operationId": "apify_list_runs",
        "description": "List recent Actor runs on your account with status, duration, and cost. Useful for cost auditing and finding recent dataset IDs.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_list_runs\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max runs to return. Default 100."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      },
                      "status": {
                        "type": "string",
                        "description": "Filter by status: \"READY\", \"RUNNING\", \"SUCCEEDED\", \"FAILED\", \"ABORTED\", \"TIMED-OUT\"."
                      },
                      "desc": {
                        "type": "boolean",
                        "description": "Sort newest first. Default true."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apify_user_info": {
      "post": {
        "tags": [
          "apify"
        ],
        "summary": "user_info",
        "operationId": "apify_user_info",
        "description": "Get Apify account info: username, plan, used + remaining platform credit in USD, monthly usage by service (compute, storage, proxy). Call before bulk scrapes to check budget.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apify_user_info\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_search_people": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "search_people",
        "operationId": "apollo_search_people",
        "description": "Search Apollo's B2B people database by title, company, seniority, department, location, etc. Returns contacts with names, titles, companies. Revealing email costs credits — this search step itself is free.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_search_people\",\"arguments\":{\"q_keywords\":\"<string>\",\"person_titles\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q_keywords": {
                        "type": "string",
                        "description": "Free-text keywords (name, title)."
                      },
                      "person_titles": {
                        "type": "array",
                        "description": "Job title filters, e.g. [\"CEO\", \"VP Marketing\"]."
                      },
                      "person_seniorities": {
                        "type": "array",
                        "description": "Seniority filters: \"c_suite\", \"vp\", \"director\", \"manager\", \"senior\", \"entry\", \"owner\", \"founder\", \"partner\", \"intern\"."
                      },
                      "person_departments": {
                        "type": "array",
                        "description": "Department filters: \"master_marketing\", \"master_sales\", \"master_engineering\", etc."
                      },
                      "person_locations": {
                        "type": "array",
                        "description": "City/state/country locations, e.g. [\"San Francisco, CA\"]."
                      },
                      "organization_ids": {
                        "type": "array",
                        "description": "Apollo org IDs to filter by."
                      },
                      "organization_num_employees_ranges": {
                        "type": "array",
                        "description": "Headcount ranges, e.g. [\"1,10\", \"11,50\", \"51,200\"]."
                      },
                      "q_organization_domains": {
                        "type": "string",
                        "description": "Newline-separated list of company domains to filter by."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number. Default 1."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Results per page. Max 100, default 25."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_enrich_person": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "enrich_person",
        "operationId": "apollo_enrich_person",
        "description": "Enrich a person by email OR name+domain. Returns full profile: current role, company, LinkedIn, phone, email (if credits available). Costs credits when email is revealed.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_enrich_person\",\"arguments\":{\"email\":\"<string>\",\"first_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Email address to enrich."
                      },
                      "first_name": {
                        "type": "string",
                        "description": "First name (required if no email)."
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Last name (required if no email)."
                      },
                      "organization_name": {
                        "type": "string",
                        "description": "Company name."
                      },
                      "domain": {
                        "type": "string",
                        "description": "Company domain (preferred over name)."
                      },
                      "linkedin_url": {
                        "type": "string",
                        "description": "LinkedIn profile URL (alternative lookup)."
                      },
                      "reveal_personal_emails": {
                        "type": "boolean",
                        "description": "If true, reveal personal email (+credit cost). Default false."
                      },
                      "reveal_phone_number": {
                        "type": "boolean",
                        "description": "If true, reveal phone (costs ~5 credits). Default false."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_search_companies": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "search_companies",
        "operationId": "apollo_search_companies",
        "description": "Search Apollo's B2B company database by industry, size, location, tech stack, funding, etc. Returns orgs with domain, headcount, industry, funding.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_search_companies\",\"arguments\":{\"q_organization_keywords\":\"<string>\",\"organization_industries\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q_organization_keywords": {
                        "type": "string",
                        "description": "Free-text keywords."
                      },
                      "organization_industries": {
                        "type": "array",
                        "description": "Industry filters."
                      },
                      "organization_num_employees_ranges": {
                        "type": "array",
                        "description": "Headcount ranges, e.g. [\"51,200\", \"201,500\"]."
                      },
                      "organization_locations": {
                        "type": "array",
                        "description": "HQ locations, e.g. [\"California, USA\"]."
                      },
                      "q_organization_domains": {
                        "type": "string",
                        "description": "Newline-separated list of exact domains to match."
                      },
                      "technologies": {
                        "type": "array",
                        "description": "Tech stack filter, e.g. [\"hubspot\", \"salesforce\"]."
                      },
                      "organization_latest_funding_stage_cd": {
                        "type": "array",
                        "description": "Funding stages: \"seed\", \"series_a\", \"series_b\", etc."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number. Default 1."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Results per page. Max 100, default 25."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_enrich_company": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "enrich_company",
        "operationId": "apollo_enrich_company",
        "description": "Enrich a company by domain. Returns headcount, industry, tech stack, funding, LinkedIn, revenue estimate. Credit-cheap — good for account research.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_enrich_company\",\"arguments\":{\"domain\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "domain": {
                        "type": "string",
                        "description": "Company domain, e.g. \"hubspot.com\"."
                      }
                    },
                    "required": [
                      "domain"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_get_company": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "get_company",
        "operationId": "apollo_get_company",
        "description": "Get a single Apollo organization by its Apollo organization ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_get_company\",\"arguments\":{\"organization_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "organization_id": {
                        "type": "string",
                        "description": "Apollo organization ID."
                      }
                    },
                    "required": [
                      "organization_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_create_contact": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "create_contact",
        "operationId": "apollo_create_contact",
        "description": "Create a new contact in your Apollo CRM (for tracking / list building). Separate from revealing — this saves the person to your account.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_create_contact\",\"arguments\":{\"first_name\":\"<string>\",\"last_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "first_name": {
                        "type": "string",
                        "description": "First name."
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Last name."
                      },
                      "title": {
                        "type": "string",
                        "description": "Job title."
                      },
                      "email": {
                        "type": "string",
                        "description": "Email address."
                      },
                      "organization_name": {
                        "type": "string",
                        "description": "Company name."
                      },
                      "phone_numbers": {
                        "type": "array",
                        "description": "Phone numbers to attach."
                      },
                      "label_names": {
                        "type": "array",
                        "description": "Apollo list/label names to tag with."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_list_contacts": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "list_contacts",
        "operationId": "apollo_list_contacts",
        "description": "List contacts in your Apollo CRM, with optional search and pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_list_contacts\",\"arguments\":{\"q_keywords\":\"<string>\",\"page\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q_keywords": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number. Default 1."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Results per page. Max 100, default 25."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_add_contacts_to_sequence": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "add_contacts_to_sequence",
        "operationId": "apollo_add_contacts_to_sequence",
        "description": "Add one or more existing Apollo contacts to an Apollo email sequence (Emailer Campaign). Requires the sequence to exist and be active.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_add_contacts_to_sequence\",\"arguments\":{\"emailer_campaign_id\":\"<string>\",\"contact_ids\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "emailer_campaign_id": {
                        "type": "string",
                        "description": "Apollo emailer_campaign (sequence) ID."
                      },
                      "contact_ids": {
                        "type": "array",
                        "description": "Array of Apollo contact IDs to enroll."
                      },
                      "send_email_from_email_account_id": {
                        "type": "string",
                        "description": "Email account to send from (optional)."
                      }
                    },
                    "required": [
                      "emailer_campaign_id",
                      "contact_ids"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=apollo_account_info": {
      "post": {
        "tags": [
          "apollo"
        ],
        "summary": "account_info",
        "operationId": "apollo_account_info",
        "description": "Return current Apollo account info: plan, remaining credits (emails + mobile), team usage. Call before bulk enrichment to check quota.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"apollo_account_info\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_query": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "query",
        "operationId": "brain_query",
        "description": "Run a read-only SQL SELECT against YOUR personal brain — a Postgres warehouse holding your synced HubSpot contacts/deals/activities and Outlook email metadata. Use this for joins, aggregates, and filtering that would otherwise require many separate MCP calls. Tables: contacts, deals, activities, email_metadata, sync_log. You can ONLY see your own data — search_path is locked to your user-specific schema. Call brain_schema first if you need column details. Only one SELECT statement per call. No INSERT/UPDATE/DELETE. Default limit 1000 rows.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_query\",\"arguments\":{\"sql\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "sql": {
                        "type": "string",
                        "description": "A single SELECT (or WITH ... SELECT) statement. Reference tables bare (e.g. `FROM contacts`) — search_path is locked to your own schema."
                      },
                      "max_rows": {
                        "type": "number",
                        "description": "Max rows to return (default 1000, max 10000)."
                      },
                      "timeout_ms": {
                        "type": "number",
                        "description": "Statement timeout in milliseconds (default 5000, max 30000)."
                      }
                    },
                    "required": [
                      "sql"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_schema": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "schema",
        "operationId": "brain_schema",
        "description": "Get the schema description for the brain (tables, columns, types, descriptions). Call this before writing a query if you're not sure what columns exist. Static — same for every user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_schema\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_stats": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "stats",
        "operationId": "brain_stats",
        "description": "Get freshness and row counts for each table in YOUR brain. Returns last sync timestamp, row count, and staleness in seconds. Use this to decide whether the brain is fresh enough or you should fall back to a live MCP call.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_stats\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_create_contact": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "create_contact",
        "operationId": "brain_create_contact",
        "description": "Create a contact directly in your brain (no external CRM needed). Returns the new contact ID. At minimum provide email or first_name+last_name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_create_contact\",\"arguments\":{\"email\":\"<string>\",\"first_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Contact email address."
                      },
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      },
                      "company": {
                        "type": "string"
                      },
                      "job_title": {
                        "type": "string"
                      },
                      "lifecycle_stage": {
                        "type": "string",
                        "description": "e.g. lead, opportunity, customer"
                      },
                      "owner_id": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_update_contact": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "update_contact",
        "operationId": "brain_update_contact",
        "description": "Update a contact in your brain by ID. Pass only the fields you want to change.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_update_contact\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Contact ID to update."
                      },
                      "email": {
                        "type": "string"
                      },
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      },
                      "company": {
                        "type": "string"
                      },
                      "job_title": {
                        "type": "string"
                      },
                      "lifecycle_stage": {
                        "type": "string"
                      },
                      "owner_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_delete_contact": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "delete_contact",
        "operationId": "brain_delete_contact",
        "description": "Delete a contact from your brain by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_delete_contact\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Contact ID to delete."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_create_deal": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "create_deal",
        "operationId": "brain_create_deal",
        "description": "Create a deal directly in your brain. Returns the new deal ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_create_deal\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Deal name (required)."
                      },
                      "amount": {
                        "type": "number"
                      },
                      "stage": {
                        "type": "string"
                      },
                      "stage_label": {
                        "type": "string"
                      },
                      "pipeline": {
                        "type": "string"
                      },
                      "pipeline_label": {
                        "type": "string"
                      },
                      "close_date": {
                        "type": "string",
                        "description": "YYYY-MM-DD"
                      },
                      "owner_id": {
                        "type": "string"
                      },
                      "contact_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Associated contact IDs."
                      },
                      "company_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_update_deal": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "update_deal",
        "operationId": "brain_update_deal",
        "description": "Update a deal in your brain by ID. Pass only the fields you want to change.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_update_deal\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Deal ID to update."
                      },
                      "name": {
                        "type": "string"
                      },
                      "amount": {
                        "type": "number"
                      },
                      "stage": {
                        "type": "string"
                      },
                      "stage_label": {
                        "type": "string"
                      },
                      "pipeline": {
                        "type": "string"
                      },
                      "pipeline_label": {
                        "type": "string"
                      },
                      "close_date": {
                        "type": "string"
                      },
                      "is_closed": {
                        "type": "boolean"
                      },
                      "is_won": {
                        "type": "boolean"
                      },
                      "owner_id": {
                        "type": "string"
                      },
                      "contact_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "company_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "step": {
                        "type": "number"
                      },
                      "next_step_date": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_delete_deal": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "delete_deal",
        "operationId": "brain_delete_deal",
        "description": "Delete a deal from your brain by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_delete_deal\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Deal ID to delete."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_create_company": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "create_company",
        "operationId": "brain_create_company",
        "description": "Create a company directly in your brain. Returns the new company ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_create_company\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Company name (required)."
                      },
                      "domain": {
                        "type": "string",
                        "description": "Primary web domain."
                      },
                      "industry": {
                        "type": "string"
                      },
                      "website": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string"
                      },
                      "owner_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_update_company": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "update_company",
        "operationId": "brain_update_company",
        "description": "Update a company in your brain by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_update_company\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Company ID to update."
                      },
                      "name": {
                        "type": "string"
                      },
                      "domain": {
                        "type": "string"
                      },
                      "industry": {
                        "type": "string"
                      },
                      "website": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string"
                      },
                      "owner_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_delete_company": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "delete_company",
        "operationId": "brain_delete_company",
        "description": "Delete a company from your brain by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_delete_company\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Company ID to delete."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_create_task": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "create_task",
        "operationId": "brain_create_task",
        "description": "Create a task directly in your brain. Returns the new task ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_create_task\",\"arguments\":{\"subject\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Task title (required)."
                      },
                      "body": {
                        "type": "string",
                        "description": "Task description/notes."
                      },
                      "status": {
                        "type": "string",
                        "description": "NOT_STARTED | IN_PROGRESS | COMPLETED | DEFERRED | WAITING"
                      },
                      "priority": {
                        "type": "string",
                        "description": "LOW | MEDIUM | HIGH"
                      },
                      "task_type": {
                        "type": "string",
                        "description": "TODO | CALL | EMAIL"
                      },
                      "due_date": {
                        "type": "string",
                        "description": "YYYY-MM-DD"
                      },
                      "contact_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "deal_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "company_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "owner_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "subject"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_update_task": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "update_task",
        "operationId": "brain_update_task",
        "description": "Update a task in your brain by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_update_task\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Task ID to update."
                      },
                      "subject": {
                        "type": "string"
                      },
                      "body": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "priority": {
                        "type": "string"
                      },
                      "task_type": {
                        "type": "string"
                      },
                      "due_date": {
                        "type": "string"
                      },
                      "completion_date": {
                        "type": "string"
                      },
                      "contact_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "deal_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "company_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "owner_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_delete_task": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "delete_task",
        "operationId": "brain_delete_task",
        "description": "Delete a task from your brain by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_delete_task\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Task ID to delete."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_search_contacts_fts": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "search_contacts_fts",
        "operationId": "brain_search_contacts_fts",
        "description": "Full-text search contacts using the GIN-indexed tsvector column. Much faster than LIKE '%query%' for large contact lists. Searches across name, email, company, job title, and phone.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_search_contacts_fts\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search terms (space-separated words, matched as AND)."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 20, max 200)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_data_quality": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "data_quality",
        "operationId": "brain_data_quality",
        "description": "Get data quality scores for your contacts. Returns a summary showing completeness percentages and which fields are most commonly missing. Use this to identify contacts that need enrichment.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_data_quality\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_changelog": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "changelog",
        "operationId": "brain_changelog",
        "description": "View the brain sync changelog — shows what changed in recent syncs. Useful for auditing what data was added or updated.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_changelog\",\"arguments\":{\"table_name\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "table_name": {
                        "type": "string",
                        "description": "Filter to specific table (contacts, deals, etc.)."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max entries (default 50, max 500)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_create_activity": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "create_activity",
        "operationId": "brain_create_activity",
        "description": "Log an activity (email, call, meeting, note) directly in your brain. Returns the new activity ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_create_activity\",\"arguments\":{\"type\":\"<string>\",\"subject\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "description": "email | call | meeting | note | task (required)."
                      },
                      "subject": {
                        "type": "string",
                        "description": "Activity subject (required)."
                      },
                      "body_preview": {
                        "type": "string",
                        "description": "First ~500 chars of body."
                      },
                      "direction": {
                        "type": "string",
                        "description": "inbound | outbound"
                      },
                      "status": {
                        "type": "string"
                      },
                      "outcome": {
                        "type": "string"
                      },
                      "contact_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "deal_ids": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "owner_id": {
                        "type": "string"
                      },
                      "timestamp": {
                        "type": "string",
                        "description": "ISO 8601. Defaults to now."
                      },
                      "duration_ms": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "type",
                      "subject"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_create_table": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "create_table",
        "operationId": "brain_create_table",
        "description": "Create a new user-owned table in YOUR brain schema. Use for tracking issues, red flags, ordered tasks, or any custom list. id (SERIAL PK), created_at, updated_at are auto-added. Max 20 user tables, 50 columns each, 3001 rows each. For sequenced/ordered lists, add a 'sequence_num INTEGER' column and UPDATE it via brain_write to reorder. Allowed types: TEXT, INTEGER, BIGINT, NUMERIC, BOOLEAN, DATE, TIMESTAMPTZ, JSONB, TEXT[], INTEGER[].\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_create_table\",\"arguments\":{\"table_name\":\"<string>\",\"columns\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "table_name": {
                        "type": "string",
                        "description": "Lowercase, starts with letter, a-z/0-9/underscore only. Max 63 chars."
                      },
                      "columns": {
                        "type": "array",
                        "description": "Column definitions.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "type": {
                              "type": "string",
                              "description": "TEXT | INTEGER | BIGINT | NUMERIC | BOOLEAN | DATE | TIMESTAMPTZ | JSONB | TEXT[] | INTEGER[]"
                            },
                            "nullable": {
                              "type": "boolean",
                              "description": "Default true."
                            },
                            "default_value": {
                              "type": "string",
                              "description": "SQL default expression."
                            }
                          },
                          "required": [
                            "name",
                            "type"
                          ]
                        }
                      }
                    },
                    "required": [
                      "table_name",
                      "columns"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_list_tables": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "list_tables",
        "operationId": "brain_list_tables",
        "description": "List user-owned tables in YOUR brain schema with row counts and column info. Does not include core sync tables (contacts, deals, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_list_tables\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_alter_table": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "alter_table",
        "operationId": "brain_alter_table",
        "description": "Add, drop, or rename a column on a user-owned table. Cannot modify id, created_at, updated_at.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_alter_table\",\"arguments\":{\"table_name\":\"<string>\",\"action\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "table_name": {
                        "type": "string"
                      },
                      "action": {
                        "type": "string",
                        "description": "add_column | drop_column | rename_column"
                      },
                      "name": {
                        "type": "string",
                        "description": "Column name (for add_column or drop_column)."
                      },
                      "old_name": {
                        "type": "string",
                        "description": "Existing column name (for rename_column)."
                      },
                      "new_name": {
                        "type": "string",
                        "description": "New column name (for rename_column)."
                      },
                      "type": {
                        "type": "string",
                        "description": "Column type (for add_column)."
                      },
                      "nullable": {
                        "type": "boolean"
                      },
                      "default_value": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "table_name",
                      "action"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_drop_table": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "drop_table",
        "operationId": "brain_drop_table",
        "description": "Drop a user-owned table from YOUR brain schema. Cannot drop core sync tables. This is irreversible.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_drop_table\",\"arguments\":{\"table_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "table_name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "table_name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brain_write": {
      "post": {
        "tags": [
          "brain"
        ],
        "summary": "write",
        "operationId": "brain_write",
        "description": "Execute INSERT, UPDATE, or DELETE against a user-owned table. Single statement only. Core sync tables are read-only — use brain_create_* tools instead. Reference tables unqualified (e.g. `INSERT INTO issues (...) VALUES (...)`). Example reorder: `UPDATE issues SET sequence_num = 3 WHERE id = 7`. 3001 row cap per table enforced on INSERT.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brain_write\",\"arguments\":{\"sql\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "sql": {
                        "type": "string",
                        "description": "A single INSERT, UPDATE, or DELETE statement."
                      },
                      "timeout_ms": {
                        "type": "number",
                        "description": "Statement timeout in ms (default 5000, max 30000)."
                      }
                    },
                    "required": [
                      "sql"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brave-search_web_search": {
      "post": {
        "tags": [
          "brave-search"
        ],
        "summary": "web_search",
        "operationId": "brave-search_web_search",
        "description": "Brave web search. Independent index — not Google/Bing. Good for AEO research, fact-checking, and search-grounded agents. Returns organic results, infobox, discussions, FAQ, news blocks.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brave-search_web_search\",\"arguments\":{\"q\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "count": {
                        "type": "number",
                        "description": "Number of results (1-20). Default 10."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset. Default 0."
                      },
                      "country": {
                        "type": "string",
                        "description": "2-letter country code (e.g. \"US\", \"GB\")."
                      },
                      "search_lang": {
                        "type": "string",
                        "description": "Language code (e.g. \"en\", \"es\")."
                      },
                      "safesearch": {
                        "type": "string",
                        "description": "Filter adult content: off | moderate | strict."
                      },
                      "freshness": {
                        "type": "string",
                        "description": "Recency filter: pd (past day) | pw (past week) | pm (past month) | py (past year)."
                      }
                    },
                    "required": [
                      "q"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brave-search_news_search": {
      "post": {
        "tags": [
          "brave-search"
        ],
        "summary": "news_search",
        "operationId": "brave-search_news_search",
        "description": "Brave news search. Recent articles from news sources. Same filter set as web_search — use freshness=pd/pw for breaking-news feeds.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brave-search_news_search\",\"arguments\":{\"q\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "count": {
                        "type": "number",
                        "description": "Number of results (1-20). Default 10."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset. Default 0."
                      },
                      "country": {
                        "type": "string",
                        "description": "2-letter country code."
                      },
                      "search_lang": {
                        "type": "string",
                        "description": "Language code."
                      },
                      "safesearch": {
                        "type": "string",
                        "description": "Filter: off | moderate | strict."
                      },
                      "freshness": {
                        "type": "string",
                        "description": "Recency: pd (past day) | pw (past week) | pm (past month) | py (past year)."
                      }
                    },
                    "required": [
                      "q"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brave-search_image_search": {
      "post": {
        "tags": [
          "brave-search"
        ],
        "summary": "image_search",
        "operationId": "brave-search_image_search",
        "description": "Brave image search. Returns image results with thumbnails, source URLs, and metadata.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brave-search_image_search\",\"arguments\":{\"q\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "count": {
                        "type": "number",
                        "description": "Number of results (1-20). Default 10."
                      },
                      "country": {
                        "type": "string",
                        "description": "2-letter country code."
                      },
                      "safesearch": {
                        "type": "string",
                        "description": "Filter: off | moderate | strict."
                      }
                    },
                    "required": [
                      "q"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brave-search_video_search": {
      "post": {
        "tags": [
          "brave-search"
        ],
        "summary": "video_search",
        "operationId": "brave-search_video_search",
        "description": "Brave video search. Returns video results with thumbnails, duration, source, and publisher.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brave-search_video_search\",\"arguments\":{\"q\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "count": {
                        "type": "number",
                        "description": "Number of results (1-20). Default 10."
                      },
                      "country": {
                        "type": "string",
                        "description": "2-letter country code."
                      }
                    },
                    "required": [
                      "q"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brave-search_summarizer": {
      "post": {
        "tags": [
          "brave-search"
        ],
        "summary": "summarizer",
        "operationId": "brave-search_summarizer",
        "description": "Brave AI summarizer. Takes a summary key returned from web_search (look for \"summarizer.key\" in the web_search response when a summary is available) and returns an LLM-generated answer grounded in the underlying results. Chain: call web_search first, grab key, then call summarizer with it.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brave-search_summarizer\",\"arguments\":{\"key\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "key": {
                        "type": "string",
                        "description": "Summary key from a prior web_search response (response.summarizer.key)."
                      },
                      "entity_info": {
                        "type": "boolean",
                        "description": "Include entity info blocks in the summary. Default false."
                      }
                    },
                    "required": [
                      "key"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=brave-search_suggest": {
      "post": {
        "tags": [
          "brave-search"
        ],
        "summary": "suggest",
        "operationId": "brave-search_suggest",
        "description": "Brave autocomplete. Returns suggested completions for a partial query. Good for prompt exploration and keyword discovery.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"brave-search_suggest\",\"arguments\":{\"q\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string",
                        "description": "Partial query to autocomplete."
                      },
                      "country": {
                        "type": "string",
                        "description": "2-letter country code."
                      }
                    },
                    "required": [
                      "q"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=buffer_buffer_list_profiles": {
      "post": {
        "tags": [
          "buffer"
        ],
        "summary": "buffer_list_profiles",
        "operationId": "buffer_buffer_list_profiles",
        "description": "List all Buffer profiles (connected social accounts — Twitter, LinkedIn, Facebook, Instagram, etc). Returns id, service, display_name for each.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"buffer_buffer_list_profiles\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=buffer_buffer_create_update": {
      "post": {
        "tags": [
          "buffer"
        ],
        "summary": "buffer_create_update",
        "operationId": "buffer_buffer_create_update",
        "description": "Create a Buffer update (scheduled post). profileIds is an array of Buffer profile IDs from buffer_list_profiles. text is the post body. Set now=true to publish immediately instead of queuing.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"buffer_buffer_create_update\",\"arguments\":{\"profileIds\":[],\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "profileIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "text": {
                        "type": "string"
                      },
                      "mediaUrl": {
                        "type": "string",
                        "description": "Optional image/video URL to attach."
                      },
                      "link": {
                        "type": "string"
                      },
                      "now": {
                        "type": "boolean",
                        "description": "Publish immediately. Default: false (adds to queue)."
                      },
                      "scheduledAt": {
                        "type": "string",
                        "description": "ISO timestamp. Overrides `now`."
                      }
                    },
                    "required": [
                      "profileIds",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=buffer_buffer_list_pending": {
      "post": {
        "tags": [
          "buffer"
        ],
        "summary": "buffer_list_pending",
        "operationId": "buffer_buffer_list_pending",
        "description": "List queued updates on a given Buffer profile.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"buffer_buffer_list_pending\",\"arguments\":{\"profileId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "profileId": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "profileId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=buffer_buffer_post_campaign": {
      "post": {
        "tags": [
          "buffer"
        ],
        "summary": "buffer_post_campaign",
        "operationId": "buffer_buffer_post_campaign",
        "description": "Publish a CampaignChannel via Buffer. Content payload: { text, profileIds[], mediaUrl?, link?, now? }. Updates the CampaignChannel with the Buffer update_ids as providerRef.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"buffer_buffer_post_campaign\",\"arguments\":{\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channelId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=claude-mailbox_send": {
      "post": {
        "tags": [
          "claude-mailbox"
        ],
        "summary": "send",
        "operationId": "claude-mailbox_send",
        "description": "Leave an async message for another Claude identity. `to` is a free-form identity string the recipient will recognize (e.g. \"windows\", \"mac\", \"legion\", or another user's email/userId). Optional `replyTo` threads the message under an existing one. Returns the new message id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"claude-mailbox_send\",\"arguments\":{\"to\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "Recipient identity (e.g. \"windows\", \"mac\", an email, a userId)."
                      },
                      "message": {
                        "type": "string",
                        "description": "Message body. Plain text or markdown. Max 64,000 chars."
                      },
                      "replyTo": {
                        "type": "string",
                        "description": "Optional id of the message this is a reply to."
                      }
                    },
                    "required": [
                      "to",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=claude-mailbox_inbox": {
      "post": {
        "tags": [
          "claude-mailbox"
        ],
        "summary": "inbox",
        "operationId": "claude-mailbox_inbox",
        "description": "List messages addressed to the calling identity — matches the caller's userId, email, OR credentials.machineIdentity (if set). Defaults to unread only, most recent first.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"claude-mailbox_inbox\",\"arguments\":{\"unreadOnly\":false,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "unreadOnly": {
                        "type": "boolean",
                        "description": "If true (default), only returns unread messages."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max messages to return (default 50, max 500)."
                      }
                    },
                    "required": []
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=claude-mailbox_read": {
      "post": {
        "tags": [
          "claude-mailbox"
        ],
        "summary": "read",
        "operationId": "claude-mailbox_read",
        "description": "Fetch the full message body + metadata by id and mark it as read. Only returns messages addressed to one of the caller's identities.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"claude-mailbox_read\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Message id (returned by inbox or send)."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=claude-mailbox_reply": {
      "post": {
        "tags": [
          "claude-mailbox"
        ],
        "summary": "reply",
        "operationId": "claude-mailbox_reply",
        "description": "Reply to a specific message. Looks up the original by id, sends a new message back to its sender, and links them via replyTo. Returns the new message id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"claude-mailbox_reply\",\"arguments\":{\"originalId\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "originalId": {
                        "type": "string",
                        "description": "Id of the message being replied to."
                      },
                      "message": {
                        "type": "string",
                        "description": "Reply body. Max 64,000 chars."
                      }
                    },
                    "required": [
                      "originalId",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_serp_google_organic": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "serp_google_organic",
        "operationId": "dataforseo_serp_google_organic",
        "description": "Live Google organic SERP (advanced) with all elements: organic results, People Also Ask, knowledge panel, featured snippets, AI Overviews. Use for SEO + AEO visibility checks. ~$0.002 per request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_serp_google_organic\",\"arguments\":{\"keyword\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "keyword": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code. 2840 = US, 2826 = UK, 2124 = Canada. List at /v3/serp/google/locations."
                      },
                      "location_name": {
                        "type": "string",
                        "description": "Alt to location_code, e.g. \"United States\"."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language code, e.g. \"en\", \"es\"."
                      },
                      "depth": {
                        "type": "number",
                        "description": "Number of results to fetch. Default 10, max 700. Cost scales with depth."
                      },
                      "device": {
                        "type": "string",
                        "description": "\"desktop\" or \"mobile\". Default desktop."
                      }
                    },
                    "required": [
                      "keyword"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_backlinks_summary": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "backlinks_summary",
        "operationId": "dataforseo_backlinks_summary",
        "description": "Backlink overview for a domain or URL: total backlinks, referring domains, rank, spam score, anchor diversity. One call, cheap. ~$0.02.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_backlinks_summary\",\"arguments\":{\"target\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Domain (e.g. \"example.com\") or URL. Bare domain recommended."
                      },
                      "internal_list_limit": {
                        "type": "number",
                        "description": "Limit for inner lists (anchors, countries). Default 10."
                      },
                      "backlinks_status_type": {
                        "type": "string",
                        "description": "\"live\", \"lost\", or \"all\". Default \"live\"."
                      }
                    },
                    "required": [
                      "target"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_backlinks_list": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "backlinks_list",
        "operationId": "dataforseo_backlinks_list",
        "description": "Full backlink list for a target, filterable and paginated. Returns link URL, anchor text, domain rank, follow/nofollow. ~$0.02 + $0.00003/row.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_backlinks_list\",\"arguments\":{\"target\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Domain or URL."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max rows. Default 100, max 1000."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      },
                      "mode": {
                        "type": "string",
                        "description": "\"as_is\" (all), \"one_per_domain\", or \"one_per_anchor\". Default \"as_is\"."
                      },
                      "filters": {
                        "type": "array",
                        "description": "Filter array, e.g. [[\"dofollow\",\"=\",true]]. See DataForSEO filters docs."
                      }
                    },
                    "required": [
                      "target"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_referring_domains": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "referring_domains",
        "operationId": "dataforseo_referring_domains",
        "description": "Referring domains list for a target with rank, link count, first/last seen dates. ~$0.02 + $0.00003/row.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_referring_domains\",\"arguments\":{\"target\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Domain or URL."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max rows. Default 100."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      },
                      "order_by": {
                        "type": "array",
                        "description": "Sort, e.g. [\"rank,desc\"]. Available fields: rank, backlinks, first_seen, last_visited."
                      }
                    },
                    "required": [
                      "target"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_keyword_search_volume": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "keyword_search_volume",
        "operationId": "dataforseo_keyword_search_volume",
        "description": "Google Ads search volume, CPC, and competition for up to 1000 keywords. Monthly averages. ~$0.075 per task. Rate limit 12 rpm.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_keyword_search_volume\",\"arguments\":{\"keywords\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "keywords": {
                        "type": "array",
                        "description": "Keywords to check (max 1000). Each string."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code, e.g. 2840 (US)."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language, e.g. \"en\"."
                      },
                      "search_partners": {
                        "type": "boolean",
                        "description": "Include search partner data. Default false."
                      }
                    },
                    "required": [
                      "keywords"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_keyword_suggestions": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "keyword_suggestions",
        "operationId": "dataforseo_keyword_suggestions",
        "description": "Google Ads keyword suggestions from up to 20 seed keywords. Use for keyword expansion and ideation. Rate limit 12 rpm.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_keyword_suggestions\",\"arguments\":{\"keywords\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "keywords": {
                        "type": "array",
                        "description": "Seed keywords (max 20)."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max suggestions. Default 700."
                      }
                    },
                    "required": [
                      "keywords"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_keyword_difficulty": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "keyword_difficulty",
        "operationId": "dataforseo_keyword_difficulty",
        "description": "Keyword Difficulty score (0-100) for up to 1000 keywords. DataForSEO's own metric — fast and cheap. ~$0.01 + $0.0001/keyword.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_keyword_difficulty\",\"arguments\":{\"keywords\":[],\"location_code\":0,\"language_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "keywords": {
                        "type": "array",
                        "description": "Keywords to score (max 1000)."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language."
                      }
                    },
                    "required": [
                      "keywords",
                      "location_code",
                      "language_code"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_keyword_ideas": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "keyword_ideas",
        "operationId": "dataforseo_keyword_ideas",
        "description": "DataForSEO Labs keyword ideas: expand from seed keywords using semantic + behavioural signals (NOT Google Ads). Returns volume, KD, CPC, search intent, monthly trend. ~$0.01 + $0.0001/keyword. Better than keyword_suggestions for content planning.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_keyword_ideas\",\"arguments\":{\"keywords\":[],\"location_code\":0,\"language_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "keywords": {
                        "type": "array",
                        "description": "Seed keywords (1-200 strings)."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code, e.g. 2840 (US)."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language code, e.g. \"en\"."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max ideas per page. Default 100, max 1000."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      },
                      "filters": {
                        "type": "array",
                        "description": "Filter array, e.g. [[\"keyword_info.search_volume\",\">\",100]]. See DataForSEO Labs docs."
                      },
                      "order_by": {
                        "type": "array",
                        "description": "Sort, e.g. [\"keyword_info.search_volume,desc\"]."
                      }
                    },
                    "required": [
                      "keywords",
                      "location_code",
                      "language_code"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_ranked_keywords": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "ranked_keywords",
        "operationId": "dataforseo_ranked_keywords",
        "description": "All keywords a domain or URL ranks for in Google organic, with position, traffic estimate, CPC. The single most useful SEO call. ~$0.01 + $0.0001/keyword.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_ranked_keywords\",\"arguments\":{\"target\":\"<string>\",\"location_code\":0,\"language_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Bare domain (e.g. \"example.com\") or full URL."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max keywords. Default 100, max 1000."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      },
                      "filters": {
                        "type": "array",
                        "description": "Filter array, e.g. [[\"ranked_serp_element.serp_item.rank_group\",\"<=\",10]]."
                      }
                    },
                    "required": [
                      "target",
                      "location_code",
                      "language_code"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_domain_competitors": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "domain_competitors",
        "operationId": "dataforseo_domain_competitors",
        "description": "Top organic competitors for a domain — other domains ranking for the same keywords. Returns common keywords and overlap estimates. ~$0.01 + $0.0001/competitor.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_domain_competitors\",\"arguments\":{\"target\":\"<string>\",\"location_code\":0,\"language_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Bare domain."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max competitors. Default 100."
                      }
                    },
                    "required": [
                      "target",
                      "location_code",
                      "language_code"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_domain_rank_overview": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "domain_rank_overview",
        "operationId": "dataforseo_domain_rank_overview",
        "description": "Domain rank overview: position distribution (top-3, top-10, top-100), estimated traffic value (ETV), impressions. Fast domain snapshot. ~$0.01.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_domain_rank_overview\",\"arguments\":{\"target\":\"<string>\",\"location_code\":0,\"language_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Bare domain."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language."
                      }
                    },
                    "required": [
                      "target",
                      "location_code",
                      "language_code"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_related_keywords": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "related_keywords",
        "operationId": "dataforseo_related_keywords",
        "description": "Semantically related keywords with volume, CPC, KD. Returns the \"keyword graph\" around a seed — great for content planning. ~$0.01 + $0.0001/keyword.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_related_keywords\",\"arguments\":{\"keyword\":\"<string>\",\"location_code\":0,\"language_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "keyword": {
                        "type": "string",
                        "description": "Seed keyword."
                      },
                      "location_code": {
                        "type": "number",
                        "description": "Location code."
                      },
                      "language_code": {
                        "type": "string",
                        "description": "Language."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results. Default 100."
                      },
                      "depth": {
                        "type": "number",
                        "description": "Graph depth (1-4). Higher = more distant related terms. Default 2."
                      }
                    },
                    "required": [
                      "keyword",
                      "location_code",
                      "language_code"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_llm_response": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "llm_response",
        "operationId": "dataforseo_llm_response",
        "description": "Query ChatGPT via DataForSEO's AI Optimization API and get back the response with citations and brand mentions. Use for AEO tracking: ask \"What are the best X?\" and see if your brand appears. Tracks visibility in AI answers.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_llm_response\",\"arguments\":{\"user_prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "user_prompt": {
                        "type": "string",
                        "description": "The prompt to send to the LLM."
                      },
                      "model_name": {
                        "type": "string",
                        "description": "Model to query. Default \"gpt-4o-mini\". Options: gpt-4o, gpt-4o-mini, gpt-4-turbo."
                      },
                      "max_output_tokens": {
                        "type": "number",
                        "description": "Max tokens in response. Default 512."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Sampling temperature, 0-2. Default 1."
                      },
                      "web_search": {
                        "type": "boolean",
                        "description": "Enable web search for the LLM. Default false."
                      }
                    },
                    "required": [
                      "user_prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_onpage_instant": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "onpage_instant",
        "operationId": "dataforseo_onpage_instant",
        "description": "Instant on-page SEO audit for a single URL. Returns title, meta, H1s, word count, page metrics, broken links, image/link counts, Core Web Vitals proxy, and full content stats. No crawl quota — pay per call. ~$0.00075 base, +$0.005 with browser rendering.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_onpage_instant\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Full URL to audit (https://...)."
                      },
                      "enable_javascript": {
                        "type": "boolean",
                        "description": "Render JavaScript before parsing. Adds ~$0.0028. Needed for SPAs."
                      },
                      "custom_user_agent": {
                        "type": "string",
                        "description": "Custom User-Agent header."
                      },
                      "accept_language": {
                        "type": "string",
                        "description": "Accept-Language header, e.g. \"en-US\"."
                      },
                      "disable_cookie_popup": {
                        "type": "boolean",
                        "description": "Hide cookie consent overlays before measuring."
                      },
                      "return_despite_timeout": {
                        "type": "boolean",
                        "description": "Return partial result instead of failing on timeout."
                      },
                      "enable_browser_rendering": {
                        "type": "boolean",
                        "description": "Full Chromium render. Most expensive (+$0.005) but most accurate for JS-heavy pages."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_domain_technologies": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "domain_technologies",
        "operationId": "dataforseo_domain_technologies",
        "description": "Detect the tech stack on a domain: CMS, analytics, hosting, frameworks, CDN. Similar to BuiltWith. ~$0.01.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_domain_technologies\",\"arguments\":{\"target\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Bare domain."
                      }
                    },
                    "required": [
                      "target"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_content_search": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "content_search",
        "operationId": "dataforseo_content_search",
        "description": "Search web mentions of a brand, product, or keyword across crawled content. Returns matching pages with context, sentiment, and source rank. Brand monitoring use case.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_content_search\",\"arguments\":{\"keyword\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "keyword": {
                        "type": "string",
                        "description": "Brand name, product, or phrase to find."
                      },
                      "search_mode": {
                        "type": "string",
                        "description": "\"as_is\" (exact), \"one_per_domain\", or \"popular\". Default \"as_is\"."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max mentions. Default 100."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset."
                      }
                    },
                    "required": [
                      "keyword"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=dataforseo_user_info": {
      "post": {
        "tags": [
          "dataforseo"
        ],
        "summary": "user_info",
        "operationId": "dataforseo_user_info",
        "description": "Account info: remaining balance in USD, pricing rates, request limits. Call before bulk ops to check budget. No cost.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"dataforseo_user_info\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_list_templates": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "list_templates",
        "operationId": "docuseal_list_templates",
        "description": "List available DocuSeal templates. Supports filtering by folder, application key, and pagination via after/before cursors.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_list_templates\",\"arguments\":{\"q\":\"<string>\",\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string",
                        "description": "Filter by name match."
                      },
                      "slug": {
                        "type": "string",
                        "description": "Filter by slug."
                      },
                      "external_id": {
                        "type": "string",
                        "description": "Filter by external_id."
                      },
                      "application_key": {
                        "type": "string",
                        "description": "Filter by application key."
                      },
                      "folder": {
                        "type": "string",
                        "description": "Filter by folder name."
                      },
                      "archived": {
                        "type": "boolean",
                        "description": "Include archived templates."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Page size (default 10, max 100)."
                      },
                      "after": {
                        "type": "number",
                        "description": "Cursor — id to fetch after."
                      },
                      "before": {
                        "type": "number",
                        "description": "Cursor — id to fetch before."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_get_template": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "get_template",
        "operationId": "docuseal_get_template",
        "description": "Fetch full details for a single template by numeric id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_get_template\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Template id."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_create_template_from_html": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "create_template_from_html",
        "operationId": "docuseal_create_template_from_html",
        "description": "Create a new template from raw HTML content. The HTML can include DocuSeal field tags like {{Signature;type=signature;role=Signer}}.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_create_template_from_html\",\"arguments\":{\"html\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "html": {
                        "type": "string",
                        "description": "HTML body for the document."
                      },
                      "html_header": {
                        "type": "string",
                        "description": "Optional HTML for the page header."
                      },
                      "html_footer": {
                        "type": "string",
                        "description": "Optional HTML for the page footer."
                      },
                      "name": {
                        "type": "string",
                        "description": "Template name."
                      },
                      "folder_name": {
                        "type": "string",
                        "description": "Folder to place template in."
                      },
                      "external_id": {
                        "type": "string",
                        "description": "Your own id for this template."
                      },
                      "documents": {
                        "type": "array",
                        "description": "Optional multiple documents — array of {html, name}.",
                        "items": {
                          "type": "object"
                        }
                      }
                    },
                    "required": [
                      "html"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_create_template_from_pdf": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "create_template_from_pdf",
        "operationId": "docuseal_create_template_from_pdf",
        "description": "Create a template from a base64-encoded PDF file. Provide documents array with {name, file (base64), fields}.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_create_template_from_pdf\",\"arguments\":{\"documents\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Template name."
                      },
                      "folder_name": {
                        "type": "string",
                        "description": "Folder to place template in."
                      },
                      "external_id": {
                        "type": "string",
                        "description": "Your own id for this template."
                      },
                      "documents": {
                        "type": "array",
                        "description": "Array of document objects: [{ name, file: <base64>, fields: [...] }].",
                        "items": {
                          "type": "object"
                        }
                      }
                    },
                    "required": [
                      "documents"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_clone_template": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "clone_template",
        "operationId": "docuseal_clone_template",
        "description": "Duplicate an existing template. Returns the new template id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_clone_template\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Source template id."
                      },
                      "name": {
                        "type": "string",
                        "description": "Name for the cloned template."
                      },
                      "folder_name": {
                        "type": "string",
                        "description": "Folder for the clone."
                      },
                      "external_id": {
                        "type": "string",
                        "description": "External id for the clone."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_update_template": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "update_template",
        "operationId": "docuseal_update_template",
        "description": "Update template metadata — name, folder, roles, application key, archived flag.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_update_template\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Template id."
                      },
                      "name": {
                        "type": "string",
                        "description": "New name."
                      },
                      "folder_name": {
                        "type": "string",
                        "description": "Move to folder."
                      },
                      "roles": {
                        "type": "array",
                        "description": "Replace the list of submitter role names.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "application_key": {
                        "type": "string",
                        "description": "External application key."
                      },
                      "archived": {
                        "type": "boolean",
                        "description": "Archive (true) or restore (false)."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_archive_template": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "archive_template",
        "operationId": "docuseal_archive_template",
        "description": "Archive a template (soft-delete). Use update_template with archived=false to restore.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_archive_template\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Template id to archive."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_list_submissions": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "list_submissions",
        "operationId": "docuseal_list_submissions",
        "description": "List signature submissions. Filter by template, status, submitter email/name, archived.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_list_submissions\",\"arguments\":{\"template_id\":0,\"template_folder\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "template_id": {
                        "type": "number",
                        "description": "Filter by template id."
                      },
                      "template_folder": {
                        "type": "string",
                        "description": "Filter by template folder name."
                      },
                      "q": {
                        "type": "string",
                        "description": "Search submitter name/email/phone."
                      },
                      "status": {
                        "type": "string",
                        "description": "\"pending\", \"completed\", \"expired\", \"declined\"."
                      },
                      "archived": {
                        "type": "boolean",
                        "description": "Include archived submissions."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Page size (default 10, max 100)."
                      },
                      "after": {
                        "type": "number",
                        "description": "Cursor — id to fetch after."
                      },
                      "before": {
                        "type": "number",
                        "description": "Cursor — id to fetch before."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_get_submission": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "get_submission",
        "operationId": "docuseal_get_submission",
        "description": "Fetch full details for a submission — includes submitters, status, audit log links.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_get_submission\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Submission id."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_get_submission_documents": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "get_submission_documents",
        "operationId": "docuseal_get_submission_documents",
        "description": "Get download URLs for the submission documents (partially filled in flight, finalized PDFs once completed).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_get_submission_documents\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Submission id."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_create_submission": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "create_submission",
        "operationId": "docuseal_create_submission",
        "description": "Create a signature request from an existing template. Provide submitters array with at minimum email and role for each signer.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_create_submission\",\"arguments\":{\"template_id\":0,\"submitters\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "template_id": {
                        "type": "number",
                        "description": "Template id to send."
                      },
                      "send_email": {
                        "type": "boolean",
                        "description": "Send invitation emails (default true)."
                      },
                      "send_sms": {
                        "type": "boolean",
                        "description": "Send SMS invitations."
                      },
                      "order": {
                        "type": "string",
                        "description": "\"preserved\" (sequential) or \"random\" (parallel). Default \"preserved\"."
                      },
                      "completed_redirect_url": {
                        "type": "string",
                        "description": "Redirect URL after signing."
                      },
                      "bcc_completed": {
                        "type": "string",
                        "description": "Email to BCC on completion notice."
                      },
                      "reply_to": {
                        "type": "string",
                        "description": "Reply-To email for invitations."
                      },
                      "expire_at": {
                        "type": "string",
                        "description": "ISO timestamp when submission expires."
                      },
                      "message": {
                        "type": "object",
                        "description": "Custom invitation: { subject, body }."
                      },
                      "submitters": {
                        "type": "array",
                        "description": "Array of submitter objects. Each: { email (required), role, name, phone, values, fields, send_email, completed_redirect_url, metadata, external_id }.",
                        "items": {
                          "type": "object"
                        }
                      }
                    },
                    "required": [
                      "template_id",
                      "submitters"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_archive_submission": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "archive_submission",
        "operationId": "docuseal_archive_submission",
        "description": "Archive a submission (soft-delete).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_archive_submission\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Submission id."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_list_submitters": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "list_submitters",
        "operationId": "docuseal_list_submitters",
        "description": "List individual submitters across all submissions. Filter by submission, application key, status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_list_submitters\",\"arguments\":{\"submission_id\":0,\"q\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "submission_id": {
                        "type": "number",
                        "description": "Filter by parent submission id."
                      },
                      "q": {
                        "type": "string",
                        "description": "Search by name/email/phone."
                      },
                      "application_key": {
                        "type": "string",
                        "description": "Filter by application key."
                      },
                      "completed_after": {
                        "type": "string",
                        "description": "ISO timestamp lower bound."
                      },
                      "completed_before": {
                        "type": "string",
                        "description": "ISO timestamp upper bound."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Page size (default 10)."
                      },
                      "after": {
                        "type": "number",
                        "description": "Cursor — id to fetch after."
                      },
                      "before": {
                        "type": "number",
                        "description": "Cursor — id to fetch before."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_get_submitter": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "get_submitter",
        "operationId": "docuseal_get_submitter",
        "description": "Fetch a single submitter by id — returns role, completion state, prefilled values, signing URL.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_get_submitter\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Submitter id."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=docuseal_update_submitter": {
      "post": {
        "tags": [
          "docuseal"
        ],
        "summary": "update_submitter",
        "operationId": "docuseal_update_submitter",
        "description": "Update a submitter — change name, email, prefilled values, completion state, or send a reminder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"docuseal_update_submitter\",\"arguments\":{\"id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "number",
                        "description": "Submitter id."
                      },
                      "name": {
                        "type": "string",
                        "description": "Submitter display name."
                      },
                      "email": {
                        "type": "string",
                        "description": "Submitter email."
                      },
                      "phone": {
                        "type": "string",
                        "description": "Submitter phone (E.164)."
                      },
                      "values": {
                        "type": "object",
                        "description": "Field name → prefilled value map."
                      },
                      "completed": {
                        "type": "boolean",
                        "description": "Mark as completed (true) or reset (false)."
                      },
                      "send_email": {
                        "type": "boolean",
                        "description": "Resend invite email."
                      },
                      "send_sms": {
                        "type": "boolean",
                        "description": "Resend invite SMS."
                      },
                      "external_id": {
                        "type": "string",
                        "description": "Your external id."
                      },
                      "metadata": {
                        "type": "object",
                        "description": "Arbitrary metadata."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=enablement_enablement_onboarding_status": {
      "post": {
        "tags": [
          "enablement"
        ],
        "summary": "enablement_onboarding_status",
        "operationId": "enablement_enablement_onboarding_status",
        "description": "Get the caller's onboarding progress — current step, completed steps, whether onboarding is complete.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"enablement_enablement_onboarding_status\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=enablement_enablement_tool_catalog": {
      "post": {
        "tags": [
          "enablement"
        ],
        "summary": "enablement_tool_catalog",
        "operationId": "enablement_enablement_tool_catalog",
        "description": "Return a structured catalog of every tool available in this cave, grouped by service/adapter. Use this to answer \"what can you do?\" without guessing.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"enablement_enablement_tool_catalog\",\"arguments\":{\"serviceFilter\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "serviceFilter": {
                        "type": "string",
                        "description": "Optional — filter to one service name (e.g. \"images\", \"hubspot\")."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=enablement_enablement_connected_services": {
      "post": {
        "tags": [
          "enablement"
        ],
        "summary": "enablement_connected_services",
        "operationId": "enablement_enablement_connected_services",
        "description": "List the services the caller has connected + health status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"enablement_enablement_connected_services\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=enablement_enablement_suggest_skills": {
      "post": {
        "tags": [
          "enablement"
        ],
        "summary": "enablement_suggest_skills",
        "operationId": "enablement_enablement_suggest_skills",
        "description": "Recommend N skills the caller should install. Ranks by fit to connected services + recent tool usage using Claude. Falls back to a popularity-based list if ANTHROPIC_API_KEY is missing.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"enablement_enablement_suggest_skills\",\"arguments\":{\"n\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "number",
                        "description": "How many recommendations. Default 5, max 10."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=enablement_enablement_getting_started": {
      "post": {
        "tags": [
          "enablement"
        ],
        "summary": "enablement_getting_started",
        "operationId": "enablement_enablement_getting_started",
        "description": "Return a first-session checklist for a new user: steps to get value out of the cave fast. Adapts to what the user has + hasn't done yet.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"enablement_enablement_getting_started\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=enablement_enablement_save_credentials": {
      "post": {
        "tags": [
          "enablement"
        ],
        "summary": "enablement_save_credentials",
        "operationId": "enablement_enablement_save_credentials",
        "description": "Enable a service for the caller AND store API-key credentials in one shot. Equivalent of going to the portal Dashboard, flipping the toggle ON, clicking Configure, pasting the API key, and clicking Save. Use for non-OAuth services that authenticate with a single API key (apify, apollo, firecrawl, hunter, dataforseo, exa, etc.). For OAuth services use the /oauth/:provider/start flow instead — this tool will not work for those. Credentials are encrypted at rest with AES-256-GCM. Returns the new ClientService status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"enablement_enablement_save_credentials\",\"arguments\":{\"service\":\"<string>\",\"credentials\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "service": {
                        "type": "string",
                        "description": "Service name as registered in the Service table (e.g. \"apify\", \"apollo\", \"firecrawl\", \"hunter\")."
                      },
                      "credentials": {
                        "type": "object",
                        "description": "Credential field map per the service's credential-schema. Most API-key services use { apiKey: \"<token>\" }. Reddit uses { clientId, clientSecret, userAgent }. Check credential-schemas.ts for the exact field names per service."
                      }
                    },
                    "required": [
                      "service",
                      "credentials"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=exa_search": {
      "post": {
        "tags": [
          "exa"
        ],
        "summary": "search",
        "operationId": "exa_search",
        "description": "Exa neural (or keyword) search. Returns ranked URLs with title, snippet, publish date. Use \"neural\" type for semantic search (best for research/discovery). Use \"keyword\" for exact matches. Use \"auto\" to let Exa pick. $0.005 per search for neural.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"exa_search\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "type": {
                        "type": "string",
                        "description": "\"neural\" (semantic, default), \"keyword\" (exact), or \"auto\"."
                      },
                      "numResults": {
                        "type": "number",
                        "description": "Number of results. Default 10, max 100."
                      },
                      "includeDomains": {
                        "type": "array",
                        "description": "Whitelist domains, e.g. [\"nytimes.com\", \"wsj.com\"]."
                      },
                      "excludeDomains": {
                        "type": "array",
                        "description": "Blacklist domains."
                      },
                      "startPublishedDate": {
                        "type": "string",
                        "description": "ISO date, e.g. \"2025-01-01\". Only results published after."
                      },
                      "endPublishedDate": {
                        "type": "string",
                        "description": "ISO date. Only results before."
                      },
                      "useAutoprompt": {
                        "type": "boolean",
                        "description": "If true, Exa rewrites your query for better neural search. Default true."
                      },
                      "category": {
                        "type": "string",
                        "description": "Category filter: \"company\", \"research paper\", \"news\", \"pdf\", \"github\", \"tweet\", \"personal site\", \"linkedin profile\", \"financial report\"."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=exa_find_similar": {
      "post": {
        "tags": [
          "exa"
        ],
        "summary": "find_similar",
        "operationId": "exa_find_similar",
        "description": "Find URLs similar to a given URL using Exa's neural embeddings. Great for \"find more like this\" discovery or mapping the content space around a competitor's page.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"exa_find_similar\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "URL to find similar pages to."
                      },
                      "numResults": {
                        "type": "number",
                        "description": "Max results. Default 10."
                      },
                      "includeDomains": {
                        "type": "array",
                        "description": "Whitelist domains."
                      },
                      "excludeDomains": {
                        "type": "array",
                        "description": "Blacklist domains."
                      },
                      "excludeSourceDomain": {
                        "type": "boolean",
                        "description": "If true, exclude the source URL's own domain from results. Default true."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=exa_get_contents": {
      "post": {
        "tags": [
          "exa"
        ],
        "summary": "get_contents",
        "operationId": "exa_get_contents",
        "description": "Fetch full text, summaries, or highlights for a list of URLs from Exa's cache. Cheaper and faster than scraping + way higher success rate than raw fetch. Combine with search: run search, pick IDs, feed them here.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"exa_get_contents\",\"arguments\":{\"ids\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ids": {
                        "type": "array",
                        "description": "Array of Exa IDs (returned by search/find_similar) or raw URLs."
                      },
                      "text": {
                        "type": "boolean",
                        "description": "Include full text. Default true."
                      },
                      "summary": {
                        "type": "object",
                        "description": "If set, return an AI summary. Shape: { query: \"summarize for X\" }. Costs extra."
                      },
                      "highlights": {
                        "type": "object",
                        "description": "Return query-focused highlights (snippets). Shape: { numSentences: 3, highlightsPerUrl: 2, query: \"...\" }."
                      },
                      "livecrawl": {
                        "type": "string",
                        "description": "\"never\", \"fallback\", \"always\". Default \"never\" (use cache). \"fallback\" re-crawls if cached text is stale."
                      }
                    },
                    "required": [
                      "ids"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=exa_answer": {
      "post": {
        "tags": [
          "exa"
        ],
        "summary": "answer",
        "operationId": "exa_answer",
        "description": "Ask Exa a question and get an AI-generated answer with citations. Similar to Perplexity but tuned for research: returns stronger sources, fewer SEO-farm citations. $0.005 per answer.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"exa_answer\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "The question."
                      },
                      "text": {
                        "type": "boolean",
                        "description": "Return full text of citations in addition to URLs. Default false."
                      },
                      "model": {
                        "type": "string",
                        "description": "Answer model: \"exa\" (default), \"exa-pro\" (more thorough, higher cost)."
                      },
                      "stream": {
                        "type": "boolean",
                        "description": "Stream response. Not supported in MCP adapter."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=exa_research": {
      "post": {
        "tags": [
          "exa"
        ],
        "summary": "research",
        "operationId": "exa_research",
        "description": "Deep, multi-step research task. Exa's research endpoint runs a longer agent that fans out into multiple sub-queries and returns a structured synthesis. Use for \"build me a competitor comparison on X\" or \"summarize the AI coding assistant market\". Costs more than answer.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"exa_research\",\"arguments\":{\"instructions\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "instructions": {
                        "type": "string",
                        "description": "What you want researched — be specific about what the output should contain."
                      },
                      "model": {
                        "type": "string",
                        "description": "\"exa-research\" (default) or \"exa-research-pro\"."
                      },
                      "output_schema": {
                        "type": "object",
                        "description": "Optional JSON schema describing the shape of the structured output you want back."
                      }
                    },
                    "required": [
                      "instructions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-calendar_list_events": {
      "post": {
        "tags": [
          "ezsmartleads-calendar"
        ],
        "summary": "list_events",
        "operationId": "ezsmartleads-calendar_list_events",
        "description": "List upcoming Outlook calendar events. Defaults to the next 30 days.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-calendar_list_events\",\"arguments\":{\"top\":0,\"startDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Number of events to return (default 25, max 100)."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time. Defaults to now."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time. Defaults to 30 days from now."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-calendar_get_event": {
      "post": {
        "tags": [
          "ezsmartleads-calendar"
        ],
        "summary": "get_event",
        "operationId": "ezsmartleads-calendar_get_event",
        "description": "Get a specific calendar event by ID, including attendees and body.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-calendar_get_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-calendar_create_event": {
      "post": {
        "tags": [
          "ezsmartleads-calendar"
        ],
        "summary": "create_event",
        "operationId": "ezsmartleads-calendar_create_event",
        "description": "Create a new calendar event / meeting. Optionally adds attendees and creates a Teams online meeting.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-calendar_create_event\",\"arguments\":{\"subject\":\"<string>\",\"startDateTime\":\"<string>\",\"endDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Event title."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time (e.g. 2026-04-15T14:00:00)."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time."
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "IANA time zone (default \"UTC\")."
                      },
                      "body": {
                        "type": "string",
                        "description": "Event description / agenda (HTML supported)."
                      },
                      "location": {
                        "type": "string",
                        "description": "Location display name."
                      },
                      "attendees": {
                        "type": "array",
                        "description": "Attendee email addresses.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "isOnlineMeeting": {
                        "type": "boolean",
                        "description": "Create a Teams online meeting (default false)."
                      }
                    },
                    "required": [
                      "subject",
                      "startDateTime",
                      "endDateTime"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-calendar_update_event": {
      "post": {
        "tags": [
          "ezsmartleads-calendar"
        ],
        "summary": "update_event",
        "operationId": "ezsmartleads-calendar_update_event",
        "description": "Update an existing calendar event. Pass any subset of fields to change.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-calendar_update_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      },
                      "subject": {
                        "type": "string"
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time."
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "IANA time zone (default \"UTC\")."
                      },
                      "body": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-calendar_delete_event": {
      "post": {
        "tags": [
          "ezsmartleads-calendar"
        ],
        "summary": "delete_event",
        "operationId": "ezsmartleads-calendar_delete_event",
        "description": "Delete (cancel) a calendar event by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-calendar_delete_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-calendar_find_meeting_times": {
      "post": {
        "tags": [
          "ezsmartleads-calendar"
        ],
        "summary": "find_meeting_times",
        "operationId": "ezsmartleads-calendar_find_meeting_times",
        "description": "Suggest meeting times when all required attendees are free.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-calendar_find_meeting_times\",\"arguments\":{\"attendees\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "attendees": {
                        "type": "array",
                        "description": "Required attendee email addresses.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "durationMinutes": {
                        "type": "number",
                        "description": "Meeting duration in minutes (default 30)."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 search window start. Defaults to now."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 search window end. Defaults to 7 days from now."
                      },
                      "maxCandidates": {
                        "type": "number",
                        "description": "Maximum number of slots to suggest (default 5)."
                      }
                    },
                    "required": [
                      "attendees"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_list_files": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "list_files",
        "operationId": "ezsmartleads-onedrive_list_files",
        "description": "List files and folders in OneDrive. Defaults to the drive root.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_list_files\",\"arguments\":{\"folderPath\":\"<string>\",\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "folderPath": {
                        "type": "string",
                        "description": "Folder path relative to drive root (e.g. \"Documents/Reports\"). Omit for root."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_search_files": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "search_files",
        "operationId": "ezsmartleads-onedrive_search_files",
        "description": "Search files across the entire OneDrive by name or content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_search_files\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_get_file_metadata": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "get_file_metadata",
        "operationId": "ezsmartleads-onedrive_get_file_metadata",
        "description": "Get metadata for a file or folder by path.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_get_file_metadata\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File or folder path relative to drive root (e.g. \"Documents/report.docx\")."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_download_file": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "download_file",
        "operationId": "ezsmartleads-onedrive_download_file",
        "description": "Download a file from OneDrive. Returns text content for text files, base64-encoded content otherwise. Best for files under 4 MB.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_download_file\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File path relative to drive root (e.g. \"Documents/report.docx\")."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_upload_file": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "upload_file",
        "operationId": "ezsmartleads-onedrive_upload_file",
        "description": "Upload a small file (under 4 MB) to OneDrive. Pass either text content directly or base64-encoded binary content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_upload_file\",\"arguments\":{\"path\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "Destination path relative to drive root (e.g. \"Documents/notes.txt\")."
                      },
                      "content": {
                        "type": "string",
                        "description": "File content (text or base64)."
                      },
                      "encoding": {
                        "type": "string",
                        "description": "\"utf8\" (default) or \"base64\"."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type (default \"application/octet-stream\")."
                      }
                    },
                    "required": [
                      "path",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_create_folder": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "create_folder",
        "operationId": "ezsmartleads-onedrive_create_folder",
        "description": "Create a new folder in OneDrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_create_folder\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parentPath": {
                        "type": "string",
                        "description": "Parent folder path relative to drive root. Omit for root."
                      },
                      "name": {
                        "type": "string",
                        "description": "New folder name."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_share_file": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "share_file",
        "operationId": "ezsmartleads-onedrive_share_file",
        "description": "Create a sharing link for a file or folder. NOTE: this expands access to others — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_share_file\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File or folder path relative to drive root."
                      },
                      "type": {
                        "type": "string",
                        "description": "\"view\" (read-only) or \"edit\". Default \"view\"."
                      },
                      "scope": {
                        "type": "string",
                        "description": "\"anonymous\" (anyone with link) or \"organization\" (signed-in users only). Default \"organization\"."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_delete_file": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "delete_file",
        "operationId": "ezsmartleads-onedrive_delete_file",
        "description": "Delete a file or folder from OneDrive by item ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_delete_file\",\"arguments\":{\"itemId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to delete."
                      }
                    },
                    "required": [
                      "itemId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_move_file": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "move_file",
        "operationId": "ezsmartleads-onedrive_move_file",
        "description": "Move a file or folder to a different parent folder in OneDrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_move_file\",\"arguments\":{\"itemId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to move."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "The destination folder item ID."
                      }
                    },
                    "required": [
                      "itemId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-onedrive_copy_file": {
      "post": {
        "tags": [
          "ezsmartleads-onedrive"
        ],
        "summary": "copy_file",
        "operationId": "ezsmartleads-onedrive_copy_file",
        "description": "Copy a file in OneDrive to a different folder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-onedrive_copy_file\",\"arguments\":{\"itemId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to copy."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "The destination folder item ID."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name for the copy."
                      }
                    },
                    "required": [
                      "itemId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_list_messages": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "list_messages",
        "operationId": "ezsmartleads-outlook_list_messages",
        "description": "List messages from an Outlook mail folder (default: Inbox).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_list_messages\",\"arguments\":{\"top\":0,\"filter\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Number of messages to return (default 25)."
                      },
                      "filter": {
                        "type": "string",
                        "description": "OData $filter expression (e.g. \"isRead eq false\")."
                      },
                      "folderId": {
                        "type": "string",
                        "description": "Optional mail folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive). Default: inbox."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_read_message": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "read_message",
        "operationId": "ezsmartleads-outlook_read_message",
        "description": "Read a specific Outlook email message by ID, including body, recipients, and attachment metadata.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_read_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Outlook message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_send_email": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "send_email",
        "operationId": "ezsmartleads-outlook_send_email",
        "description": "Send an email via Outlook / Microsoft Graph. Supports multiple recipients, cc, bcc, and file attachments. For replies, use reply or reply_all instead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_send_email\",\"arguments\":{\"to\":null,\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "description": "Recipient(s). Single email, comma-separated string, or array of emails.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "cc": {
                        "description": "CC recipient(s). Single email, comma-separated string, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "bcc": {
                        "description": "BCC recipient(s). Single email, comma-separated string, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "subject": {
                        "type": "string",
                        "description": "Email subject."
                      },
                      "body": {
                        "type": "string",
                        "description": "Email body (HTML supported by default)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "Body content type: \"HTML\" (default) or \"Text\"."
                      },
                      "saveToSentItems": {
                        "type": "boolean",
                        "description": "Save to Sent Items (default true)."
                      },
                      "attachments": {
                        "type": "array",
                        "description": "Optional file attachments. Each item must include \"name\" (filename) plus either \"contentBytes\" (base64-encoded file content) or \"url\" (public/signed URL the server will fetch). Per-file inline limit is 3 MB; for larger files use create_draft + add_attachment.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Filename, e.g. \"Proposal.pdf\"."
                            },
                            "contentBytes": {
                              "type": "string",
                              "description": "Base64-encoded file content. Mutually exclusive with url."
                            },
                            "url": {
                              "type": "string",
                              "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                            },
                            "contentType": {
                              "type": "string",
                              "description": "MIME type (e.g. \"application/pdf\"). Auto-inferred from filename if omitted."
                            },
                            "isInline": {
                              "type": "boolean",
                              "description": "Mark as inline (referenced via cid:contentId from HTML body). Default false."
                            },
                            "contentId": {
                              "type": "string",
                              "description": "Optional Content-ID for inline attachments referenced from HTML body."
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    },
                    "required": [
                      "to",
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_search_messages": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "search_messages",
        "operationId": "ezsmartleads-outlook_search_messages",
        "description": "Search Outlook emails. Use `query` for free-text ($search across subject/body/sender) OR use `filter`/`orderby` for structured OData queries. NOTE: Graph forbids combining $search with $filter or $orderby — if you pass query, filter/orderby are ignored.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_search_messages\",\"arguments\":{\"query\":\"<string>\",\"filter\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Free-text search across subject/body/from. Optional if filter is provided."
                      },
                      "filter": {
                        "type": "string",
                        "description": "OData $filter expression (e.g. \"from/emailAddress/address eq 'x@y.com'\", \"receivedDateTime ge 2026-04-01T00:00:00Z\", \"isRead eq false\"). Cannot be combined with query."
                      },
                      "orderby": {
                        "type": "string",
                        "description": "OData $orderby (e.g. \"receivedDateTime desc\"). Ignored if query is set. Default: receivedDateTime desc."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25, max 999)."
                      },
                      "skip": {
                        "type": "number",
                        "description": "OData $skip for pagination."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_reply": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "reply",
        "operationId": "ezsmartleads-outlook_reply",
        "description": "Reply to an Outlook message, preserving threading. By default replies only to the sender. Set replyAll=true to reply to all recipients.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_reply\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being replied to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Reply body (HTML)."
                      },
                      "replyAll": {
                        "type": "boolean",
                        "description": "Reply-all instead of reply. Default false."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_reply_all": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "reply_all",
        "operationId": "ezsmartleads-outlook_reply_all",
        "description": "Reply-all to an Outlook message, preserving threading. Sends to sender + all original To/Cc recipients.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_reply_all\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being replied to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Reply body (HTML)."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_forward": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "forward",
        "operationId": "ezsmartleads-outlook_forward",
        "description": "Forward an Outlook message to new recipients with an optional comment.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_forward\",\"arguments\":{\"messageId\":\"<string>\",\"to\":null}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being forwarded."
                      },
                      "to": {
                        "description": "Recipient(s). String, comma-separated, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "comment": {
                        "type": "string",
                        "description": "Optional comment prepended to the forwarded body."
                      }
                    },
                    "required": [
                      "messageId",
                      "to"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_create_draft": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "create_draft",
        "operationId": "ezsmartleads-outlook_create_draft",
        "description": "Create a draft email in Outlook without sending. Supports inline attachments (≤3 MB each). Returns the draft ID which can later be sent or extended with add_attachment for larger files.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_create_draft\",\"arguments\":{\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "description": "Recipient(s). String, comma-separated, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "cc": {
                        "description": "CC recipient(s).",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "bcc": {
                        "description": "BCC recipient(s).",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "subject": {
                        "type": "string",
                        "description": "Subject line."
                      },
                      "body": {
                        "type": "string",
                        "description": "Body (HTML)."
                      },
                      "attachments": {
                        "type": "array",
                        "description": "Optional file attachments. Each item must include \"name\" (filename) plus either \"contentBytes\" (base64-encoded file content) or \"url\" (public/signed URL the server will fetch). Per-file inline limit is 3 MB; for larger files use create_draft + add_attachment.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Filename, e.g. \"Proposal.pdf\"."
                            },
                            "contentBytes": {
                              "type": "string",
                              "description": "Base64-encoded file content. Mutually exclusive with url."
                            },
                            "url": {
                              "type": "string",
                              "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                            },
                            "contentType": {
                              "type": "string",
                              "description": "MIME type (e.g. \"application/pdf\"). Auto-inferred from filename if omitted."
                            },
                            "isInline": {
                              "type": "boolean",
                              "description": "Mark as inline (referenced via cid:contentId from HTML body). Default false."
                            },
                            "contentId": {
                              "type": "string",
                              "description": "Optional Content-ID for inline attachments referenced from HTML body."
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    },
                    "required": [
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_add_attachment": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "add_attachment",
        "operationId": "ezsmartleads-outlook_add_attachment",
        "description": "Attach a file to an existing Outlook draft message (from create_draft). Use this to add attachments larger than ~3 MB (handled via Graph upload session) or to add files to a draft after creation. Returns the attachment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_add_attachment\",\"arguments\":{\"messageId\":\"<string>\",\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "Draft message ID (from create_draft)."
                      },
                      "name": {
                        "type": "string",
                        "description": "Filename, e.g. \"Proposal.pdf\"."
                      },
                      "contentBytes": {
                        "type": "string",
                        "description": "Base64-encoded file content. Mutually exclusive with url."
                      },
                      "url": {
                        "type": "string",
                        "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type. Auto-inferred from filename if omitted."
                      },
                      "isInline": {
                        "type": "boolean",
                        "description": "Mark as inline. Default false."
                      },
                      "contentId": {
                        "type": "string",
                        "description": "Optional Content-ID for inline attachments."
                      }
                    },
                    "required": [
                      "messageId",
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_send_draft": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "send_draft",
        "operationId": "ezsmartleads-outlook_send_draft",
        "description": "Send an existing Outlook draft message (typically one created by create_draft + add_attachment).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_send_draft\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "Draft message ID to send."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_mark_read": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "mark_read",
        "operationId": "ezsmartleads-outlook_mark_read",
        "description": "Mark an Outlook message as read or unread.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_mark_read\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "isRead": {
                        "type": "boolean",
                        "description": "true = mark read, false = mark unread. Default true."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_flag_message": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "flag_message",
        "operationId": "ezsmartleads-outlook_flag_message",
        "description": "Flag or unflag an Outlook message for follow-up.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_flag_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "flagStatus": {
                        "type": "string",
                        "description": "One of: notFlagged, complete, flagged. Default: flagged."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_assign_category": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "assign_category",
        "operationId": "ezsmartleads-outlook_assign_category",
        "description": "Apply Outlook color categories to a message. Categories are Outlook color tags (e.g. \"Red category\", \"Follow up\"). Pass an array of category names to set — this REPLACES existing categories on the message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_assign_category\",\"arguments\":{\"messageId\":\"<string>\",\"categories\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "categories": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of category names to apply. Empty array clears all categories."
                      }
                    },
                    "required": [
                      "messageId",
                      "categories"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_list_categories": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "list_categories",
        "operationId": "ezsmartleads-outlook_list_categories",
        "description": "List all Outlook master categories defined on the mailbox (the color-tag names that can be applied to messages).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_list_categories\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_move_message": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "move_message",
        "operationId": "ezsmartleads-outlook_move_message",
        "description": "Move an Outlook message to a different folder. destinationFolderId accepts a folder ID or a well-known name (inbox, archive, deleteditems, junkemail, drafts, sentitems).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_move_message\",\"arguments\":{\"messageId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID to move."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "Target folder ID or well-known name."
                      }
                    },
                    "required": [
                      "messageId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_list_folders": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "list_folders",
        "operationId": "ezsmartleads-outlook_list_folders",
        "description": "List Outlook mail folders with their IDs, names, and unread counts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_list_folders\",\"arguments\":{\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Max folders to return (default 50)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_delete_message": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "delete_message",
        "operationId": "ezsmartleads-outlook_delete_message",
        "description": "Delete (soft-delete to Deleted Items) an Outlook message. This is reversible — user can restore from Deleted Items until it is permanently purged.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_delete_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID to delete."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_list_attachments": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "list_attachments",
        "operationId": "ezsmartleads-outlook_list_attachments",
        "description": "List attachments on an Outlook message with their IDs, names, sizes, and content types.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_list_attachments\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_download_attachment": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "download_attachment",
        "operationId": "ezsmartleads-outlook_download_attachment",
        "description": "Download the content of a specific email attachment by message ID and attachment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_download_attachment\",\"arguments\":{\"messageId\":\"<string>\",\"attachmentId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "attachmentId": {
                        "type": "string",
                        "description": "The attachment ID (from list_attachments)."
                      }
                    },
                    "required": [
                      "messageId",
                      "attachmentId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_list_rules": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "list_rules",
        "operationId": "ezsmartleads-outlook_list_rules",
        "description": "List inbox rules configured for the Outlook mailbox.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_list_rules\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_create_rule": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "create_rule",
        "operationId": "ezsmartleads-outlook_create_rule",
        "description": "Create a new inbox rule in Outlook.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_create_rule\",\"arguments\":{\"displayName\":\"<string>\",\"conditions\":{},\"actions\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "displayName": {
                        "type": "string",
                        "description": "Name for the rule."
                      },
                      "conditions": {
                        "type": "object",
                        "description": "Rule conditions object (Graph messageRulePredicates)."
                      },
                      "actions": {
                        "type": "object",
                        "description": "Rule actions object (Graph messageRuleActions)."
                      },
                      "isEnabled": {
                        "type": "boolean",
                        "description": "Whether the rule is enabled (default true)."
                      }
                    },
                    "required": [
                      "displayName",
                      "conditions",
                      "actions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_update_rule": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "update_rule",
        "operationId": "ezsmartleads-outlook_update_rule",
        "description": "Update an existing Outlook inbox rule by ID. Pass any subset of displayName/conditions/actions/isEnabled/sequence.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_update_rule\",\"arguments\":{\"ruleId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ruleId": {
                        "type": "string",
                        "description": "The inbox rule ID (from list_rules)."
                      },
                      "displayName": {
                        "type": "string",
                        "description": "New rule name."
                      },
                      "conditions": {
                        "type": "object",
                        "description": "Updated conditions (messageRulePredicates)."
                      },
                      "actions": {
                        "type": "object",
                        "description": "Updated actions (messageRuleActions)."
                      },
                      "isEnabled": {
                        "type": "boolean",
                        "description": "Enable/disable the rule."
                      },
                      "sequence": {
                        "type": "number",
                        "description": "Execution order (lower runs first)."
                      }
                    },
                    "required": [
                      "ruleId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-outlook_delete_rule": {
      "post": {
        "tags": [
          "ezsmartleads-outlook"
        ],
        "summary": "delete_rule",
        "operationId": "ezsmartleads-outlook_delete_rule",
        "description": "Delete an Outlook inbox rule by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-outlook_delete_rule\",\"arguments\":{\"ruleId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ruleId": {
                        "type": "string",
                        "description": "The inbox rule ID to delete."
                      }
                    },
                    "required": [
                      "ruleId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_list_sites": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "list_sites",
        "operationId": "ezsmartleads-sharepoint_list_sites",
        "description": "List SharePoint sites the current user can access. Defaults to followed sites.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_list_sites\",\"arguments\":{\"search\":\"<string>\",\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "search": {
                        "type": "string",
                        "description": "Optional search query to filter sites by name. If omitted, returns followed sites."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max sites to return (default 25)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_get_site": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "get_site",
        "operationId": "ezsmartleads-sharepoint_get_site",
        "description": "Get SharePoint site metadata by site ID or by hostname + path (e.g. \"contoso.sharepoint.com:/sites/Marketing\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_get_site\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "Either a site ID (from list_sites) or \"hostname:/sites/path\" form."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_list_document_libraries": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "list_document_libraries",
        "operationId": "ezsmartleads-sharepoint_list_document_libraries",
        "description": "List the document libraries (drives) inside a SharePoint site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_list_document_libraries\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_list_files": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "list_files",
        "operationId": "ezsmartleads-sharepoint_list_files",
        "description": "List files and folders in a SharePoint document library. Defaults to the library root.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_list_files\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "folderPath": {
                        "type": "string",
                        "description": "Folder path inside the library (e.g. \"Reports/2026\"). Omit for the library root."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_search_files": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "search_files",
        "operationId": "ezsmartleads-sharepoint_search_files",
        "description": "Search SharePoint for files matching a query. Searches across all sites the user can access.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_search_files\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_get_file_metadata": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "get_file_metadata",
        "operationId": "ezsmartleads-sharepoint_get_file_metadata",
        "description": "Get metadata for a file or folder inside a SharePoint document library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_get_file_metadata\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File or folder path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_download_file": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "download_file",
        "operationId": "ezsmartleads-sharepoint_download_file",
        "description": "Download a file from a SharePoint document library. Returns text content for text files, base64-encoded otherwise. Best for files under 4 MB.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_download_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_upload_file": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "upload_file",
        "operationId": "ezsmartleads-sharepoint_upload_file",
        "description": "Upload a small file (under 4 MB) into a SharePoint document library. Pass either text content directly or base64-encoded binary content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_upload_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Destination path inside the library."
                      },
                      "content": {
                        "type": "string",
                        "description": "File content (text or base64)."
                      },
                      "encoding": {
                        "type": "string",
                        "description": "\"utf8\" (default) or \"base64\"."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type (default \"application/octet-stream\")."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_list_pages": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "list_pages",
        "operationId": "ezsmartleads-sharepoint_list_pages",
        "description": "List SharePoint pages (modern site pages) in a site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_list_pages\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max pages to return (default 25)."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_list_lists": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "list_lists",
        "operationId": "ezsmartleads-sharepoint_list_lists",
        "description": "List SharePoint lists in a site (e.g. tasks, contacts, custom lists).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_list_lists\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_get_list_items": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "get_list_items",
        "operationId": "ezsmartleads-sharepoint_get_list_items",
        "description": "Get items from a SharePoint list, including their fields.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_get_list_items\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID (from list_lists)."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_create_list_item": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "create_list_item",
        "operationId": "ezsmartleads-sharepoint_create_list_item",
        "description": "Create a new item in a SharePoint list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_create_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"fields\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "fields": {
                        "type": "object",
                        "description": "Field values for the new item (e.g. { \"Title\": \"My Item\" })."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "fields"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_update_list_item": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "update_list_item",
        "operationId": "ezsmartleads-sharepoint_update_list_item",
        "description": "Update fields on an existing SharePoint list item.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_update_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"itemId\":\"<string>\",\"fields\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "itemId": {
                        "type": "string",
                        "description": "The list item ID to update."
                      },
                      "fields": {
                        "type": "object",
                        "description": "Field values to update."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "itemId",
                      "fields"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_delete_list_item": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "delete_list_item",
        "operationId": "ezsmartleads-sharepoint_delete_list_item",
        "description": "Delete a SharePoint list item by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_delete_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"itemId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "itemId": {
                        "type": "string",
                        "description": "The list item ID to delete."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "itemId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_delete_file": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "delete_file",
        "operationId": "ezsmartleads-sharepoint_delete_file",
        "description": "Delete a file or folder from a SharePoint document library. Moves to recycle bin.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_delete_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File or folder path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_move_file": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "move_file",
        "operationId": "ezsmartleads-sharepoint_move_file",
        "description": "Move a file or folder to a different location in a SharePoint document library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_move_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"destinationFolderPath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Source file/folder path."
                      },
                      "destinationFolderPath": {
                        "type": "string",
                        "description": "Target parent folder path (e.g. \"Reports/Archive\"). Root if empty."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name after move."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "destinationFolderPath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-sharepoint_copy_file": {
      "post": {
        "tags": [
          "ezsmartleads-sharepoint"
        ],
        "summary": "copy_file",
        "operationId": "ezsmartleads-sharepoint_copy_file",
        "description": "Copy a file or folder to a different location in a SharePoint document library. Returns a monitor URL; copy runs asynchronously.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-sharepoint_copy_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"destinationFolderPath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Source file/folder path."
                      },
                      "destinationFolderPath": {
                        "type": "string",
                        "description": "Target parent folder path."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name for the copy."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "destinationFolderPath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_list_teams": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "list_teams",
        "operationId": "ezsmartleads-teams_list_teams",
        "description": "List all Microsoft Teams the current user is a member of.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_list_teams\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_list_channels": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "list_channels",
        "operationId": "ezsmartleads-teams_list_channels",
        "description": "List channels in a specific team.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_list_channels\",\"arguments\":{\"teamId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID (from list_teams)."
                      }
                    },
                    "required": [
                      "teamId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_list_channel_messages": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "list_channel_messages",
        "operationId": "ezsmartleads-teams_list_channel_messages",
        "description": "List recent messages in a Teams channel.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_list_channel_messages\",\"arguments\":{\"teamId\":\"<string>\",\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID."
                      },
                      "channelId": {
                        "type": "string",
                        "description": "The channel ID."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25)."
                      }
                    },
                    "required": [
                      "teamId",
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_send_channel_message": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "send_channel_message",
        "operationId": "ezsmartleads-teams_send_channel_message",
        "description": "Post a message to a Teams channel. NOTE: this is visible to all channel members — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_send_channel_message\",\"arguments\":{\"teamId\":\"<string>\",\"channelId\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID."
                      },
                      "channelId": {
                        "type": "string",
                        "description": "The channel ID."
                      },
                      "message": {
                        "type": "string",
                        "description": "Message content (HTML supported)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "\"html\" (default) or \"text\"."
                      }
                    },
                    "required": [
                      "teamId",
                      "channelId",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_list_chats": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "list_chats",
        "operationId": "ezsmartleads-teams_list_chats",
        "description": "List 1:1 and group chats the current user is part of.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_list_chats\",\"arguments\":{\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Max chats to return (default 25)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_get_chat_messages": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "get_chat_messages",
        "operationId": "ezsmartleads-teams_get_chat_messages",
        "description": "Get recent messages from a specific Teams chat (1:1 or group).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_get_chat_messages\",\"arguments\":{\"chatId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "chatId": {
                        "type": "string",
                        "description": "The chat ID (from list_chats)."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25)."
                      }
                    },
                    "required": [
                      "chatId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_send_chat_message": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "send_chat_message",
        "operationId": "ezsmartleads-teams_send_chat_message",
        "description": "Send a message to a Teams chat (1:1 or group). NOTE: this notifies recipients — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_send_chat_message\",\"arguments\":{\"chatId\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "chatId": {
                        "type": "string",
                        "description": "The chat ID."
                      },
                      "message": {
                        "type": "string",
                        "description": "Message content (HTML supported)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "\"html\" (default) or \"text\"."
                      }
                    },
                    "required": [
                      "chatId",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ezsmartleads-teams_create_online_meeting": {
      "post": {
        "tags": [
          "ezsmartleads-teams"
        ],
        "summary": "create_online_meeting",
        "operationId": "ezsmartleads-teams_create_online_meeting",
        "description": "Create a Teams online meeting. NOTE: this sends calendar invites to participants — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ezsmartleads-teams_create_online_meeting\",\"arguments\":{\"subject\":\"<string>\",\"startDateTime\":\"<string>\",\"endDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Meeting subject."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "Start time in ISO 8601 format (e.g. \"2026-04-15T09:00:00Z\")."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "End time in ISO 8601 format (e.g. \"2026-04-15T10:00:00Z\")."
                      },
                      "participants": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Optional array of participant email addresses."
                      }
                    },
                    "required": [
                      "subject",
                      "startDateTime",
                      "endDateTime"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=firecrawl_scrape": {
      "post": {
        "tags": [
          "firecrawl"
        ],
        "summary": "scrape",
        "operationId": "firecrawl_scrape",
        "description": "Scrape a single URL. Returns clean Markdown by default. Handles JS-rendered pages. 1 credit per scrape. Best for ad-hoc \"grab content from this URL\" — use Apify for site-specific scrapers (LinkedIn/Google Maps/etc).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"firecrawl_scrape\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "URL to scrape."
                      },
                      "formats": {
                        "type": "array",
                        "description": "Output formats. Default [\"markdown\"]. Options: \"markdown\", \"html\", \"rawHtml\", \"links\", \"screenshot\", \"screenshot@fullPage\", \"json\"."
                      },
                      "onlyMainContent": {
                        "type": "boolean",
                        "description": "Strip nav/footer/sidebar. Default true."
                      },
                      "includeTags": {
                        "type": "array",
                        "description": "HTML tags/classes to include. E.g. [\".article-body\"]."
                      },
                      "excludeTags": {
                        "type": "array",
                        "description": "HTML tags/classes to exclude."
                      },
                      "waitFor": {
                        "type": "number",
                        "description": "Wait N ms after page load before scraping. For JS-heavy sites."
                      },
                      "timeout": {
                        "type": "number",
                        "description": "Max request time in ms. Default 30000."
                      },
                      "mobile": {
                        "type": "boolean",
                        "description": "Use mobile viewport."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=firecrawl_crawl": {
      "post": {
        "tags": [
          "firecrawl"
        ],
        "summary": "crawl",
        "operationId": "firecrawl_crawl",
        "description": "Crawl a whole site starting from a URL. Async — returns a crawl job ID. Poll with get_crawl_status. 1 credit per page. Set limit + includePaths to control cost.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"firecrawl_crawl\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Starting URL."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max pages to crawl. Default 100 (guard against runaway cost)."
                      },
                      "maxDepth": {
                        "type": "number",
                        "description": "Max link depth from start URL. Default unlimited."
                      },
                      "includePaths": {
                        "type": "array",
                        "description": "Regex patterns — only crawl matching URLs, e.g. [\"/blog/.*\"]."
                      },
                      "excludePaths": {
                        "type": "array",
                        "description": "Regex patterns to skip."
                      },
                      "allowBackwardLinks": {
                        "type": "boolean",
                        "description": "Follow links back to parent paths."
                      },
                      "allowExternalLinks": {
                        "type": "boolean",
                        "description": "Follow off-domain links. Default false."
                      },
                      "scrapeOptions": {
                        "type": "object",
                        "description": "Same shape as scrape input — applied to each crawled page."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=firecrawl_get_crawl_status": {
      "post": {
        "tags": [
          "firecrawl"
        ],
        "summary": "get_crawl_status",
        "operationId": "firecrawl_get_crawl_status",
        "description": "Get status + partial results for an async crawl job. When status = \"completed\", full results are in data[].\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"firecrawl_get_crawl_status\",\"arguments\":{\"jobId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "jobId": {
                        "type": "string",
                        "description": "Crawl job ID returned by crawl."
                      }
                    },
                    "required": [
                      "jobId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=firecrawl_cancel_crawl": {
      "post": {
        "tags": [
          "firecrawl"
        ],
        "summary": "cancel_crawl",
        "operationId": "firecrawl_cancel_crawl",
        "description": "Cancel a running crawl job (stops compute charges).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"firecrawl_cancel_crawl\",\"arguments\":{\"jobId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "jobId": {
                        "type": "string",
                        "description": "Crawl job ID."
                      }
                    },
                    "required": [
                      "jobId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=firecrawl_search": {
      "post": {
        "tags": [
          "firecrawl"
        ],
        "summary": "search",
        "operationId": "firecrawl_search",
        "description": "Search the web and scrape top results in one call. Returns search results + scraped content. Great for \"find + extract\" workflows.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"firecrawl_search\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search query."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Number of results. Default 5."
                      },
                      "scrapeOptions": {
                        "type": "object",
                        "description": "Scrape config applied to each result."
                      },
                      "country": {
                        "type": "string",
                        "description": "2-letter country code, e.g. \"us\"."
                      },
                      "lang": {
                        "type": "string",
                        "description": "Language code, e.g. \"en\"."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=firecrawl_extract": {
      "post": {
        "tags": [
          "firecrawl"
        ],
        "summary": "extract",
        "operationId": "firecrawl_extract",
        "description": "Extract structured data from one or more URLs using a JSON schema or plain prompt. Firecrawl scrapes + uses an LLM to fill the schema. Pass \"schema\" as JSON Schema shape or use \"prompt\" for free-form extraction.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"firecrawl_extract\",\"arguments\":{\"urls\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "urls": {
                        "type": "array",
                        "description": "URLs to extract data from."
                      },
                      "schema": {
                        "type": "object",
                        "description": "JSON Schema describing the fields to extract. E.g. {\"type\":\"object\",\"properties\":{\"price\":{\"type\":\"number\"},\"title\":{\"type\":\"string\"}}}."
                      },
                      "prompt": {
                        "type": "string",
                        "description": "Free-form extraction prompt. Use if you don't want to write a schema. E.g. \"extract product name, price, stock status\"."
                      },
                      "enableWebSearch": {
                        "type": "boolean",
                        "description": "Let Firecrawl follow external references for richer data."
                      }
                    },
                    "required": [
                      "urls"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=firecrawl_map": {
      "post": {
        "tags": [
          "firecrawl"
        ],
        "summary": "map",
        "operationId": "firecrawl_map",
        "description": "Quickly discover all URLs on a site (sitemap-like). Fast, cheap — use before crawl to scope what pages exist. 1 credit per map call regardless of URL count.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"firecrawl_map\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Site URL."
                      },
                      "search": {
                        "type": "string",
                        "description": "Optional filter — only return URLs matching this substring."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max URLs. Default 5000."
                      },
                      "ignoreSitemap": {
                        "type": "boolean",
                        "description": "Skip sitemap.xml and crawl manually. Default false."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_list_workflows": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "list_workflows",
        "operationId": "forest_list_workflows",
        "description": "List all of your Forest workflows (cron + webhook automations). Returns id, name, trigger type, status, lastRunAt, nextRunAt for each.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_list_workflows\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_get_workflow": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "get_workflow",
        "operationId": "forest_get_workflow",
        "description": "Get a single Forest workflow's full definition + recent 20 runs.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_get_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow id"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_list_templates": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "list_templates",
        "operationId": "forest_list_templates",
        "description": "List the prefab Forest workflow templates (gmail bulk-trash, brain health-check, webhook starter, etc.). Use install_template to create one.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_list_templates\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_install_template": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "install_template",
        "operationId": "forest_install_template",
        "description": "Create a new Forest workflow from a prefab template. Returns the created workflow. Templates with destructive ops default to dryRun:true — review the first run, then update_workflow to flip dryRun:false.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_install_template\",\"arguments\":{\"templateId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "templateId": {
                        "type": "string",
                        "description": "Template id (call list_templates to see options)."
                      },
                      "nameOverride": {
                        "type": "string",
                        "description": "Optional custom name. Defaults to the template label."
                      }
                    },
                    "required": [
                      "templateId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_create_workflow": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "create_workflow",
        "operationId": "forest_create_workflow",
        "description": "Create a custom Forest workflow. Use install_template for common bulk tasks instead. Steps are an array of {service, tool, args} — list_adapters shows available services and tools.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_create_workflow\",\"arguments\":{\"name\":\"<string>\",\"triggerType\":\"<string>\",\"steps\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "triggerType": {
                        "type": "string",
                        "enum": [
                          "CRON",
                          "WEBHOOK"
                        ]
                      },
                      "cronExpr": {
                        "type": "string",
                        "description": "Required if triggerType=CRON. Standard 5-field cron (e.g. '0 9 * * *' for 9am daily)."
                      },
                      "steps": {
                        "type": "array",
                        "description": "Sequence of adapter tool calls. Each step: { service, tool, args }."
                      }
                    },
                    "required": [
                      "name",
                      "triggerType",
                      "steps"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_update_workflow": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "update_workflow",
        "operationId": "forest_update_workflow",
        "description": "Update a Forest workflow. Pass only the fields you want to change. To pause a workflow without deleting, set status to PAUSED.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_update_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "cronExpr": {
                        "type": "string"
                      },
                      "steps": {
                        "type": "array"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "ACTIVE",
                          "PAUSED",
                          "ARCHIVED"
                        ]
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_archive_workflow": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "archive_workflow",
        "operationId": "forest_archive_workflow",
        "description": "Soft-delete a Forest workflow (sets status=ARCHIVED). Stops cron firing but keeps run history.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_archive_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_run_workflow": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "run_workflow",
        "operationId": "forest_run_workflow",
        "description": "Manually trigger a Forest workflow now. Returns {runId, status} once execution finishes (synchronous). Use this to test a workflow before relying on its cron schedule. Pass `payload` to simulate a webhook body — steps that reference `$webhook.path.to.field` will resolve against this payload exactly as if it had been POSTed to the workflow's webhook URL. For non-webhook workflows the payload is still made available for `$webhook.*` resolution but is otherwise ignored.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_run_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow id"
                      },
                      "payload": {
                        "description": "Optional JSON payload — referenced from steps via $webhook.path. Useful for testing webhook workflows manually."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_list_runs": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "list_runs",
        "operationId": "forest_list_runs",
        "description": "List recent runs for a workflow (newest first).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_list_runs\",\"arguments\":{\"workflowId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max runs to return (default 20, max 100)"
                      }
                    },
                    "required": [
                      "workflowId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_get_run": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "get_run",
        "operationId": "forest_get_run",
        "description": "Get a single run's full step logs and webhook payload (if any).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_get_run\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=forest_rotate_webhook": {
      "post": {
        "tags": [
          "forest"
        ],
        "summary": "rotate_webhook",
        "operationId": "forest_rotate_webhook",
        "description": "Rotate the webhook URL for a WEBHOOK-triggered workflow. Use this if the URL leaked. Old URL becomes invalid immediately.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"forest_rotate_webhook\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_list_properties": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "list_properties",
        "operationId": "ganalytics_list_properties",
        "description": "List GA4 properties the authenticated user has access to. If \"account\" is provided, lists properties under that Admin API account (e.g. \"accounts/12345\"). Without an account, returns account summaries including all properties under each account.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_list_properties\",\"arguments\":{\"account\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "account": {
                        "type": "string",
                        "description": "Optional. Admin API account resource name (e.g. \"accounts/12345\"). Omit to list all account summaries."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_run_report": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "run_report",
        "operationId": "ganalytics_run_report",
        "description": "Run a standard GA4 report against a property. Returns rows of dimension values with their corresponding metric values. Supports filtering, ordering, and pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_run_report\",\"arguments\":{\"propertyId\":\"<string>\",\"dateRanges\":[],\"metrics\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "propertyId": {
                        "type": "string",
                        "description": "GA4 property ID (numeric, e.g. \"123456789\")."
                      },
                      "dateRanges": {
                        "type": "array",
                        "description": "List of date ranges, e.g. [{startDate:\"2026-03-01\",endDate:\"2026-03-31\"}]. Dates in YYYY-MM-DD, or \"today\"/\"yesterday\"/\"NdaysAgo\".",
                        "items": {
                          "type": "object",
                          "properties": {
                            "startDate": {
                              "type": "string"
                            },
                            "endDate": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "startDate",
                            "endDate"
                          ]
                        }
                      },
                      "dimensions": {
                        "type": "array",
                        "description": "List of dimensions, e.g. [{name:\"country\"},{name:\"city\"}].",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      },
                      "metrics": {
                        "type": "array",
                        "description": "List of metrics, e.g. [{name:\"activeUsers\"},{name:\"sessions\"}].",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      },
                      "dimensionFilter": {
                        "type": "object",
                        "description": "Optional FilterExpression applied to dimensions (see GA4 Data API docs)."
                      },
                      "metricFilter": {
                        "type": "object",
                        "description": "Optional FilterExpression applied to metrics."
                      },
                      "orderBys": {
                        "type": "array",
                        "description": "Optional list of OrderBy specs.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum rows to return. Default 10000."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Row offset for pagination. Default 0."
                      }
                    },
                    "required": [
                      "propertyId",
                      "dateRanges",
                      "metrics"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_run_realtime_report": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "run_realtime_report",
        "operationId": "ganalytics_run_realtime_report",
        "description": "Run a realtime GA4 report (data from the last 30 minutes). Supports dimensions like country, deviceCategory, unifiedScreenName, and metrics like activeUsers.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_run_realtime_report\",\"arguments\":{\"propertyId\":\"<string>\",\"metrics\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "propertyId": {
                        "type": "string",
                        "description": "GA4 property ID."
                      },
                      "dimensions": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      },
                      "metrics": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum rows. Default 10000."
                      }
                    },
                    "required": [
                      "propertyId",
                      "metrics"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_batch_run_reports": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "batch_run_reports",
        "operationId": "ganalytics_batch_run_reports",
        "description": "Run up to 5 reports in a single request against the same GA4 property. \"requests\" is an array of report specs matching run_report shape.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_batch_run_reports\",\"arguments\":{\"propertyId\":\"<string>\",\"requests\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "propertyId": {
                        "type": "string",
                        "description": "GA4 property ID."
                      },
                      "requests": {
                        "type": "array",
                        "description": "Array of report request objects.",
                        "items": {
                          "type": "object"
                        }
                      }
                    },
                    "required": [
                      "propertyId",
                      "requests"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_run_pivot_report": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "run_pivot_report",
        "operationId": "ganalytics_run_pivot_report",
        "description": "Run a pivot report on a GA4 property. Each pivot describes a fieldNames array to pivot on, with its own limit and offset.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_run_pivot_report\",\"arguments\":{\"propertyId\":\"<string>\",\"dateRanges\":[],\"metrics\":[],\"pivots\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "propertyId": {
                        "type": "string",
                        "description": "GA4 property ID."
                      },
                      "dateRanges": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "startDate": {
                              "type": "string"
                            },
                            "endDate": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "startDate",
                            "endDate"
                          ]
                        }
                      },
                      "dimensions": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      },
                      "metrics": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      },
                      "pivots": {
                        "type": "array",
                        "description": "Array of pivot specs: [{fieldNames:[\"country\"],limit:10,offset:0}].",
                        "items": {
                          "type": "object",
                          "properties": {
                            "fieldNames": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "limit": {
                              "type": "number"
                            },
                            "offset": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "fieldNames"
                          ]
                        }
                      }
                    },
                    "required": [
                      "propertyId",
                      "dateRanges",
                      "metrics",
                      "pivots"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_get_metadata": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "get_metadata",
        "operationId": "ganalytics_get_metadata",
        "description": "Return all available dimensions and metrics for a GA4 property, including custom ones. Use this to discover what can be passed to run_report.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_get_metadata\",\"arguments\":{\"propertyId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "propertyId": {
                        "type": "string",
                        "description": "GA4 property ID."
                      }
                    },
                    "required": [
                      "propertyId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_check_compatibility": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "check_compatibility",
        "operationId": "ganalytics_check_compatibility",
        "description": "Check which dimensions and metrics are compatible with each other for a property before running a report. Returns compatibility for each combination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_check_compatibility\",\"arguments\":{\"propertyId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "propertyId": {
                        "type": "string",
                        "description": "GA4 property ID."
                      },
                      "dimensions": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      },
                      "metrics": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    },
                    "required": [
                      "propertyId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=ganalytics_top_pages": {
      "post": {
        "tags": [
          "ganalytics"
        ],
        "summary": "top_pages",
        "operationId": "ganalytics_top_pages",
        "description": "Convenience: return the top pages by screenPageViews for a GA4 property over a date range (default last 30 days). Rows sorted descending by views.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"ganalytics_top_pages\",\"arguments\":{\"propertyId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "propertyId": {
                        "type": "string",
                        "description": "GA4 property ID."
                      },
                      "startDate": {
                        "type": "string",
                        "description": "Start date YYYY-MM-DD. Default 30 days ago."
                      },
                      "endDate": {
                        "type": "string",
                        "description": "End date YYYY-MM-DD. Default today."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum rows to return. Default 25."
                      }
                    },
                    "required": [
                      "propertyId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_list_calendars": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "list_calendars",
        "operationId": "gcalendar_list_calendars",
        "description": "List all calendars in the user's calendar list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_list_calendars\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_get_calendar": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "get_calendar",
        "operationId": "gcalendar_get_calendar",
        "description": "Get metadata for a specific calendar.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_get_calendar\",\"arguments\":{\"calendarId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (use \"primary\" for the user's main calendar)."
                      }
                    },
                    "required": [
                      "calendarId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_list_events": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "list_events",
        "operationId": "gcalendar_list_events",
        "description": "List events on a calendar. Supports time window (timeMin/timeMax as RFC3339, e.g. \"2026-04-21T00:00:00Z\"), text search (q), and singleEvents=true to expand recurring instances.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_list_events\",\"arguments\":{\"calendarId\":\"<string>\",\"timeMin\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (default \"primary\")."
                      },
                      "timeMin": {
                        "type": "string",
                        "description": "RFC3339 lower bound for event start time."
                      },
                      "timeMax": {
                        "type": "string",
                        "description": "RFC3339 upper bound for event start time."
                      },
                      "q": {
                        "type": "string",
                        "description": "Free-text search filter."
                      },
                      "maxResults": {
                        "type": "number",
                        "description": "Max events to return (default 50, max 2500)."
                      },
                      "singleEvents": {
                        "type": "boolean",
                        "description": "Expand recurring events into individual instances."
                      },
                      "orderBy": {
                        "type": "string",
                        "description": "\"startTime\" (requires singleEvents=true) or \"updated\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_get_event": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "get_event",
        "operationId": "gcalendar_get_event",
        "description": "Get a single event by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_get_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (default \"primary\")."
                      },
                      "eventId": {
                        "type": "string",
                        "description": "The event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_create_event": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "create_event",
        "operationId": "gcalendar_create_event",
        "description": "Create a calendar event. Provide start/end as ISO timestamps with a timeZone. To automatically attach a Google Meet link, set conferenceData={createRequest:{requestId:\"<uuid>\",conferenceSolutionKey:{type:\"hangoutsMeet\"}}}.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_create_event\",\"arguments\":{\"summary\":\"<string>\",\"start\":{},\"end\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (default \"primary\")."
                      },
                      "summary": {
                        "type": "string",
                        "description": "Event title."
                      },
                      "description": {
                        "type": "string",
                        "description": "Optional description."
                      },
                      "start": {
                        "type": "object",
                        "description": "Start time, e.g. {dateTime:\"2026-04-22T09:00:00-04:00\", timeZone:\"America/New_York\"}.",
                        "properties": {
                          "dateTime": {
                            "type": "string"
                          },
                          "timeZone": {
                            "type": "string"
                          }
                        }
                      },
                      "end": {
                        "type": "object",
                        "description": "End time, e.g. {dateTime:\"2026-04-22T10:00:00-04:00\", timeZone:\"America/New_York\"}.",
                        "properties": {
                          "dateTime": {
                            "type": "string"
                          },
                          "timeZone": {
                            "type": "string"
                          }
                        }
                      },
                      "location": {
                        "type": "string",
                        "description": "Optional location string."
                      },
                      "attendees": {
                        "type": "array",
                        "description": "Array of attendee objects like [{email:\"x@y.com\"}].",
                        "items": {
                          "type": "object",
                          "properties": {
                            "email": {
                              "type": "string"
                            }
                          }
                        }
                      },
                      "conferenceData": {
                        "type": "object",
                        "description": "Optional conferenceData payload (auto-sets conferenceDataVersion=1)."
                      },
                      "recurrence": {
                        "type": "array",
                        "description": "RFC5545 RRULE strings, e.g. [\"RRULE:FREQ=WEEKLY;BYDAY=MO\"].",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "summary",
                      "start",
                      "end"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_update_event": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "update_event",
        "operationId": "gcalendar_update_event",
        "description": "Patch-update fields on an event. Only the provided fields in `patch` change.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_update_event\",\"arguments\":{\"eventId\":\"<string>\",\"patch\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (default \"primary\")."
                      },
                      "eventId": {
                        "type": "string",
                        "description": "The event ID."
                      },
                      "patch": {
                        "type": "object",
                        "description": "Partial event body (summary, description, start, end, attendees, etc.)."
                      }
                    },
                    "required": [
                      "eventId",
                      "patch"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_delete_event": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "delete_event",
        "operationId": "gcalendar_delete_event",
        "description": "Delete an event. sendUpdates controls attendee notifications: \"all\", \"externalOnly\", or \"none\" (default \"all\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_delete_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (default \"primary\")."
                      },
                      "eventId": {
                        "type": "string",
                        "description": "The event ID to delete."
                      },
                      "sendUpdates": {
                        "type": "string",
                        "description": "\"all\" | \"externalOnly\" | \"none\"."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_quick_add_event": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "quick_add_event",
        "operationId": "gcalendar_quick_add_event",
        "description": "Create an event from a natural-language string, e.g. \"Lunch with Jesse Thursday 12pm\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_quick_add_event\",\"arguments\":{\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (default \"primary\")."
                      },
                      "text": {
                        "type": "string",
                        "description": "Natural-language event description."
                      }
                    },
                    "required": [
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_move_event": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "move_event",
        "operationId": "gcalendar_move_event",
        "description": "Move an event from its current calendar to a destination calendar.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_move_event\",\"arguments\":{\"eventId\":\"<string>\",\"destination\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Source calendar ID (default \"primary\")."
                      },
                      "eventId": {
                        "type": "string",
                        "description": "The event ID."
                      },
                      "destination": {
                        "type": "string",
                        "description": "Destination calendar ID."
                      }
                    },
                    "required": [
                      "eventId",
                      "destination"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_list_free_busy": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "list_free_busy",
        "operationId": "gcalendar_list_free_busy",
        "description": "Look up free/busy windows for one or more calendars in a time range. Returns busy intervals per calendar.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_list_free_busy\",\"arguments\":{\"timeMin\":\"<string>\",\"timeMax\":\"<string>\",\"calendarIds\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "timeMin": {
                        "type": "string",
                        "description": "RFC3339 start of window."
                      },
                      "timeMax": {
                        "type": "string",
                        "description": "RFC3339 end of window."
                      },
                      "calendarIds": {
                        "type": "array",
                        "description": "Calendar IDs / email addresses to query.",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "timeMin",
                      "timeMax",
                      "calendarIds"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_find_meeting_times": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "find_meeting_times",
        "operationId": "gcalendar_find_meeting_times",
        "description": "Find available meeting slots across a set of attendees by querying freeBusy and returning gaps of at least `durationMinutes`.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_find_meeting_times\",\"arguments\":{\"durationMinutes\":0,\"timeMin\":\"<string>\",\"timeMax\":\"<string>\",\"attendeeEmails\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "durationMinutes": {
                        "type": "number",
                        "description": "Required slot duration in minutes."
                      },
                      "timeMin": {
                        "type": "string",
                        "description": "RFC3339 start of search window."
                      },
                      "timeMax": {
                        "type": "string",
                        "description": "RFC3339 end of search window."
                      },
                      "attendeeEmails": {
                        "type": "array",
                        "description": "Attendee email addresses (must be calendar IDs the user can read).",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "durationMinutes",
                      "timeMin",
                      "timeMax",
                      "attendeeEmails"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcalendar_create_meet_event": {
      "post": {
        "tags": [
          "gcalendar"
        ],
        "summary": "create_meet_event",
        "operationId": "gcalendar_create_meet_event",
        "description": "Create a calendar event with a Google Meet link automatically attached. Same args as create_event minus conferenceData (auto-generated).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcalendar_create_meet_event\",\"arguments\":{\"summary\":\"<string>\",\"start\":{},\"end\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "calendarId": {
                        "type": "string",
                        "description": "Calendar ID (default \"primary\")."
                      },
                      "summary": {
                        "type": "string",
                        "description": "Event title."
                      },
                      "description": {
                        "type": "string",
                        "description": "Optional description."
                      },
                      "start": {
                        "type": "object",
                        "properties": {
                          "dateTime": {
                            "type": "string"
                          },
                          "timeZone": {
                            "type": "string"
                          }
                        }
                      },
                      "end": {
                        "type": "object",
                        "properties": {
                          "dateTime": {
                            "type": "string"
                          },
                          "timeZone": {
                            "type": "string"
                          }
                        }
                      },
                      "location": {
                        "type": "string"
                      },
                      "attendees": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "email": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "required": [
                      "summary",
                      "start",
                      "end"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_list_spaces": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "list_spaces",
        "operationId": "gchat_list_spaces",
        "description": "List Google Chat spaces (rooms, group chats, and DMs) the caller is a member of.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_list_spaces\",\"arguments\":{\"pageSize\":0,\"pageToken\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageSize": {
                        "type": "number",
                        "description": "Max spaces to return. Optional."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token. Optional."
                      },
                      "filter": {
                        "type": "string",
                        "description": "Filter expression (e.g. 'spaceType = \"SPACE\"' or 'spaceType = \"DIRECT_MESSAGE\"'). Optional."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_get_space": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "get_space",
        "operationId": "gchat_get_space",
        "description": "Get a single Google Chat space by resource name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_get_space\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Space resource name \"spaces/{spaceId}\"."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_create_space": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "create_space",
        "operationId": "gchat_create_space",
        "description": "Create a new Google Chat space (named room or group chat).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_create_space\",\"arguments\":{\"displayName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "displayName": {
                        "type": "string",
                        "description": "Display name for the space. Required for SPACE and GROUP_CHAT; ignored for DIRECT_MESSAGE."
                      },
                      "spaceType": {
                        "type": "string",
                        "enum": [
                          "SPACE",
                          "GROUP_CHAT",
                          "DIRECT_MESSAGE"
                        ],
                        "description": "Type of space to create. Default SPACE."
                      }
                    },
                    "required": [
                      "displayName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_list_messages": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "list_messages",
        "operationId": "gchat_list_messages",
        "description": "List messages in a Google Chat space.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_list_messages\",\"arguments\":{\"parent\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parent": {
                        "type": "string",
                        "description": "Parent space \"spaces/{spaceId}\"."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Max messages to return. Optional."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token. Optional."
                      },
                      "filter": {
                        "type": "string",
                        "description": "Filter expression (e.g. time range filter). Optional."
                      }
                    },
                    "required": [
                      "parent"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_get_message": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "get_message",
        "operationId": "gchat_get_message",
        "description": "Get a single Google Chat message by resource name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_get_message\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Message resource name \"spaces/{spaceId}/messages/{messageId}\"."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_send_message": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "send_message",
        "operationId": "gchat_send_message",
        "description": "Send a text message to a Google Chat space. Optionally reply in a thread.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_send_message\",\"arguments\":{\"parent\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parent": {
                        "type": "string",
                        "description": "Parent space \"spaces/{spaceId}\"."
                      },
                      "text": {
                        "type": "string",
                        "description": "Message text."
                      },
                      "threadKey": {
                        "type": "string",
                        "description": "Optional threadKey. If provided, post as a reply to that thread (falls back to a new thread if the key is new)."
                      }
                    },
                    "required": [
                      "parent",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_update_message": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "update_message",
        "operationId": "gchat_update_message",
        "description": "Update the text of an existing Google Chat message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_update_message\",\"arguments\":{\"name\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Message resource name \"spaces/{spaceId}/messages/{messageId}\"."
                      },
                      "text": {
                        "type": "string",
                        "description": "New message text."
                      }
                    },
                    "required": [
                      "name",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_delete_message": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "delete_message",
        "operationId": "gchat_delete_message",
        "description": "Delete a Google Chat message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_delete_message\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Message resource name \"spaces/{spaceId}/messages/{messageId}\"."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_list_members": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "list_members",
        "operationId": "gchat_list_members",
        "description": "List members of a Google Chat space.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_list_members\",\"arguments\":{\"parent\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parent": {
                        "type": "string",
                        "description": "Parent space \"spaces/{spaceId}\"."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Max members to return. Optional."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token. Optional."
                      }
                    },
                    "required": [
                      "parent"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gchat_search_messages": {
      "post": {
        "tags": [
          "gchat"
        ],
        "summary": "search_messages",
        "operationId": "gchat_search_messages",
        "description": "Convenience tool: list messages in a space and filter client-side by a substring query. Returns matching messages.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gchat_search_messages\",\"arguments\":{\"query\":\"<string>\",\"spaceName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Case-insensitive substring to match in message text."
                      },
                      "spaceName": {
                        "type": "string",
                        "description": "Space resource name \"spaces/{spaceId}\" to search. Required."
                      }
                    },
                    "required": [
                      "query",
                      "spaceName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_list_contacts": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "list_contacts",
        "operationId": "gcontacts_list_contacts",
        "description": "List the authenticated user's contacts (/people/me/connections). Returns up to pageSize contacts with names, emails, phones, and organizations by default.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_list_contacts\",\"arguments\":{\"pageSize\":0,\"pageToken\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageSize": {
                        "type": "number",
                        "description": "Max contacts per page (default 100, max 1000)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token from previous response."
                      },
                      "personFields": {
                        "type": "string",
                        "description": "Comma-separated list of fields to return. Default \"names,emailAddresses,phoneNumbers,organizations,metadata\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_get_contact": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "get_contact",
        "operationId": "gcontacts_get_contact",
        "description": "Fetch a single contact by resource name (e.g. \"people/c12345\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_get_contact\",\"arguments\":{\"resourceName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "resourceName": {
                        "type": "string",
                        "description": "Full resource name, e.g. \"people/c12345\"."
                      },
                      "personFields": {
                        "type": "string",
                        "description": "Comma-separated fields (default common fields)."
                      }
                    },
                    "required": [
                      "resourceName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_search_contacts": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "search_contacts",
        "operationId": "gcontacts_search_contacts",
        "description": "Search the user's contacts by query string (matches names/emails/etc.). Uses /people:searchContacts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_search_contacts\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "readMask": {
                        "type": "string",
                        "description": "Comma-separated fields to return (default \"names,emailAddresses,phoneNumbers,organizations\")."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_create_contact": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "create_contact",
        "operationId": "gcontacts_create_contact",
        "description": "Create a new contact. All fields optional, but you must provide at least one. Example: {givenName:\"Jesse\",familyName:\"Davis\",emails:[\"jesse@tmrw.com\"]}.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_create_contact\",\"arguments\":{\"givenName\":\"<string>\",\"familyName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "givenName": {
                        "type": "string",
                        "description": "First name."
                      },
                      "familyName": {
                        "type": "string",
                        "description": "Last name."
                      },
                      "emails": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Email addresses."
                      },
                      "phones": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Phone numbers."
                      },
                      "organization": {
                        "type": "string",
                        "description": "Company / organization name."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_update_contact": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "update_contact",
        "operationId": "gcontacts_update_contact",
        "description": "Update an existing contact. Must provide updateMask (comma-separated fields to modify), e.g. \"names,emailAddresses\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_update_contact\",\"arguments\":{\"resourceName\":\"<string>\",\"updateMask\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "resourceName": {
                        "type": "string",
                        "description": "Resource name, e.g. \"people/c12345\"."
                      },
                      "updateMask": {
                        "type": "string",
                        "description": "Comma-separated list of fields to modify: names,emailAddresses,phoneNumbers,organizations."
                      },
                      "givenName": {
                        "type": "string"
                      },
                      "familyName": {
                        "type": "string"
                      },
                      "emails": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "phones": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "organization": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "resourceName",
                      "updateMask"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_delete_contact": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "delete_contact",
        "operationId": "gcontacts_delete_contact",
        "description": "Delete a contact by resource name. NOTE: destructive — caller should confirm with the user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_delete_contact\",\"arguments\":{\"resourceName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "resourceName": {
                        "type": "string",
                        "description": "Resource name, e.g. \"people/c12345\"."
                      }
                    },
                    "required": [
                      "resourceName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_list_contact_groups": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "list_contact_groups",
        "operationId": "gcontacts_list_contact_groups",
        "description": "List the authenticated user's contact groups (labels).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_list_contact_groups\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gcontacts_list_other_contacts": {
      "post": {
        "tags": [
          "gcontacts"
        ],
        "summary": "list_other_contacts",
        "operationId": "gcontacts_list_other_contacts",
        "description": "List \"Other contacts\" — people the user has interacted with via email but not explicitly added. Uses /otherContacts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gcontacts_list_other_contacts\",\"arguments\":{\"pageSize\":0,\"pageToken\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageSize": {
                        "type": "number",
                        "description": "Max contacts per page (default 100, max 1000)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token from previous response."
                      },
                      "readMask": {
                        "type": "string",
                        "description": "Comma-separated fields to return (default \"names,emailAddresses,phoneNumbers,metadata\")."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_create_document": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "create_document",
        "operationId": "gdocs_create_document",
        "description": "Create a new Google Doc with a given title. Returns the new documentId.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_create_document\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Title of the new document."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_get_document": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "get_document",
        "operationId": "gdocs_get_document",
        "description": "Retrieve the full contents of a Google Doc by its documentId (body, styles, named ranges, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_get_document\",\"arguments\":{\"documentId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      }
                    },
                    "required": [
                      "documentId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_insert_text": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "insert_text",
        "operationId": "gdocs_insert_text",
        "description": "Insert text into a Google Doc at a specific index (default index 1 = beginning of body).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_insert_text\",\"arguments\":{\"documentId\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      },
                      "text": {
                        "type": "string",
                        "description": "Text to insert."
                      },
                      "index": {
                        "type": "number",
                        "description": "Insertion index (1-based, default 1)."
                      }
                    },
                    "required": [
                      "documentId",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_replace_text": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "replace_text",
        "operationId": "gdocs_replace_text",
        "description": "Replace all occurrences of a search string in a Google Doc with a replacement string.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_replace_text\",\"arguments\":{\"documentId\":\"<string>\",\"searchText\":\"<string>\",\"replaceText\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      },
                      "searchText": {
                        "type": "string",
                        "description": "Text to search for."
                      },
                      "replaceText": {
                        "type": "string",
                        "description": "Replacement text."
                      },
                      "matchCase": {
                        "type": "boolean",
                        "description": "Whether match must be case-sensitive (default false)."
                      }
                    },
                    "required": [
                      "documentId",
                      "searchText",
                      "replaceText"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_delete_range": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "delete_range",
        "operationId": "gdocs_delete_range",
        "description": "Delete a range of content from a Google Doc between startIndex and endIndex.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_delete_range\",\"arguments\":{\"documentId\":\"<string>\",\"startIndex\":0,\"endIndex\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      },
                      "startIndex": {
                        "type": "number",
                        "description": "Start index (inclusive)."
                      },
                      "endIndex": {
                        "type": "number",
                        "description": "End index (exclusive)."
                      }
                    },
                    "required": [
                      "documentId",
                      "startIndex",
                      "endIndex"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_append_text": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "append_text",
        "operationId": "gdocs_append_text",
        "description": "Append text to the end of a Google Doc body (reads current endIndex and inserts there).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_append_text\",\"arguments\":{\"documentId\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      },
                      "text": {
                        "type": "string",
                        "description": "Text to append."
                      }
                    },
                    "required": [
                      "documentId",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_apply_style": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "apply_style",
        "operationId": "gdocs_apply_style",
        "description": "Apply text styling (bold, italic, underline, font size, foreground color) to a range in a Google Doc.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_apply_style\",\"arguments\":{\"documentId\":\"<string>\",\"startIndex\":0,\"endIndex\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      },
                      "startIndex": {
                        "type": "number",
                        "description": "Start index of range (inclusive)."
                      },
                      "endIndex": {
                        "type": "number",
                        "description": "End index of range (exclusive)."
                      },
                      "bold": {
                        "type": "boolean",
                        "description": "Bold."
                      },
                      "italic": {
                        "type": "boolean",
                        "description": "Italic."
                      },
                      "underline": {
                        "type": "boolean",
                        "description": "Underline."
                      },
                      "fontSize": {
                        "type": "number",
                        "description": "Font size in points."
                      },
                      "foregroundColor": {
                        "type": "string",
                        "description": "Hex color string (e.g. \"#FF0000\")."
                      }
                    },
                    "required": [
                      "documentId",
                      "startIndex",
                      "endIndex"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_insert_table": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "insert_table",
        "operationId": "gdocs_insert_table",
        "description": "Insert a table with given rows and columns at a specified index in a Google Doc.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_insert_table\",\"arguments\":{\"documentId\":\"<string>\",\"rows\":0,\"columns\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      },
                      "rows": {
                        "type": "number",
                        "description": "Number of rows."
                      },
                      "columns": {
                        "type": "number",
                        "description": "Number of columns."
                      },
                      "index": {
                        "type": "number",
                        "description": "Insertion index (default 1)."
                      }
                    },
                    "required": [
                      "documentId",
                      "rows",
                      "columns"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_insert_image": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "insert_image",
        "operationId": "gdocs_insert_image",
        "description": "Insert an inline image from a publicly accessible URI into a Google Doc at the specified index.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_insert_image\",\"arguments\":{\"documentId\":\"<string>\",\"uri\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "documentId": {
                        "type": "string",
                        "description": "The Google Doc ID."
                      },
                      "uri": {
                        "type": "string",
                        "description": "Publicly accessible image URI."
                      },
                      "index": {
                        "type": "number",
                        "description": "Insertion index (default 1)."
                      }
                    },
                    "required": [
                      "documentId",
                      "uri"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdocs_create_from_template": {
      "post": {
        "tags": [
          "gdocs"
        ],
        "summary": "create_from_template",
        "operationId": "gdocs_create_from_template",
        "description": "Copy a template Google Doc to a new doc with a new title and perform placeholder replacements (key:value map).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdocs_create_from_template\",\"arguments\":{\"templateDocId\":\"<string>\",\"newTitle\":\"<string>\",\"replacements\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "templateDocId": {
                        "type": "string",
                        "description": "The source template document ID."
                      },
                      "newTitle": {
                        "type": "string",
                        "description": "Title for the new document."
                      },
                      "replacements": {
                        "type": "object",
                        "description": "Map of placeholder -> replacement value. Keys are searched literally.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "templateDocId",
                      "newTitle",
                      "replacements"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_list_files": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "list_files",
        "operationId": "gdrive_list_files",
        "description": "List files and folders in Google Drive. Supports Drive search syntax via the `query` param, e.g. \"mimeType='application/pdf'\", \"'FOLDER_ID' in parents\", \"trashed=false\", \"name contains 'report'\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_list_files\",\"arguments\":{\"query\":\"<string>\",\"pageSize\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Drive \"q\" search expression. Omit to list all files."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Max items per page (default 50, max 1000)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token from previous response."
                      },
                      "orderBy": {
                        "type": "string",
                        "description": "Sort order, e.g. \"modifiedTime desc\", \"name\", \"createdTime desc\"."
                      },
                      "fields": {
                        "type": "string",
                        "description": "Fields to include, e.g. \"nextPageToken, files(id,name,mimeType,modifiedTime,size,parents,webViewLink)\". Default returns common fields."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_get_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "get_file",
        "operationId": "gdrive_get_file",
        "description": "Get metadata for a single Drive file by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_get_file\",\"arguments\":{\"fileId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file ID."
                      },
                      "fields": {
                        "type": "string",
                        "description": "Fields to include (default \"*\" returns all fields)."
                      }
                    },
                    "required": [
                      "fileId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_download_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "download_file",
        "operationId": "gdrive_download_file",
        "description": "Download a Drive file by ID. Returns base64-encoded `data`, `mimeType`, and `size`. Works for binary files uploaded to Drive. For Google Docs/Sheets/Slides, use export_file instead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_download_file\",\"arguments\":{\"fileId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file ID."
                      }
                    },
                    "required": [
                      "fileId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_export_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "export_file",
        "operationId": "gdrive_export_file",
        "description": "Export a Google Doc/Sheet/Slide to another format (returns base64 `data`). Example: export a Google Doc as \"application/pdf\" or \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (docx).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_export_file\",\"arguments\":{\"fileId\":\"<string>\",\"mimeType\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file ID of a Google-native doc."
                      },
                      "mimeType": {
                        "type": "string",
                        "description": "Target export MIME type, e.g. \"application/pdf\", \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\", \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"."
                      }
                    },
                    "required": [
                      "fileId",
                      "mimeType"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_upload_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "upload_file",
        "operationId": "gdrive_upload_file",
        "description": "Upload a new file to Drive using a multipart upload. Pass the file content base64-encoded. Optional parentFolderId places the file inside a folder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_upload_file\",\"arguments\":{\"name\":\"<string>\",\"mimeType\":\"<string>\",\"contentBase64\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "File name (including extension)."
                      },
                      "mimeType": {
                        "type": "string",
                        "description": "MIME type of the file (e.g. \"text/plain\", \"application/pdf\")."
                      },
                      "contentBase64": {
                        "type": "string",
                        "description": "Base64-encoded file content."
                      },
                      "parentFolderId": {
                        "type": "string",
                        "description": "Optional parent folder ID."
                      }
                    },
                    "required": [
                      "name",
                      "mimeType",
                      "contentBase64"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_create_folder": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "create_folder",
        "operationId": "gdrive_create_folder",
        "description": "Create a new folder in Drive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_create_folder\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Folder name."
                      },
                      "parentFolderId": {
                        "type": "string",
                        "description": "Optional parent folder ID. Omit to create at the drive root."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_delete_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "delete_file",
        "operationId": "gdrive_delete_file",
        "description": "Permanently delete a Drive file or folder by ID. NOTE: this is destructive — caller should confirm with the user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_delete_file\",\"arguments\":{\"fileId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file/folder ID to delete."
                      }
                    },
                    "required": [
                      "fileId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_move_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "move_file",
        "operationId": "gdrive_move_file",
        "description": "Move a Drive file to a new parent folder. By default removes all previous parents (standard move). Set removePreviousParents=false to add the file to an additional parent while keeping existing ones.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_move_file\",\"arguments\":{\"fileId\":\"<string>\",\"newParentFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file ID to move."
                      },
                      "newParentFolderId": {
                        "type": "string",
                        "description": "Destination folder ID."
                      },
                      "removePreviousParents": {
                        "type": "boolean",
                        "description": "Default true (move). Set false to add an additional parent."
                      }
                    },
                    "required": [
                      "fileId",
                      "newParentFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_copy_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "copy_file",
        "operationId": "gdrive_copy_file",
        "description": "Create a copy of a Drive file. Optional new name and parent folder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_copy_file\",\"arguments\":{\"fileId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The source Drive file ID."
                      },
                      "name": {
                        "type": "string",
                        "description": "Optional name for the copy."
                      },
                      "parentFolderId": {
                        "type": "string",
                        "description": "Optional destination folder ID."
                      }
                    },
                    "required": [
                      "fileId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_rename_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "rename_file",
        "operationId": "gdrive_rename_file",
        "description": "Rename a Drive file or folder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_rename_file\",\"arguments\":{\"fileId\":\"<string>\",\"newName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file/folder ID."
                      },
                      "newName": {
                        "type": "string",
                        "description": "The new name."
                      }
                    },
                    "required": [
                      "fileId",
                      "newName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_share_file": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "share_file",
        "operationId": "gdrive_share_file",
        "description": "Share a Drive file/folder with another user by email. Role is one of \"reader\", \"writer\", \"commenter\", \"owner\". NOTE: this expands access — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_share_file\",\"arguments\":{\"fileId\":\"<string>\",\"email\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file/folder ID."
                      },
                      "email": {
                        "type": "string",
                        "description": "Email address of the user to share with."
                      },
                      "role": {
                        "type": "string",
                        "description": "Permission role: \"reader\", \"writer\", \"commenter\", or \"owner\". Default \"reader\"."
                      }
                    },
                    "required": [
                      "fileId",
                      "email"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_list_permissions": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "list_permissions",
        "operationId": "gdrive_list_permissions",
        "description": "List all permissions (shares) on a Drive file or folder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_list_permissions\",\"arguments\":{\"fileId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file/folder ID."
                      }
                    },
                    "required": [
                      "fileId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_search_files": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "search_files",
        "operationId": "gdrive_search_files",
        "description": "Convenience search across full-text content of Drive files. Equivalent to list_files with query `fullText contains \"...\"`.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_search_files\",\"arguments\":{\"fullText\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fullText": {
                        "type": "string",
                        "description": "Text to search for inside file contents and metadata."
                      }
                    },
                    "required": [
                      "fullText"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gdrive_list_revisions": {
      "post": {
        "tags": [
          "gdrive"
        ],
        "summary": "list_revisions",
        "operationId": "gdrive_list_revisions",
        "description": "List revision history for a Drive file.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gdrive_list_revisions\",\"arguments\":{\"fileId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fileId": {
                        "type": "string",
                        "description": "The Drive file ID."
                      }
                    },
                    "required": [
                      "fileId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_list_models": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "list_models",
        "operationId": "gemini_list_models",
        "description": "List all Gemini models available to this API key. Useful for picking a model ID (e.g. \"gemini-2.5-flash\", \"gemini-2.5-pro\", \"text-embedding-004\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_list_models\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_generate_content": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "generate_content",
        "operationId": "gemini_generate_content",
        "description": "Generate text with a Gemini model from a single prompt. Default model example: \"gemini-2.5-flash\". Response includes the full API payload plus a top-level \"text\" field with the concatenated candidate text.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_generate_content\",\"arguments\":{\"model\":\"<string>\",\"prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Model ID, e.g. \"gemini-2.5-flash\" or \"gemini-2.5-pro\"."
                      },
                      "prompt": {
                        "type": "string",
                        "description": "The user prompt text."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Sampling temperature (0.0 - 2.0). Optional."
                      },
                      "maxOutputTokens": {
                        "type": "number",
                        "description": "Max tokens to generate. Optional."
                      },
                      "topP": {
                        "type": "number",
                        "description": "Nucleus sampling parameter (0.0 - 1.0). Optional."
                      },
                      "topK": {
                        "type": "number",
                        "description": "Top-K sampling parameter. Optional."
                      },
                      "systemInstruction": {
                        "type": "string",
                        "description": "Optional system instruction applied to the conversation."
                      }
                    },
                    "required": [
                      "model",
                      "prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_chat": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "chat",
        "operationId": "gemini_chat",
        "description": "Multi-turn chat with a Gemini model. Pass messages as an array of {role, text} — role is \"user\" or \"model\". Returns the full API response plus a top-level \"text\" field with the assistant reply.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_chat\",\"arguments\":{\"model\":\"<string>\",\"messages\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Model ID, e.g. \"gemini-2.5-flash\"."
                      },
                      "messages": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "role": {
                              "type": "string",
                              "description": "\"user\" or \"model\"."
                            },
                            "text": {
                              "type": "string",
                              "description": "Message content."
                            }
                          },
                          "required": [
                            "role",
                            "text"
                          ]
                        },
                        "description": "Ordered conversation history. Must end with a \"user\" message."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Sampling temperature. Optional."
                      },
                      "maxOutputTokens": {
                        "type": "number",
                        "description": "Max tokens to generate. Optional."
                      },
                      "systemInstruction": {
                        "type": "string",
                        "description": "Optional system instruction applied to the conversation."
                      }
                    },
                    "required": [
                      "model",
                      "messages"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_generate_with_vision": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "generate_with_vision",
        "operationId": "gemini_generate_with_vision",
        "description": "Generate content with a Gemini multimodal model given a text prompt plus a base64-encoded image. Use a vision-capable model (e.g. \"gemini-2.5-flash\", \"gemini-2.5-pro\"). Image must be raw base64 (no data: URL prefix).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_generate_with_vision\",\"arguments\":{\"model\":\"<string>\",\"prompt\":\"<string>\",\"imageBase64\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Vision-capable model ID, e.g. \"gemini-2.5-flash\"."
                      },
                      "prompt": {
                        "type": "string",
                        "description": "Text prompt to accompany the image."
                      },
                      "imageBase64": {
                        "type": "string",
                        "description": "Raw base64-encoded image bytes (no \"data:image/...\" prefix)."
                      },
                      "mimeType": {
                        "type": "string",
                        "description": "MIME type of the image (e.g. \"image/jpeg\", \"image/png\"). Default \"image/jpeg\"."
                      }
                    },
                    "required": [
                      "model",
                      "prompt",
                      "imageBase64"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_count_tokens": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "count_tokens",
        "operationId": "gemini_count_tokens",
        "description": "Count how many tokens a prompt would consume with a given Gemini model. Useful for prompt-budgeting before a generate call.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_count_tokens\",\"arguments\":{\"model\":\"<string>\",\"prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Model ID, e.g. \"gemini-2.5-flash\"."
                      },
                      "prompt": {
                        "type": "string",
                        "description": "The prompt text to count."
                      }
                    },
                    "required": [
                      "model",
                      "prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_embed_content": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "embed_content",
        "operationId": "gemini_embed_content",
        "description": "Generate an embedding vector for a single piece of text using a Gemini embedding model. Recommended model: \"text-embedding-004\". Optional taskType steers embeddings (e.g. \"RETRIEVAL_DOCUMENT\", \"RETRIEVAL_QUERY\", \"SEMANTIC_SIMILARITY\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_embed_content\",\"arguments\":{\"model\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Embedding model ID, typically \"text-embedding-004\"."
                      },
                      "text": {
                        "type": "string",
                        "description": "Text to embed."
                      },
                      "taskType": {
                        "type": "string",
                        "description": "Optional. One of RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, SEMANTIC_SIMILARITY, CLASSIFICATION, CLUSTERING, QUESTION_ANSWERING, FACT_VERIFICATION."
                      }
                    },
                    "required": [
                      "model",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_batch_embed_contents": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "batch_embed_contents",
        "operationId": "gemini_batch_embed_contents",
        "description": "Generate embedding vectors for many texts in one call. Recommended model: \"text-embedding-004\". More efficient than calling embed_content in a loop.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_batch_embed_contents\",\"arguments\":{\"model\":\"<string>\",\"texts\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Embedding model ID, typically \"text-embedding-004\"."
                      },
                      "texts": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of texts to embed."
                      }
                    },
                    "required": [
                      "model",
                      "texts"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gemini_stream_generate_content": {
      "post": {
        "tags": [
          "gemini"
        ],
        "summary": "stream_generate_content",
        "operationId": "gemini_stream_generate_content",
        "description": "Streaming generation via streamGenerateContent. We gather ALL stream chunks server-side and return them concatenated (we're not streaming over MCP). Response includes raw \"chunks\" array plus a top-level \"text\" field with the full reply joined.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gemini_stream_generate_content\",\"arguments\":{\"model\":\"<string>\",\"prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Model ID, e.g. \"gemini-2.5-flash\"."
                      },
                      "prompt": {
                        "type": "string",
                        "description": "Prompt text."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Sampling temperature. Optional."
                      },
                      "maxOutputTokens": {
                        "type": "number",
                        "description": "Max tokens to generate. Optional."
                      }
                    },
                    "required": [
                      "model",
                      "prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_create_form": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "create_form",
        "operationId": "gforms_create_form",
        "description": "Create a new Google Form with a given title (and optional document title).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_create_form\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Form title shown to respondents."
                      },
                      "documentTitle": {
                        "type": "string",
                        "description": "Optional Drive document title. Defaults to the form title."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_get_form": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "get_form",
        "operationId": "gforms_get_form",
        "description": "Get a Google Form by ID (returns form metadata, items, and settings).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_get_form\",\"arguments\":{\"formId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "formId": {
                        "type": "string",
                        "description": "The Google Forms form ID."
                      }
                    },
                    "required": [
                      "formId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_add_question": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "add_question",
        "operationId": "gforms_add_question",
        "description": "Add a question to a Google Form via batchUpdate. Supported question types: TEXT_SHORT, TEXT_PARAGRAPH, RADIO, CHECKBOX, DROPDOWN, LINEAR_SCALE, DATE, TIME.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_add_question\",\"arguments\":{\"formId\":\"<string>\",\"title\":\"<string>\",\"questionType\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "formId": {
                        "type": "string",
                        "description": "The form ID."
                      },
                      "title": {
                        "type": "string",
                        "description": "Question title shown to respondents."
                      },
                      "questionType": {
                        "type": "string",
                        "enum": [
                          "TEXT_SHORT",
                          "TEXT_PARAGRAPH",
                          "RADIO",
                          "CHECKBOX",
                          "DROPDOWN",
                          "LINEAR_SCALE",
                          "DATE",
                          "TIME"
                        ],
                        "description": "Question type."
                      },
                      "required": {
                        "type": "boolean",
                        "description": "Whether the question is required. Default false."
                      },
                      "options": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Option strings for RADIO, CHECKBOX, DROPDOWN. Ignored otherwise."
                      }
                    },
                    "required": [
                      "formId",
                      "title",
                      "questionType"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_update_form_info": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "update_form_info",
        "operationId": "gforms_update_form_info",
        "description": "Update a Google Form's title, description, and/or document title via batchUpdate.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_update_form_info\",\"arguments\":{\"formId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "formId": {
                        "type": "string",
                        "description": "The form ID."
                      },
                      "title": {
                        "type": "string",
                        "description": "New form title. Optional."
                      },
                      "description": {
                        "type": "string",
                        "description": "New form description. Optional."
                      },
                      "documentTitle": {
                        "type": "string",
                        "description": "New Drive document title. Optional."
                      }
                    },
                    "required": [
                      "formId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_delete_item": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "delete_item",
        "operationId": "gforms_delete_item",
        "description": "Delete an item (question) from a Google Form by its index location.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_delete_item\",\"arguments\":{\"formId\":\"<string>\",\"itemIndex\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "formId": {
                        "type": "string",
                        "description": "The form ID."
                      },
                      "itemIndex": {
                        "type": "number",
                        "description": "Zero-based index of the item to delete."
                      }
                    },
                    "required": [
                      "formId",
                      "itemIndex"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_list_responses": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "list_responses",
        "operationId": "gforms_list_responses",
        "description": "List responses submitted to a Google Form.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_list_responses\",\"arguments\":{\"formId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "formId": {
                        "type": "string",
                        "description": "The form ID."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Max responses to return. Optional."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token. Optional."
                      },
                      "filter": {
                        "type": "string",
                        "description": "Filter expression (e.g. timestamp-based filter like 'timestamp > \"2026-04-01T00:00:00Z\"'). Optional."
                      }
                    },
                    "required": [
                      "formId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_get_response": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "get_response",
        "operationId": "gforms_get_response",
        "description": "Get a single form response by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_get_response\",\"arguments\":{\"formId\":\"<string>\",\"responseId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "formId": {
                        "type": "string",
                        "description": "The form ID."
                      },
                      "responseId": {
                        "type": "string",
                        "description": "The response ID."
                      }
                    },
                    "required": [
                      "formId",
                      "responseId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gforms_set_quiz_settings": {
      "post": {
        "tags": [
          "gforms"
        ],
        "summary": "set_quiz_settings",
        "operationId": "gforms_set_quiz_settings",
        "description": "Convert a Google Form into a quiz (enables quiz grading features).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gforms_set_quiz_settings\",\"arguments\":{\"formId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "formId": {
                        "type": "string",
                        "description": "The form ID."
                      }
                    },
                    "required": [
                      "formId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_search_repos": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "search_repos",
        "operationId": "github_search_repos",
        "description": "Search GitHub repositories. Query supports qualifiers like \"language:typescript stars:>100 pushed:>2025-01-01\". See https://docs.github.com/en/search-github/searching-on-github/searching-for-repositories for full list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_search_repos\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Base search query."
                      },
                      "language": {
                        "type": "string",
                        "description": "Shorthand for adding \"language:X\" qualifier."
                      },
                      "min_stars": {
                        "type": "number",
                        "description": "Shorthand for \"stars:>=N\"."
                      },
                      "pushed_after": {
                        "type": "string",
                        "description": "Shorthand for \"pushed:>YYYY-MM-DD\"."
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "stars",
                          "forks",
                          "help-wanted-issues",
                          "updated"
                        ],
                        "description": "Sort field (default: best-match)."
                      },
                      "order": {
                        "type": "string",
                        "enum": [
                          "asc",
                          "desc"
                        ],
                        "description": "Sort order."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Results per page (default 30, max 100)."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number (default 1)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_list_issues": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "list_issues",
        "operationId": "github_list_issues",
        "description": "List issues for a GitHub repository with optional filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_list_issues\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner (user or org)."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "state": {
                        "type": "string",
                        "enum": [
                          "open",
                          "closed",
                          "all"
                        ],
                        "description": "Filter by state (default \"open\")."
                      },
                      "labels": {
                        "type": "string",
                        "description": "Comma-separated label names to filter by (e.g. \"bug,help wanted\")."
                      },
                      "assignee": {
                        "type": "string",
                        "description": "Username, \"*\" (any), or \"none\"."
                      },
                      "creator": {
                        "type": "string",
                        "description": "Filter by issue author username."
                      },
                      "milestone": {
                        "type": "string",
                        "description": "Milestone number, \"*\" (any), or \"none\"."
                      },
                      "since": {
                        "type": "string",
                        "description": "ISO 8601 timestamp; only issues updated at or after this time."
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "created",
                          "updated",
                          "comments"
                        ],
                        "description": "Sort field."
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "asc",
                          "desc"
                        ],
                        "description": "Sort direction (default desc)."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Results per page (default 30, max 100)."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number (default 1)."
                      }
                    },
                    "required": [
                      "owner",
                      "repo"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_create_issue": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "create_issue",
        "operationId": "github_create_issue",
        "description": "Create a new issue in a GitHub repository.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_create_issue\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "title": {
                        "type": "string",
                        "description": "Issue title."
                      },
                      "body": {
                        "type": "string",
                        "description": "Issue body / description."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_list_prs": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "list_prs",
        "operationId": "github_list_prs",
        "description": "List pull requests for a GitHub repository with optional filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_list_prs\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "state": {
                        "type": "string",
                        "enum": [
                          "open",
                          "closed",
                          "all"
                        ],
                        "description": "Filter by state (default \"open\")."
                      },
                      "head": {
                        "type": "string",
                        "description": "Filter by head branch (format: \"user:ref-name\" or \"ref-name\")."
                      },
                      "base": {
                        "type": "string",
                        "description": "Filter by base branch name."
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "created",
                          "updated",
                          "popularity",
                          "long-running"
                        ],
                        "description": "Sort field."
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "asc",
                          "desc"
                        ],
                        "description": "Sort direction."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Results per page (default 30, max 100)."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number (default 1)."
                      }
                    },
                    "required": [
                      "owner",
                      "repo"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_create_pr": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "create_pr",
        "operationId": "github_create_pr",
        "description": "Create a new pull request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_create_pr\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"title\":\"<string>\",\"head\":\"<string>\",\"base\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "title": {
                        "type": "string",
                        "description": "PR title."
                      },
                      "head": {
                        "type": "string",
                        "description": "The branch where changes are implemented (format: \"user:branch\" for cross-fork)."
                      },
                      "base": {
                        "type": "string",
                        "description": "The branch to merge into (e.g. \"main\")."
                      },
                      "body": {
                        "type": "string",
                        "description": "PR description (markdown)."
                      },
                      "draft": {
                        "type": "boolean",
                        "description": "Open as draft (default false)."
                      },
                      "maintainer_can_modify": {
                        "type": "boolean",
                        "description": "Allow maintainers to modify (default true)."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "title",
                      "head",
                      "base"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_update_pr": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "update_pr",
        "operationId": "github_update_pr",
        "description": "Update an existing pull request (title, body, state, base).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_update_pr\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"pull_number\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "pull_number": {
                        "type": "number",
                        "description": "PR number."
                      },
                      "title": {
                        "type": "string",
                        "description": "New title."
                      },
                      "body": {
                        "type": "string",
                        "description": "New body."
                      },
                      "state": {
                        "type": "string",
                        "enum": [
                          "open",
                          "closed"
                        ],
                        "description": "New state."
                      },
                      "base": {
                        "type": "string",
                        "description": "Change base branch."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "pull_number"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_merge_pr": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "merge_pr",
        "operationId": "github_merge_pr",
        "description": "Merge a pull request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_merge_pr\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"pull_number\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "pull_number": {
                        "type": "number",
                        "description": "PR number."
                      },
                      "commit_title": {
                        "type": "string",
                        "description": "Title for the merge commit."
                      },
                      "commit_message": {
                        "type": "string",
                        "description": "Merge commit message."
                      },
                      "merge_method": {
                        "type": "string",
                        "enum": [
                          "merge",
                          "squash",
                          "rebase"
                        ],
                        "description": "Merge method (default \"merge\")."
                      },
                      "sha": {
                        "type": "string",
                        "description": "If set, PR only merges if head matches this SHA."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "pull_number"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_update_comment": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "update_comment",
        "operationId": "github_update_comment",
        "description": "Update an existing issue or PR comment by comment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_update_comment\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"comment_id\":0,\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "comment_id": {
                        "type": "number",
                        "description": "The comment ID."
                      },
                      "body": {
                        "type": "string",
                        "description": "New comment body."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "comment_id",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_delete_comment": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "delete_comment",
        "operationId": "github_delete_comment",
        "description": "Delete an issue or PR comment by comment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_delete_comment\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"comment_id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "comment_id": {
                        "type": "number",
                        "description": "The comment ID."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "comment_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_get_issue": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "get_issue",
        "operationId": "github_get_issue",
        "description": "Get details of a specific GitHub issue by number.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_get_issue\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"issue_number\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "issue_number": {
                        "type": "number",
                        "description": "Issue number."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "issue_number"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_update_issue": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "update_issue",
        "operationId": "github_update_issue",
        "description": "Update an existing GitHub issue (title, body, state, labels, assignees).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_update_issue\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"issue_number\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "issue_number": {
                        "type": "number",
                        "description": "Issue number."
                      },
                      "title": {
                        "type": "string",
                        "description": "New title."
                      },
                      "body": {
                        "type": "string",
                        "description": "New body."
                      },
                      "state": {
                        "type": "string",
                        "enum": [
                          "open",
                          "closed"
                        ],
                        "description": "New state."
                      },
                      "labels": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Label names."
                      },
                      "assignees": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Assignee usernames."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "issue_number"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_add_issue_comment": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "add_issue_comment",
        "operationId": "github_add_issue_comment",
        "description": "Add a comment to a GitHub issue or pull request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_add_issue_comment\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"issue_number\":0,\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "issue_number": {
                        "type": "number",
                        "description": "Issue or PR number."
                      },
                      "body": {
                        "type": "string",
                        "description": "Comment body (markdown)."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "issue_number",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_list_repo_labels": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "list_repo_labels",
        "operationId": "github_list_repo_labels",
        "description": "List all labels for a GitHub repository.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_list_repo_labels\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      }
                    },
                    "required": [
                      "owner",
                      "repo"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_get_pr": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "get_pr",
        "operationId": "github_get_pr",
        "description": "Get details of a specific pull request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_get_pr\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\",\"pull_number\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "pull_number": {
                        "type": "number",
                        "description": "PR number."
                      }
                    },
                    "required": [
                      "owner",
                      "repo",
                      "pull_number"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=github_list_repo_commits": {
      "post": {
        "tags": [
          "github"
        ],
        "summary": "list_repo_commits",
        "operationId": "github_list_repo_commits",
        "description": "List recent commits for a repository.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"github_list_repo_commits\",\"arguments\":{\"owner\":\"<string>\",\"repo\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "owner": {
                        "type": "string",
                        "description": "Repository owner."
                      },
                      "repo": {
                        "type": "string",
                        "description": "Repository name."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Results per page (default 20, max 100)."
                      }
                    },
                    "required": [
                      "owner",
                      "repo"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gkeep_list_notes": {
      "post": {
        "tags": [
          "gkeep"
        ],
        "summary": "list_notes",
        "operationId": "gkeep_list_notes",
        "description": "List Google Keep notes for the authenticated user. Returns notes with title, body, attachments, and metadata. Keep API is read-only for end users (write access requires Workspace admin).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gkeep_list_notes\",\"arguments\":{\"pageSize\":0,\"pageToken\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageSize": {
                        "type": "number",
                        "description": "Maximum number of notes to return (default 50, max 100)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token (nextPageToken) from a previous response."
                      },
                      "filter": {
                        "type": "string",
                        "description": "Optional server-side filter expression (Keep filter syntax). If the API rejects the filter, try client-side filtering via search_notes instead."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gkeep_get_note": {
      "post": {
        "tags": [
          "gkeep"
        ],
        "summary": "get_note",
        "operationId": "gkeep_get_note",
        "description": "Get a single Google Keep note by its resource name. Returns the full note including title, body sections, attachments, and permissions.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gkeep_get_note\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The note resource name in the form \"notes/{id}\"."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gkeep_search_notes": {
      "post": {
        "tags": [
          "gkeep"
        ],
        "summary": "search_notes",
        "operationId": "gkeep_search_notes",
        "description": "Search Google Keep notes by text. Attempts a server-side filter first (e.g. \"title:shopping\" or \"body:milk\"); if the API rejects the filter expression, falls back to a client-side substring scan over list_notes results.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gkeep_search_notes\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Text to search for. Prefix with \"title:\" or \"body:\" to scope the search; otherwise both fields are scanned."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Max notes to scan when falling back to client-side search (default 100)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gkeep_list_attachments": {
      "post": {
        "tags": [
          "gkeep"
        ],
        "summary": "list_attachments",
        "operationId": "gkeep_list_attachments",
        "description": "List attachments on a Google Keep note. Fetches the note and returns its attachments[] array (name, mimeType). To download attachment bytes, use the attachment resource name with an authorized media request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gkeep_list_attachments\",\"arguments\":{\"noteName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "noteName": {
                        "type": "string",
                        "description": "The note resource name in the form \"notes/{id}\"."
                      }
                    },
                    "required": [
                      "noteName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_search_emails": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "search_emails",
        "operationId": "gmail_search_emails",
        "description": "Search Gmail emails using a query string (Gmail search syntax: \"from:\", \"to:\", \"subject:\", \"after:\", \"before:\", \"has:attachment\", \"label:\", etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_search_emails\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Gmail search query (e.g. \"from:user@example.com after:2026/04/01\")."
                      },
                      "maxResults": {
                        "type": "number",
                        "description": "Maximum messages to return (default 10, max 500)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token from previous response (nextPageToken)."
                      },
                      "labelIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Restrict to messages with these label IDs (e.g. [\"INBOX\",\"UNREAD\"])."
                      },
                      "includeSpamTrash": {
                        "type": "boolean",
                        "description": "Include SPAM and TRASH folders (default false)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_read_email": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "read_email",
        "operationId": "gmail_read_email",
        "description": "Read a specific Gmail message by its ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_read_email\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_send_email": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "send_email",
        "operationId": "gmail_send_email",
        "description": "Send an email via Gmail.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_send_email\",\"arguments\":{\"to\":\"<string>\",\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "Recipient email address."
                      },
                      "subject": {
                        "type": "string",
                        "description": "Email subject line."
                      },
                      "body": {
                        "type": "string",
                        "description": "Plain-text email body."
                      }
                    },
                    "required": [
                      "to",
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_list_labels": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "list_labels",
        "operationId": "gmail_list_labels",
        "description": "List all Gmail labels for the authenticated user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_list_labels\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_list_attachments": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "list_attachments",
        "operationId": "gmail_list_attachments",
        "description": "List attachments for a specific Gmail message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_list_attachments\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_create_label": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "create_label",
        "operationId": "gmail_create_label",
        "description": "Create a new Gmail label with optional colors.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_create_label\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The label name."
                      },
                      "backgroundColor": {
                        "type": "string",
                        "description": "Background color hex (e.g. \"#16a765\"). Optional."
                      },
                      "textColor": {
                        "type": "string",
                        "description": "Text color hex (e.g. \"#ffffff\"). Optional."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_apply_label": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "apply_label",
        "operationId": "gmail_apply_label",
        "description": "Apply a label to a Gmail message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_apply_label\",\"arguments\":{\"messageId\":\"<string>\",\"labelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      },
                      "labelId": {
                        "type": "string",
                        "description": "The label ID to apply."
                      }
                    },
                    "required": [
                      "messageId",
                      "labelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_remove_label": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "remove_label",
        "operationId": "gmail_remove_label",
        "description": "Remove a label from a Gmail message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_remove_label\",\"arguments\":{\"messageId\":\"<string>\",\"labelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      },
                      "labelId": {
                        "type": "string",
                        "description": "The label ID to remove."
                      }
                    },
                    "required": [
                      "messageId",
                      "labelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_delete_label": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "delete_label",
        "operationId": "gmail_delete_label",
        "description": "Delete a Gmail label by ID. Messages previously labeled will keep their other labels.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_delete_label\",\"arguments\":{\"labelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "labelId": {
                        "type": "string",
                        "description": "The label ID to delete."
                      }
                    },
                    "required": [
                      "labelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_archive_email": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "archive_email",
        "operationId": "gmail_archive_email",
        "description": "Archive a Gmail message (removes INBOX label).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_archive_email\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_mark_read": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "mark_read",
        "operationId": "gmail_mark_read",
        "description": "Mark a Gmail message as read or unread.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_mark_read\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      },
                      "isRead": {
                        "type": "boolean",
                        "description": "true = read, false = unread. Default true."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_trash_email": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "trash_email",
        "operationId": "gmail_trash_email",
        "description": "Move a Gmail message to Trash (recoverable for 30 days).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_trash_email\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_bulk_trash": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "bulk_trash",
        "operationId": "gmail_bulk_trash",
        "description": "Move ALL Gmail messages matching a Gmail search query to Trash (recoverable for 30 days). Pages through results. Hard-capped at maxMessages (default 500, ceiling 5000) to prevent a misconfigured workflow trashing thousands of emails. Supports dryRun=true to preview without trashing. Use this from Forest workflows to bulk-clean inboxes by query (e.g. \"older_than:2y is:unread\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_bulk_trash\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Gmail search query (e.g. \"older_than:2y is:unread\", \"from:newsletter@x.com\")."
                      },
                      "maxMessages": {
                        "type": "number",
                        "description": "Maximum total messages to trash. Default 500. Ceiling 5000."
                      },
                      "dryRun": {
                        "type": "boolean",
                        "description": "If true, return matched count + sample without trashing. Default false. STRONGLY RECOMMENDED on first run."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_reply": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "reply",
        "operationId": "gmail_reply",
        "description": "Reply to a Gmail message. Keeps the thread intact by setting In-Reply-To and References headers. Example: {messageId:\"18f...\",body:\"Thanks, sounds good.\"}\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_reply\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID to reply to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Plain-text reply body."
                      },
                      "replyAll": {
                        "type": "boolean",
                        "description": "If true, also reply to all original recipients (To + Cc, excluding self). Default false."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_reply_all": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "reply_all",
        "operationId": "gmail_reply_all",
        "description": "Reply to a Gmail message and all original recipients (To + Cc, excluding self). Same as reply with replyAll=true.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_reply_all\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID to reply to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Plain-text reply body."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_forward": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "forward",
        "operationId": "gmail_forward",
        "description": "Forward a Gmail message to a new recipient. The thread ID is preserved; the subject is prefixed with \"Fwd:\" and the original body + headers are quoted. Example: {messageId:\"18f...\",to:\"richard@example.com\",body:\"FYI\"}\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_forward\",\"arguments\":{\"messageId\":\"<string>\",\"to\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID to forward."
                      },
                      "to": {
                        "type": "string",
                        "description": "Recipient email address for the forward."
                      },
                      "body": {
                        "type": "string",
                        "description": "Optional note to prepend above the forwarded content."
                      }
                    },
                    "required": [
                      "messageId",
                      "to"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_create_draft": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "create_draft",
        "operationId": "gmail_create_draft",
        "description": "Create a Gmail draft (not sent). The draft appears in Drafts and can be edited/sent later from the Gmail UI.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_create_draft\",\"arguments\":{\"to\":\"<string>\",\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "Recipient email address."
                      },
                      "subject": {
                        "type": "string",
                        "description": "Subject line."
                      },
                      "body": {
                        "type": "string",
                        "description": "Plain-text body."
                      }
                    },
                    "required": [
                      "to",
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_list_messages": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "list_messages",
        "operationId": "gmail_list_messages",
        "description": "List Gmail messages filtered only by label (no search query). Useful for browsing a folder/label such as INBOX, SENT, or a custom label ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_list_messages\",\"arguments\":{\"labelIds\":[],\"maxResults\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "labelIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Label IDs to filter by (e.g. [\"INBOX\"]). Omit for all mail."
                      },
                      "maxResults": {
                        "type": "number",
                        "description": "Max messages to return (default 25, max 500)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token (nextPageToken) from a previous call."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmail_download_attachment": {
      "post": {
        "tags": [
          "gmail"
        ],
        "summary": "download_attachment",
        "operationId": "gmail_download_attachment",
        "description": "Download a Gmail attachment by message ID + attachment ID. Returns the base64-encoded data in the \"data\" field along with size.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmail_download_attachment\",\"arguments\":{\"messageId\":\"<string>\",\"attachmentId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Gmail message ID."
                      },
                      "attachmentId": {
                        "type": "string",
                        "description": "The attachment ID (from list_attachments)."
                      }
                    },
                    "required": [
                      "messageId",
                      "attachmentId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmeet_create_space": {
      "post": {
        "tags": [
          "gmeet"
        ],
        "summary": "create_space",
        "operationId": "gmeet_create_space",
        "description": "Create a new Google Meet space (meeting room). Returns the space resource including the meeting URI and meeting code.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmeet_create_space\",\"arguments\":{\"accessType\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "accessType": {
                        "type": "string",
                        "enum": [
                          "OPEN",
                          "TRUSTED",
                          "RESTRICTED"
                        ],
                        "description": "Access type for the space. OPEN = anyone can join, TRUSTED = only signed-in users, RESTRICTED = only invited users. Optional."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmeet_get_space": {
      "post": {
        "tags": [
          "gmeet"
        ],
        "summary": "get_space",
        "operationId": "gmeet_get_space",
        "description": "Get a Google Meet space by its resource name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmeet_get_space\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The space resource name in the form \"spaces/{spaceId}\"."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmeet_end_active_conference": {
      "post": {
        "tags": [
          "gmeet"
        ],
        "summary": "end_active_conference",
        "operationId": "gmeet_end_active_conference",
        "description": "End any active conference happening in the given Google Meet space. If no conference is active, this returns an error.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmeet_end_active_conference\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The space resource name in the form \"spaces/{spaceId}\"."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmeet_list_conference_records": {
      "post": {
        "tags": [
          "gmeet"
        ],
        "summary": "list_conference_records",
        "operationId": "gmeet_list_conference_records",
        "description": "List past Google Meet conference records (historical meetings that have ended).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmeet_list_conference_records\",\"arguments\":{\"filter\":\"<string>\",\"pageSize\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "filter": {
                        "type": "string",
                        "description": "Filter expression (e.g. 'space.name=\"spaces/{id}\"' or time-based filters). Optional."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Maximum number of records to return. Optional."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmeet_get_conference_record": {
      "post": {
        "tags": [
          "gmeet"
        ],
        "summary": "get_conference_record",
        "operationId": "gmeet_get_conference_record",
        "description": "Get a specific Google Meet conference record by resource name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmeet_get_conference_record\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The conference record resource name \"conferenceRecords/{id}\"."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gmeet_list_participants": {
      "post": {
        "tags": [
          "gmeet"
        ],
        "summary": "list_participants",
        "operationId": "gmeet_list_participants",
        "description": "List participants for a given Google Meet conference record.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gmeet_list_participants\",\"arguments\":{\"conferenceRecordName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "conferenceRecordName": {
                        "type": "string",
                        "description": "The conference record resource name \"conferenceRecords/{id}\"."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Maximum number of participants to return. Optional."
                      }
                    },
                    "required": [
                      "conferenceRecordName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_list_campaigns": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_list_campaigns",
        "operationId": "google-ads_gads_list_campaigns",
        "description": "List Google Ads campaigns in the connected customer account. Returns resource name, name, status, advertising channel type.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_list_campaigns\",\"arguments\":{\"customerId\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "customerId": {
                        "type": "string",
                        "description": "Override customer id. Defaults to creds.customerId."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Default 50, max 500."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_get_campaign": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_get_campaign",
        "operationId": "google-ads_gads_get_campaign",
        "description": "Get a Google Ads campaign by resource name (customers/X/campaigns/Y).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_get_campaign\",\"arguments\":{\"resourceName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "resourceName": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "resourceName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_pause_campaign": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_pause_campaign",
        "operationId": "google-ads_gads_pause_campaign",
        "description": "Pause a Google Ads campaign by resource name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_pause_campaign\",\"arguments\":{\"resourceName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "resourceName": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "resourceName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_resume_campaign": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_resume_campaign",
        "operationId": "google-ads_gads_resume_campaign",
        "description": "Resume (re-enable) a paused Google Ads campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_resume_campaign\",\"arguments\":{\"resourceName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "resourceName": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "resourceName"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_campaign_performance": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_campaign_performance",
        "operationId": "google-ads_gads_campaign_performance",
        "description": "Performance metrics (impressions, clicks, cost, conversions, ctr) for all campaigns over a date range.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_campaign_performance\",\"arguments\":{\"customerId\":\"<string>\",\"daysBack\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "customerId": {
                        "type": "string"
                      },
                      "daysBack": {
                        "type": "number",
                        "description": "Days back from today. Default 7, max 90."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_post_campaign": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_post_campaign",
        "operationId": "google-ads_gads_post_campaign",
        "description": "Publish a CampaignChannel with channel=GOOGLE_ADS. Content payload: { resourceName, action: \"pause\"|\"resume\" } — updates the CampaignChannel with the operation result.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_post_campaign\",\"arguments\":{\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channelId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_list_accessible_customers": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_list_accessible_customers",
        "operationId": "google-ads_gads_list_accessible_customers",
        "description": "List all Google Ads customer IDs accessible by the current OAuth token. Returns resource names like \"customers/1234567890\". Use this to discover which customer IDs to pass to other tools when the user has access to multiple accounts (MCC managers).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_list_accessible_customers\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_keyword_ideas": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_keyword_ideas",
        "operationId": "google-ads_gads_keyword_ideas",
        "description": "Get keyword ideas + monthly search volume from the Google Ads Keyword Planner. Input either keywordSeed (array of seed terms) or urlSeed (a landing page URL to extract terms from). Returns ideas with avgMonthlySearches, competition, low/high CPC bid range. Free, no Ads spend required, but needs a customer ID with Keyword Planner access.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_keyword_ideas\",\"arguments\":{\"customerId\":\"<string>\",\"keywordSeed\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "customerId": {
                        "type": "string",
                        "description": "Override creds.customerId. Without dashes, e.g. \"1234567890\"."
                      },
                      "keywordSeed": {
                        "type": "array",
                        "description": "Seed keywords (e.g. [\"ichra\", \"individual coverage hra\"]). Provide this OR urlSeed.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "urlSeed": {
                        "type": "string",
                        "description": "A landing page URL — Ads will extract themes from it. Provide this OR keywordSeed."
                      },
                      "includeAdultKeywords": {
                        "type": "boolean",
                        "description": "Default false."
                      },
                      "geoTargetConstants": {
                        "type": "array",
                        "description": "Geo IDs (e.g. [\"geoTargetConstants/2840\"] for US). Default [\"geoTargetConstants/2840\"].",
                        "items": {
                          "type": "string"
                        }
                      },
                      "language": {
                        "type": "string",
                        "description": "Language ID. Default \"languageConstants/1000\" (English)."
                      },
                      "keywordPlanNetwork": {
                        "type": "string",
                        "description": "\"GOOGLE_SEARCH\" or \"GOOGLE_SEARCH_AND_PARTNERS\" (default)."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Max results per page. Default 200, max 10000."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=google-ads_gads_keyword_historical_metrics": {
      "post": {
        "tags": [
          "google-ads"
        ],
        "summary": "gads_keyword_historical_metrics",
        "operationId": "google-ads_gads_keyword_historical_metrics",
        "description": "Get 12-month historical search volume + competition for a specific list of keywords. Use this when you already know the keywords (e.g. from gads_keyword_ideas or your existing target list) and want their volume trend. Returns avgMonthlySearches + monthlySearchVolumes[].\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"google-ads_gads_keyword_historical_metrics\",\"arguments\":{\"keywords\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "customerId": {
                        "type": "string",
                        "description": "Override creds.customerId."
                      },
                      "keywords": {
                        "type": "array",
                        "description": "Keywords to look up (e.g. [\"ichra\", \"self-funded health plan\"]).",
                        "items": {
                          "type": "string"
                        }
                      },
                      "geoTargetConstants": {
                        "type": "array",
                        "description": "Geo IDs. Default [\"geoTargetConstants/2840\"] (US).",
                        "items": {
                          "type": "string"
                        }
                      },
                      "language": {
                        "type": "string",
                        "description": "Language ID. Default \"languageConstants/1000\" (English)."
                      },
                      "keywordPlanNetwork": {
                        "type": "string",
                        "description": "\"GOOGLE_SEARCH\" or \"GOOGLE_SEARCH_AND_PARTNERS\" (default)."
                      },
                      "includeAdultKeywords": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "keywords"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_list_media_items": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "list_media_items",
        "operationId": "gphotos_list_media_items",
        "description": "List all media items (photos and videos) in the authenticated user's Google Photos library, newest first.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_list_media_items\",\"arguments\":{\"pageSize\":0,\"pageToken\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageSize": {
                        "type": "number",
                        "description": "Maximum number of media items to return (default 25, max 100)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token (nextPageToken) from a previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_get_media_item": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "get_media_item",
        "operationId": "gphotos_get_media_item",
        "description": "Get a single Google Photos media item by ID. Returns metadata including baseUrl (short-lived), mimeType, mediaMetadata, filename.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_get_media_item\",\"arguments\":{\"mediaItemId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "mediaItemId": {
                        "type": "string",
                        "description": "The media item ID."
                      }
                    },
                    "required": [
                      "mediaItemId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_search_media_items": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "search_media_items",
        "operationId": "gphotos_search_media_items",
        "description": "Search Google Photos media items by album and/or filters. Filters support dateFilter (ranges/dates), contentFilter (categories like PEOPLE, LANDSCAPES, etc.), mediaTypeFilter (PHOTO/VIDEO), featureFilter (FAVORITES), and includeArchivedMedia. An albumId and filters are mutually exclusive per API.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_search_media_items\",\"arguments\":{\"albumId\":\"<string>\",\"filters\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "albumId": {
                        "type": "string",
                        "description": "Limit results to media in this album. Cannot be combined with filters."
                      },
                      "filters": {
                        "type": "object",
                        "description": "Filter object. Example: {\"mediaTypeFilter\":{\"mediaTypes\":[\"PHOTO\"]}, \"contentFilter\":{\"includedContentCategories\":[\"PEOPLE\"]}, \"dateFilter\":{\"ranges\":[{\"startDate\":{\"year\":2026,\"month\":1,\"day\":1},\"endDate\":{\"year\":2026,\"month\":12,\"day\":31}}]}}."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Maximum items per page (default 25, max 100)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token (nextPageToken) from a previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_list_albums": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "list_albums",
        "operationId": "gphotos_list_albums",
        "description": "List all albums owned by the authenticated user. Shared albums appear in list_shared_albums-style endpoints (not exposed here — search_media_items with albumId works for shared IDs you already have).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_list_albums\",\"arguments\":{\"pageSize\":0,\"pageToken\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageSize": {
                        "type": "number",
                        "description": "Maximum albums to return (default 20, max 50)."
                      },
                      "pageToken": {
                        "type": "string",
                        "description": "Pagination token (nextPageToken) from a previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_get_album": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "get_album",
        "operationId": "gphotos_get_album",
        "description": "Get a single Google Photos album by ID. Returns title, productUrl, mediaItemsCount, coverPhotoBaseUrl.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_get_album\",\"arguments\":{\"albumId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "albumId": {
                        "type": "string",
                        "description": "The album ID."
                      }
                    },
                    "required": [
                      "albumId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_create_album": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "create_album",
        "operationId": "gphotos_create_album",
        "description": "Create a new Google Photos album with the given title. The authenticated user becomes the owner. Newly created albums are empty — add media via add_media_to_album.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_create_album\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Title for the new album."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_add_media_to_album": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "add_media_to_album",
        "operationId": "gphotos_add_media_to_album",
        "description": "Add up to 50 media items to an album. The album must be owned by the authenticated user OR shared with them with media add permission. Media items must already exist in the caller's library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_add_media_to_album\",\"arguments\":{\"albumId\":\"<string>\",\"mediaItemIds\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "albumId": {
                        "type": "string",
                        "description": "The album ID."
                      },
                      "mediaItemIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of media item IDs to add (max 50 per request)."
                      }
                    },
                    "required": [
                      "albumId",
                      "mediaItemIds"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_remove_media_from_album": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "remove_media_from_album",
        "operationId": "gphotos_remove_media_from_album",
        "description": "Remove up to 50 media items from an album. Album must be owned by the authenticated user. The media items themselves remain in the library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_remove_media_from_album\",\"arguments\":{\"albumId\":\"<string>\",\"mediaItemIds\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "albumId": {
                        "type": "string",
                        "description": "The album ID."
                      },
                      "mediaItemIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of media item IDs to remove (max 50 per request)."
                      }
                    },
                    "required": [
                      "albumId",
                      "mediaItemIds"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_share_album": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "share_album",
        "operationId": "gphotos_share_album",
        "description": "Mark an album as shared and get a shareable link. Optionally set sharedAlbumOptions ({isCollaborative, isCommentable}). Only works on albums owned by the authenticated user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_share_album\",\"arguments\":{\"albumId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "albumId": {
                        "type": "string",
                        "description": "The album ID to share."
                      },
                      "sharedAlbumOptions": {
                        "type": "object",
                        "description": "Optional share options, e.g. {\"isCollaborative\":true,\"isCommentable\":true}. Defaults: both false."
                      }
                    },
                    "required": [
                      "albumId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gphotos_unshare_album": {
      "post": {
        "tags": [
          "gphotos"
        ],
        "summary": "unshare_album",
        "operationId": "gphotos_unshare_album",
        "description": "Unshare a previously shared album. Any collaborators lose access and the share link is invalidated. Only works on albums owned by the authenticated user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gphotos_unshare_album\",\"arguments\":{\"albumId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "albumId": {
                        "type": "string",
                        "description": "The album ID to unshare."
                      }
                    },
                    "required": [
                      "albumId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=grok_ask": {
      "post": {
        "tags": [
          "grok"
        ],
        "summary": "ask",
        "operationId": "grok_ask",
        "description": "Ask Grok a question. Single-turn convenience wrapper over /chat/completions. Default model \"grok-4\" (current flagship).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"grok_ask\",\"arguments\":{\"question\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "question": {
                        "type": "string",
                        "description": "The question."
                      },
                      "model": {
                        "type": "string",
                        "description": "Grok model. Default \"grok-4\" (flagship)."
                      },
                      "system": {
                        "type": "string",
                        "description": "Optional system prompt."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max output tokens. Default 1024."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Temperature (0-2). Default 1.0."
                      }
                    },
                    "required": [
                      "question"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=grok_chat_completion": {
      "post": {
        "tags": [
          "grok"
        ],
        "summary": "chat_completion",
        "operationId": "grok_chat_completion",
        "description": "Raw Grok /chat/completions call. OpenAI-compatible. Multi-turn. Pass your own messages array and optional system prompt.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"grok_chat_completion\",\"arguments\":{\"model\":\"<string>\",\"messages\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Grok model name."
                      },
                      "messages": {
                        "type": "array",
                        "description": "OpenAI message format: [{role: \"system\"|\"user\"|\"assistant\", content: \"...\"}]."
                      },
                      "system": {
                        "type": "string",
                        "description": "Optional system prompt — prepended as a system message if set."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max output tokens."
                      },
                      "temperature": {
                        "type": "number"
                      },
                      "top_p": {
                        "type": "number"
                      },
                      "stream": {
                        "type": "boolean",
                        "description": "Stream responses. Default false."
                      }
                    },
                    "required": [
                      "model",
                      "messages"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=grok_brand_visibility_check": {
      "post": {
        "tags": [
          "grok"
        ],
        "summary": "brand_visibility_check",
        "operationId": "grok_brand_visibility_check",
        "description": "AEO helper — asks Grok a set of comparison questions and reports whether the target brand is mentioned. Same shape as anthropic/openai/perplexity equivalents — run same prompt pack across all engines for unified AEO tracking. Grok is the 3rd major AI answer engine.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"grok_brand_visibility_check\",\"arguments\":{\"brand\":\"<string>\",\"questions\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "brand": {
                        "type": "string",
                        "description": "Brand name to check for."
                      },
                      "questions": {
                        "type": "array",
                        "description": "Comparison prompts."
                      },
                      "model": {
                        "type": "string",
                        "description": "Grok model. Default \"grok-4\"."
                      }
                    },
                    "required": [
                      "brand",
                      "questions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=grok_live_search": {
      "post": {
        "tags": [
          "grok"
        ],
        "summary": "live_search",
        "operationId": "grok_live_search",
        "description": "Grok Live Search — /chat/completions with search_parameters.mode=\"on\". Returns a current-web answer with citations. Use for \"what's happening today\" questions, breaking news, real-time data.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"grok_live_search\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "The search query / question."
                      },
                      "model": {
                        "type": "string",
                        "description": "Grok model. Default \"grok-4\"."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max output tokens. Default 1024."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=grok_list_models": {
      "post": {
        "tags": [
          "grok"
        ],
        "summary": "list_models",
        "operationId": "grok_list_models",
        "description": "List available Grok models with their IDs.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"grok_list_models\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_list_sites": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "list_sites",
        "operationId": "gsc_list_sites",
        "description": "List all sites (verified properties) the authenticated user has access to in Google Search Console. Returns each site URL and the user's permission level.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_list_sites\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_query_search_analytics": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "query_search_analytics",
        "operationId": "gsc_query_search_analytics",
        "description": "Run a Search Analytics query against a GSC property. Returns rows with keys (dimensions) and metrics (clicks, impressions, ctr, position). Use for keyword rank tracking, top queries, top pages, device breakdowns.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_query_search_analytics\",\"arguments\":{\"siteUrl\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteUrl": {
                        "type": "string",
                        "description": "GSC property URL as registered (e.g. \"https://example.com/\" or \"sc-domain:example.com\")."
                      },
                      "startDate": {
                        "type": "string",
                        "description": "Start date YYYY-MM-DD. Default 28 days ago."
                      },
                      "endDate": {
                        "type": "string",
                        "description": "End date YYYY-MM-DD. Default today."
                      },
                      "dimensions": {
                        "type": "array",
                        "description": "Dimensions to group by. Any of: \"query\", \"page\", \"country\", \"device\", \"searchAppearance\", \"date\".",
                        "items": {
                          "type": "string"
                        }
                      },
                      "type": {
                        "type": "string",
                        "description": "Search type: \"web\" (default), \"image\", \"video\", \"news\", \"discover\", \"googleNews\"."
                      },
                      "dimensionFilterGroups": {
                        "type": "array",
                        "description": "Optional filter groups, each with filters[] of {dimension,operator,expression}.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "aggregationType": {
                        "type": "string",
                        "description": "\"auto\" (default), \"byProperty\", \"byPage\"."
                      },
                      "rowLimit": {
                        "type": "number",
                        "description": "Max rows returned. Default 1000, max 25000."
                      },
                      "startRow": {
                        "type": "number",
                        "description": "Row offset for pagination. Default 0."
                      }
                    },
                    "required": [
                      "siteUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_top_queries": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "top_queries",
        "operationId": "gsc_top_queries",
        "description": "Convenience: return the top search queries for a site by clicks over the last 28 days (or custom range). Returns up to \"limit\" rows with query, clicks, impressions, ctr, position.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_top_queries\",\"arguments\":{\"siteUrl\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteUrl": {
                        "type": "string",
                        "description": "GSC property URL."
                      },
                      "startDate": {
                        "type": "string",
                        "description": "YYYY-MM-DD. Default 28 days ago."
                      },
                      "endDate": {
                        "type": "string",
                        "description": "YYYY-MM-DD. Default today."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max rows. Default 25."
                      }
                    },
                    "required": [
                      "siteUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_top_pages": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "top_pages",
        "operationId": "gsc_top_pages",
        "description": "Convenience: return the top landing pages for a site by clicks over the last 28 days (or custom range).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_top_pages\",\"arguments\":{\"siteUrl\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteUrl": {
                        "type": "string",
                        "description": "GSC property URL."
                      },
                      "startDate": {
                        "type": "string",
                        "description": "YYYY-MM-DD. Default 28 days ago."
                      },
                      "endDate": {
                        "type": "string",
                        "description": "YYYY-MM-DD. Default today."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max rows. Default 25."
                      }
                    },
                    "required": [
                      "siteUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_list_sitemaps": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "list_sitemaps",
        "operationId": "gsc_list_sitemaps",
        "description": "List all sitemaps registered for a given GSC property.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_list_sitemaps\",\"arguments\":{\"siteUrl\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteUrl": {
                        "type": "string",
                        "description": "GSC property URL."
                      }
                    },
                    "required": [
                      "siteUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_get_sitemap": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "get_sitemap",
        "operationId": "gsc_get_sitemap",
        "description": "Get a specific sitemap's status and contents for a GSC property.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_get_sitemap\",\"arguments\":{\"siteUrl\":\"<string>\",\"feedpath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteUrl": {
                        "type": "string",
                        "description": "GSC property URL."
                      },
                      "feedpath": {
                        "type": "string",
                        "description": "Sitemap URL (e.g. \"https://example.com/sitemap.xml\")."
                      }
                    },
                    "required": [
                      "siteUrl",
                      "feedpath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_inspect_url": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "inspect_url",
        "operationId": "gsc_inspect_url",
        "description": "Run a URL Inspection against a GSC property. Returns indexability status, canonical URL, last crawl, mobile usability, rich-result status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_inspect_url\",\"arguments\":{\"siteUrl\":\"<string>\",\"inspectionUrl\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteUrl": {
                        "type": "string",
                        "description": "GSC property URL (must match the inspectionUrl domain)."
                      },
                      "inspectionUrl": {
                        "type": "string",
                        "description": "Full URL to inspect."
                      },
                      "languageCode": {
                        "type": "string",
                        "description": "BCP-47 language code, e.g. \"en-US\". Optional."
                      }
                    },
                    "required": [
                      "siteUrl",
                      "inspectionUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsc_submit_sitemap": {
      "post": {
        "tags": [
          "gsc"
        ],
        "summary": "submit_sitemap",
        "operationId": "gsc_submit_sitemap",
        "description": "Submit a sitemap to Google Search Console for the given property. Use after publishing a new sitemap.xml or updating one. Requires the writable webmasters scope — if the OAuth token was granted only the readonly scope, the user must reconnect Google to pick up the new permission. Returns nothing on success (Google responds 204 No Content).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsc_submit_sitemap\",\"arguments\":{\"siteUrl\":\"<string>\",\"feedpath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteUrl": {
                        "type": "string",
                        "description": "GSC property URL (e.g. \"https://example.com/\" or \"sc-domain:example.com\")."
                      },
                      "feedpath": {
                        "type": "string",
                        "description": "Full sitemap URL to submit (e.g. \"https://example.com/sitemap.xml\")."
                      }
                    },
                    "required": [
                      "siteUrl",
                      "feedpath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsearch_web_search": {
      "post": {
        "tags": [
          "gsearch"
        ],
        "summary": "web_search",
        "operationId": "gsearch_web_search",
        "description": "Perform a Google Custom Search web query. Returns items[] with title, link, snippet, and display URL. Max 10 results per call; use \"start\" to paginate.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsearch_web_search\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search query string."
                      },
                      "num": {
                        "type": "number",
                        "description": "Number of results to return (1-10). Default 10."
                      },
                      "start": {
                        "type": "number",
                        "description": "Index of the first result (for pagination). Default 1."
                      },
                      "siteSearch": {
                        "type": "string",
                        "description": "Restrict results to a specific site (e.g. \"example.com\")."
                      },
                      "dateRestrict": {
                        "type": "string",
                        "description": "Restrict results by date. Format: d<N> (past N days), w<N> (weeks), m<N> (months), y<N> (years). Example: \"d7\" for past 7 days."
                      },
                      "lr": {
                        "type": "string",
                        "description": "Restrict to documents written in a particular language (e.g. \"lang_en\")."
                      },
                      "safe": {
                        "type": "string",
                        "enum": [
                          "active",
                          "off"
                        ],
                        "description": "SafeSearch level. Default \"off\"."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsearch_image_search": {
      "post": {
        "tags": [
          "gsearch"
        ],
        "summary": "image_search",
        "operationId": "gsearch_image_search",
        "description": "Perform a Google Custom Search image query. Returns image-type items with link, image metadata, and thumbnails.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsearch_image_search\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Image search query string."
                      },
                      "num": {
                        "type": "number",
                        "description": "Number of results (1-10). Default 10."
                      },
                      "imgSize": {
                        "type": "string",
                        "enum": [
                          "huge",
                          "icon",
                          "large",
                          "medium",
                          "small",
                          "xlarge",
                          "xxlarge"
                        ],
                        "description": "Filter by image size."
                      },
                      "imgType": {
                        "type": "string",
                        "enum": [
                          "clipart",
                          "face",
                          "lineart",
                          "stock",
                          "photo",
                          "animated"
                        ],
                        "description": "Filter by image type."
                      },
                      "imgColorType": {
                        "type": "string",
                        "enum": [
                          "color",
                          "gray",
                          "mono",
                          "trans"
                        ],
                        "description": "Filter by color type (e.g. \"trans\" = transparent background)."
                      },
                      "safe": {
                        "type": "string",
                        "enum": [
                          "active",
                          "off"
                        ],
                        "description": "SafeSearch level. Default \"off\"."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsearch_search_within_site": {
      "post": {
        "tags": [
          "gsearch"
        ],
        "summary": "search_within_site",
        "operationId": "gsearch_search_within_site",
        "description": "Convenience wrapper: search only within a specific site (uses siteSearch + siteSearchFilter=i to include-only).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsearch_search_within_site\",\"arguments\":{\"query\":\"<string>\",\"site\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search query string."
                      },
                      "site": {
                        "type": "string",
                        "description": "Site to restrict the search to (e.g. \"docs.example.com\")."
                      },
                      "num": {
                        "type": "number",
                        "description": "Number of results (1-10). Default 10."
                      }
                    },
                    "required": [
                      "query",
                      "site"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsearch_get_search_engine_info": {
      "post": {
        "tags": [
          "gsearch"
        ],
        "summary": "get_search_engine_info",
        "operationId": "gsearch_get_search_engine_info",
        "description": "Return the configured Custom Search Engine ID (cx) and any additional metadata returned by a blank query. Useful for diagnostics and verifying configuration.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsearch_get_search_engine_info\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_create_spreadsheet": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "create_spreadsheet",
        "operationId": "gsheets_create_spreadsheet",
        "description": "Create a new Google Sheets spreadsheet with a title and optional list of initial sheets.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_create_spreadsheet\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Title of the new spreadsheet."
                      },
                      "sheets": {
                        "type": "array",
                        "description": "Optional initial sheet definitions.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "title": {
                              "type": "string",
                              "description": "Sheet tab title."
                            }
                          },
                          "required": [
                            "title"
                          ]
                        }
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_get_spreadsheet": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "get_spreadsheet",
        "operationId": "gsheets_get_spreadsheet",
        "description": "Retrieve a spreadsheet by id. Optionally include full grid data.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_get_spreadsheet\",\"arguments\":{\"spreadsheetId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "includeGridData": {
                        "type": "boolean",
                        "description": "Include cell values and formatting (default false)."
                      }
                    },
                    "required": [
                      "spreadsheetId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_get_values": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "get_values",
        "operationId": "gsheets_get_values",
        "description": "Get cell values from a range in A1 notation (e.g. \"Sheet1!A1:B10\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_get_values\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"range\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "range": {
                        "type": "string",
                        "description": "A1-notation range."
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "range"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_update_values": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "update_values",
        "operationId": "gsheets_update_values",
        "description": "Write a 2D array of values to a specific range. Defaults to USER_ENTERED (formulas/dates parsed).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_update_values\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"range\":\"<string>\",\"values\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "range": {
                        "type": "string",
                        "description": "A1-notation range."
                      },
                      "values": {
                        "type": "array",
                        "description": "2D array of cell values.",
                        "items": {
                          "type": "array",
                          "items": {}
                        }
                      },
                      "valueInputOption": {
                        "type": "string",
                        "description": "USER_ENTERED (default) or RAW.",
                        "enum": [
                          "USER_ENTERED",
                          "RAW"
                        ]
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "range",
                      "values"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_append_values": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "append_values",
        "operationId": "gsheets_append_values",
        "description": "Append rows to a table (Sheets finds the first empty row after the range).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_append_values\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"range\":\"<string>\",\"values\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "range": {
                        "type": "string",
                        "description": "A1-notation range indicating the table to append to."
                      },
                      "values": {
                        "type": "array",
                        "description": "2D array of cell values to append.",
                        "items": {
                          "type": "array",
                          "items": {}
                        }
                      },
                      "valueInputOption": {
                        "type": "string",
                        "description": "USER_ENTERED (default) or RAW.",
                        "enum": [
                          "USER_ENTERED",
                          "RAW"
                        ]
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "range",
                      "values"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_clear_values": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "clear_values",
        "operationId": "gsheets_clear_values",
        "description": "Clear values from a range (leaves formatting intact).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_clear_values\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"range\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "range": {
                        "type": "string",
                        "description": "A1-notation range to clear."
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "range"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_batch_get_values": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "batch_get_values",
        "operationId": "gsheets_batch_get_values",
        "description": "Fetch multiple ranges from a spreadsheet in a single call.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_batch_get_values\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"ranges\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "ranges": {
                        "type": "array",
                        "description": "Array of A1-notation ranges.",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "ranges"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_batch_update_values": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "batch_update_values",
        "operationId": "gsheets_batch_update_values",
        "description": "Write values to multiple ranges in a single call.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_batch_update_values\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"data\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "data": {
                        "type": "array",
                        "description": "Array of {range, values} entries.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "range": {
                              "type": "string",
                              "description": "A1-notation range."
                            },
                            "values": {
                              "type": "array",
                              "description": "2D array of cell values.",
                              "items": {
                                "type": "array",
                                "items": {}
                              }
                            }
                          },
                          "required": [
                            "range",
                            "values"
                          ]
                        }
                      },
                      "valueInputOption": {
                        "type": "string",
                        "description": "USER_ENTERED (default) or RAW.",
                        "enum": [
                          "USER_ENTERED",
                          "RAW"
                        ]
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "data"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_add_sheet": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "add_sheet",
        "operationId": "gsheets_add_sheet",
        "description": "Add a new sheet tab to an existing spreadsheet.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_add_sheet\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "title": {
                        "type": "string",
                        "description": "Title of the new sheet."
                      },
                      "rowCount": {
                        "type": "number",
                        "description": "Optional number of rows."
                      },
                      "columnCount": {
                        "type": "number",
                        "description": "Optional number of columns."
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_delete_sheet": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "delete_sheet",
        "operationId": "gsheets_delete_sheet",
        "description": "Delete a sheet tab by sheetId.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_delete_sheet\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"sheetId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "sheetId": {
                        "type": "number",
                        "description": "The numeric sheet ID (not the tab name)."
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "sheetId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_duplicate_sheet": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "duplicate_sheet",
        "operationId": "gsheets_duplicate_sheet",
        "description": "Duplicate a sheet tab. Optionally supply a new sheet name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_duplicate_sheet\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"sourceSheetId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "sourceSheetId": {
                        "type": "number",
                        "description": "The source sheet numeric ID."
                      },
                      "newSheetName": {
                        "type": "string",
                        "description": "Optional new sheet tab name."
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "sourceSheetId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_format_cells": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "format_cells",
        "operationId": "gsheets_format_cells",
        "description": "Apply formatting (bold, background color, number format) to a cell range on a sheet.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_format_cells\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"sheetId\":0,\"startRow\":0,\"endRow\":0,\"startCol\":0,\"endCol\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "sheetId": {
                        "type": "number",
                        "description": "Numeric sheet ID."
                      },
                      "startRow": {
                        "type": "number",
                        "description": "Start row (0-indexed, inclusive)."
                      },
                      "endRow": {
                        "type": "number",
                        "description": "End row (exclusive)."
                      },
                      "startCol": {
                        "type": "number",
                        "description": "Start column (0-indexed, inclusive)."
                      },
                      "endCol": {
                        "type": "number",
                        "description": "End column (exclusive)."
                      },
                      "bold": {
                        "type": "boolean",
                        "description": "Bold text."
                      },
                      "backgroundColor": {
                        "type": "string",
                        "description": "Hex background color."
                      },
                      "numberFormat": {
                        "type": "string",
                        "description": "Number format pattern (e.g. \"0.00\", \"$#,##0.00\", \"yyyy-mm-dd\")."
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "sheetId",
                      "startRow",
                      "endRow",
                      "startCol",
                      "endCol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_add_chart": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "add_chart",
        "operationId": "gsheets_add_chart",
        "description": "Add a basic chart (column/line/bar/pie/scatter) to a sheet from a data range.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_add_chart\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"sheetId\":0,\"title\":\"<string>\",\"chartType\":\"<string>\",\"dataRange\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "sheetId": {
                        "type": "number",
                        "description": "Sheet to host the chart."
                      },
                      "title": {
                        "type": "string",
                        "description": "Chart title."
                      },
                      "chartType": {
                        "type": "string",
                        "description": "Chart type.",
                        "enum": [
                          "COLUMN",
                          "BAR",
                          "LINE",
                          "AREA",
                          "SCATTER",
                          "COMBO"
                        ]
                      },
                      "dataRange": {
                        "type": "object",
                        "description": "Source data range (all 0-indexed).",
                        "properties": {
                          "startRow": {
                            "type": "number"
                          },
                          "endRow": {
                            "type": "number"
                          },
                          "startCol": {
                            "type": "number"
                          },
                          "endCol": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "startRow",
                          "endRow",
                          "startCol",
                          "endCol"
                        ]
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "sheetId",
                      "title",
                      "chartType",
                      "dataRange"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gsheets_protect_range": {
      "post": {
        "tags": [
          "gsheets"
        ],
        "summary": "protect_range",
        "operationId": "gsheets_protect_range",
        "description": "Add a protected range on a sheet to restrict edits.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gsheets_protect_range\",\"arguments\":{\"spreadsheetId\":\"<string>\",\"sheetId\":0,\"startRow\":0,\"endRow\":0,\"startCol\":0,\"endCol\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spreadsheetId": {
                        "type": "string",
                        "description": "The spreadsheet ID."
                      },
                      "sheetId": {
                        "type": "number",
                        "description": "Numeric sheet ID."
                      },
                      "startRow": {
                        "type": "number",
                        "description": "Start row (0-indexed, inclusive)."
                      },
                      "endRow": {
                        "type": "number",
                        "description": "End row (exclusive)."
                      },
                      "startCol": {
                        "type": "number",
                        "description": "Start column (0-indexed, inclusive)."
                      },
                      "endCol": {
                        "type": "number",
                        "description": "End column (exclusive)."
                      },
                      "description": {
                        "type": "string",
                        "description": "Optional description for the protection."
                      }
                    },
                    "required": [
                      "spreadsheetId",
                      "sheetId",
                      "startRow",
                      "endRow",
                      "startCol",
                      "endCol"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_create_presentation": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "create_presentation",
        "operationId": "gslides_create_presentation",
        "description": "Create a new Google Slides presentation with the given title.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_create_presentation\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Title of the new presentation."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_get_presentation": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "get_presentation",
        "operationId": "gslides_get_presentation",
        "description": "Retrieve a presentation by id (includes slides, layouts, masters).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_get_presentation\",\"arguments\":{\"presentationId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      }
                    },
                    "required": [
                      "presentationId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_get_slide": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "get_slide",
        "operationId": "gslides_get_slide",
        "description": "Retrieve a specific slide (page) by pageObjectId.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_get_slide\",\"arguments\":{\"presentationId\":\"<string>\",\"pageObjectId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      },
                      "pageObjectId": {
                        "type": "string",
                        "description": "The slide object ID."
                      }
                    },
                    "required": [
                      "presentationId",
                      "pageObjectId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_create_slide": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "create_slide",
        "operationId": "gslides_create_slide",
        "description": "Create a new slide. Optionally specify insertion index and layout predefinedLayout.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_create_slide\",\"arguments\":{\"presentationId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      },
                      "insertionIndex": {
                        "type": "number",
                        "description": "Index to insert the new slide at."
                      },
                      "layoutId": {
                        "type": "string",
                        "description": "Layout predefined name (BLANK, TITLE, TITLE_AND_BODY, SECTION_HEADER, TITLE_AND_TWO_COLUMNS, etc.). Default BLANK."
                      }
                    },
                    "required": [
                      "presentationId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_delete_slide": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "delete_slide",
        "operationId": "gslides_delete_slide",
        "description": "Delete a slide (page object) from the presentation.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_delete_slide\",\"arguments\":{\"presentationId\":\"<string>\",\"pageObjectId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      },
                      "pageObjectId": {
                        "type": "string",
                        "description": "Slide object ID to delete."
                      }
                    },
                    "required": [
                      "presentationId",
                      "pageObjectId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_insert_text_box": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "insert_text_box",
        "operationId": "gslides_insert_text_box",
        "description": "Create a TEXT_BOX shape on a slide and insert the given text.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_insert_text_box\",\"arguments\":{\"presentationId\":\"<string>\",\"pageObjectId\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      },
                      "pageObjectId": {
                        "type": "string",
                        "description": "Slide object ID to place the text box on."
                      },
                      "text": {
                        "type": "string",
                        "description": "Text to insert."
                      },
                      "x": {
                        "type": "number",
                        "description": "X (EMU) translate. Default 100000."
                      },
                      "y": {
                        "type": "number",
                        "description": "Y (EMU) translate. Default 100000."
                      },
                      "width": {
                        "type": "number",
                        "description": "Width (EMU). Default 3000000."
                      },
                      "height": {
                        "type": "number",
                        "description": "Height (EMU). Default 500000."
                      }
                    },
                    "required": [
                      "presentationId",
                      "pageObjectId",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_replace_text": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "replace_text",
        "operationId": "gslides_replace_text",
        "description": "Replace all occurrences of a search string across the whole presentation.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_replace_text\",\"arguments\":{\"presentationId\":\"<string>\",\"searchText\":\"<string>\",\"replaceText\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      },
                      "searchText": {
                        "type": "string",
                        "description": "Text to search for."
                      },
                      "replaceText": {
                        "type": "string",
                        "description": "Replacement text."
                      },
                      "matchCase": {
                        "type": "boolean",
                        "description": "Case-sensitive match (default false)."
                      }
                    },
                    "required": [
                      "presentationId",
                      "searchText",
                      "replaceText"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_insert_image": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "insert_image",
        "operationId": "gslides_insert_image",
        "description": "Create an image on a slide from a publicly accessible URL.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_insert_image\",\"arguments\":{\"presentationId\":\"<string>\",\"pageObjectId\":\"<string>\",\"imageUrl\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      },
                      "pageObjectId": {
                        "type": "string",
                        "description": "Slide object ID to place the image on."
                      },
                      "imageUrl": {
                        "type": "string",
                        "description": "Publicly accessible image URL."
                      },
                      "x": {
                        "type": "number",
                        "description": "X (EMU) translate. Default 100000."
                      },
                      "y": {
                        "type": "number",
                        "description": "Y (EMU) translate. Default 100000."
                      },
                      "width": {
                        "type": "number",
                        "description": "Width (EMU). Default 3000000."
                      },
                      "height": {
                        "type": "number",
                        "description": "Height (EMU). Default 3000000."
                      }
                    },
                    "required": [
                      "presentationId",
                      "pageObjectId",
                      "imageUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_duplicate_slide": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "duplicate_slide",
        "operationId": "gslides_duplicate_slide",
        "description": "Duplicate an existing slide.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_duplicate_slide\",\"arguments\":{\"presentationId\":\"<string>\",\"pageObjectId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "presentationId": {
                        "type": "string",
                        "description": "The presentation ID."
                      },
                      "pageObjectId": {
                        "type": "string",
                        "description": "Slide object ID to duplicate."
                      }
                    },
                    "required": [
                      "presentationId",
                      "pageObjectId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gslides_create_from_template": {
      "post": {
        "tags": [
          "gslides"
        ],
        "summary": "create_from_template",
        "operationId": "gslides_create_from_template",
        "description": "Copy a template presentation to a new file with new title, then do placeholder replacements.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gslides_create_from_template\",\"arguments\":{\"templatePresentationId\":\"<string>\",\"newTitle\":\"<string>\",\"replacements\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "templatePresentationId": {
                        "type": "string",
                        "description": "The source template presentation ID."
                      },
                      "newTitle": {
                        "type": "string",
                        "description": "Title for the new presentation."
                      },
                      "replacements": {
                        "type": "object",
                        "description": "Map of placeholder -> replacement value. Keys are searched literally.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "templatePresentationId",
                      "newTitle",
                      "replacements"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_list_tasklists": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "list_tasklists",
        "operationId": "gtasks_list_tasklists",
        "description": "List the authenticated user's Google Tasks task lists.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_list_tasklists\",\"arguments\":{\"maxResults\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "maxResults": {
                        "type": "number",
                        "description": "Maximum number of task lists to return (max 100). Optional."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_get_tasklist": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "get_tasklist",
        "operationId": "gtasks_get_tasklist",
        "description": "Get a single Google Tasks task list by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_get_tasklist\",\"arguments\":{\"tasklistId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID."
                      }
                    },
                    "required": [
                      "tasklistId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_create_tasklist": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "create_tasklist",
        "operationId": "gtasks_create_tasklist",
        "description": "Create a new Google Tasks task list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_create_tasklist\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Title for the new task list."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_delete_tasklist": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "delete_tasklist",
        "operationId": "gtasks_delete_tasklist",
        "description": "Delete a Google Tasks task list (and all tasks inside it).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_delete_tasklist\",\"arguments\":{\"tasklistId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID to delete."
                      }
                    },
                    "required": [
                      "tasklistId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_list_tasks": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "list_tasks",
        "operationId": "gtasks_list_tasks",
        "description": "List tasks within a Google Tasks task list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_list_tasks\",\"arguments\":{\"tasklistId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID."
                      },
                      "showCompleted": {
                        "type": "boolean",
                        "description": "Include completed tasks (default true)."
                      },
                      "showHidden": {
                        "type": "boolean",
                        "description": "Include hidden tasks (default false)."
                      },
                      "dueMin": {
                        "type": "string",
                        "description": "Lower bound for due date (RFC 3339 timestamp). Optional."
                      },
                      "dueMax": {
                        "type": "string",
                        "description": "Upper bound for due date (RFC 3339 timestamp). Optional."
                      }
                    },
                    "required": [
                      "tasklistId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_get_task": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "get_task",
        "operationId": "gtasks_get_task",
        "description": "Get a single task from a task list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_get_task\",\"arguments\":{\"tasklistId\":\"<string>\",\"taskId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID."
                      },
                      "taskId": {
                        "type": "string",
                        "description": "The task ID."
                      }
                    },
                    "required": [
                      "tasklistId",
                      "taskId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_create_task": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "create_task",
        "operationId": "gtasks_create_task",
        "description": "Create a new task in a Google Tasks task list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_create_task\",\"arguments\":{\"tasklistId\":\"<string>\",\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID."
                      },
                      "title": {
                        "type": "string",
                        "description": "Task title."
                      },
                      "notes": {
                        "type": "string",
                        "description": "Free-form notes for the task. Optional."
                      },
                      "due": {
                        "type": "string",
                        "description": "Due date as RFC 3339 timestamp (e.g. \"2026-05-01T00:00:00Z\"). Optional."
                      },
                      "parent": {
                        "type": "string",
                        "description": "Parent task ID for nesting as a subtask. Optional."
                      },
                      "previous": {
                        "type": "string",
                        "description": "Previous sibling task ID for ordering. Optional."
                      }
                    },
                    "required": [
                      "tasklistId",
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_update_task": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "update_task",
        "operationId": "gtasks_update_task",
        "description": "Update fields on an existing task.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_update_task\",\"arguments\":{\"tasklistId\":\"<string>\",\"taskId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID."
                      },
                      "taskId": {
                        "type": "string",
                        "description": "The task ID."
                      },
                      "title": {
                        "type": "string",
                        "description": "New title. Optional."
                      },
                      "notes": {
                        "type": "string",
                        "description": "New notes. Optional."
                      },
                      "due": {
                        "type": "string",
                        "description": "New due date (RFC 3339). Optional."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "needsAction",
                          "completed"
                        ],
                        "description": "New status. Optional."
                      }
                    },
                    "required": [
                      "tasklistId",
                      "taskId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_complete_task": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "complete_task",
        "operationId": "gtasks_complete_task",
        "description": "Mark a task as completed (sets status=completed and completed timestamp to now).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_complete_task\",\"arguments\":{\"tasklistId\":\"<string>\",\"taskId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID."
                      },
                      "taskId": {
                        "type": "string",
                        "description": "The task ID."
                      }
                    },
                    "required": [
                      "tasklistId",
                      "taskId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtasks_delete_task": {
      "post": {
        "tags": [
          "gtasks"
        ],
        "summary": "delete_task",
        "operationId": "gtasks_delete_task",
        "description": "Delete a task from a task list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtasks_delete_task\",\"arguments\":{\"tasklistId\":\"<string>\",\"taskId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tasklistId": {
                        "type": "string",
                        "description": "The task list ID."
                      },
                      "taskId": {
                        "type": "string",
                        "description": "The task ID."
                      }
                    },
                    "required": [
                      "tasklistId",
                      "taskId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtranslate_translate": {
      "post": {
        "tags": [
          "gtranslate"
        ],
        "summary": "translate",
        "operationId": "gtranslate_translate",
        "description": "Translate a single string from one language to another using Google Cloud Translation v2. Returns the translated text plus the detected source language when not specified.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtranslate_translate\",\"arguments\":{\"text\":\"<string>\",\"targetLanguage\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "description": "The text to translate."
                      },
                      "targetLanguage": {
                        "type": "string",
                        "description": "ISO-639-1 target language code (e.g. \"es\", \"fr\", \"ja\")."
                      },
                      "sourceLanguage": {
                        "type": "string",
                        "description": "Optional ISO-639-1 source language code. Omit to auto-detect."
                      },
                      "format": {
                        "type": "string",
                        "enum": [
                          "text",
                          "html"
                        ],
                        "description": "Format of the input text. Defaults to \"text\"."
                      }
                    },
                    "required": [
                      "text",
                      "targetLanguage"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtranslate_translate_batch": {
      "post": {
        "tags": [
          "gtranslate"
        ],
        "summary": "translate_batch",
        "operationId": "gtranslate_translate_batch",
        "description": "Translate multiple strings in a single call. Returns one translation per input string in the same order.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtranslate_translate_batch\",\"arguments\":{\"texts\":[],\"targetLanguage\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "texts": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of strings to translate."
                      },
                      "targetLanguage": {
                        "type": "string",
                        "description": "ISO-639-1 target language code (e.g. \"es\", \"fr\", \"ja\")."
                      },
                      "sourceLanguage": {
                        "type": "string",
                        "description": "Optional ISO-639-1 source language code. Omit to auto-detect per input."
                      },
                      "format": {
                        "type": "string",
                        "enum": [
                          "text",
                          "html"
                        ],
                        "description": "Format of the input text. Defaults to \"text\"."
                      }
                    },
                    "required": [
                      "texts",
                      "targetLanguage"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtranslate_detect_language": {
      "post": {
        "tags": [
          "gtranslate"
        ],
        "summary": "detect_language",
        "operationId": "gtranslate_detect_language",
        "description": "Detect the source language of a string. Returns the top detection with language code and confidence.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtranslate_detect_language\",\"arguments\":{\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "description": "The text to analyze."
                      }
                    },
                    "required": [
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=gtranslate_list_languages": {
      "post": {
        "tags": [
          "gtranslate"
        ],
        "summary": "list_languages",
        "operationId": "gtranslate_list_languages",
        "description": "List all language codes supported by the Google Translate API. Optionally include localized display names in a target language.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gtranslate_list_languages\",\"arguments\":{\"target\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "target": {
                        "type": "string",
                        "description": "Optional ISO-639-1 code; when provided, each language is returned with its display name localized to this language (e.g. target=\"en\" returns \"French\", \"Spanish\", etc.)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_search_contacts": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "search_contacts",
        "operationId": "hubspot_search_contacts",
        "description": "Search HubSpot contacts by free-text query OR structured filters. Pass `filterGroups` for precise filtering (e.g. by email, lifecyclestage, createdate). Pass `sorts` to order results. Pass `after` for pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_search_contacts\",\"arguments\":{\"query\":\"<string>\",\"filterGroups\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Free-text query (matches name, email, etc.). Optional if filterGroups is provided."
                      },
                      "filterGroups": {
                        "type": "array",
                        "description": "HubSpot structured filter. Array of filter groups (OR between groups, AND within). Each group: { filters: [{ propertyName, operator, value, values?, highValue? }] }. Operators: EQ, NEQ, GT, GTE, LT, LTE, BETWEEN, IN, NOT_IN, HAS_PROPERTY, NOT_HAS_PROPERTY, CONTAINS_TOKEN, NOT_CONTAINS_TOKEN.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "sorts": {
                        "type": "array",
                        "description": "Array of { propertyName, direction: \"ASCENDING\"|\"DESCENDING\" } sort specs.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Properties to return on each contact."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum results to return (default 10, max 100)."
                      },
                      "after": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_get_contact": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "get_contact",
        "operationId": "hubspot_get_contact",
        "description": "Get a HubSpot contact by its ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_get_contact\",\"arguments\":{\"contactId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contactId": {
                        "type": "string",
                        "description": "The contact ID."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "List of property names to return."
                      }
                    },
                    "required": [
                      "contactId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_contact": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_contact",
        "operationId": "hubspot_create_contact",
        "description": "Create a new HubSpot contact.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_contact\",\"arguments\":{\"email\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Contact email address."
                      },
                      "firstname": {
                        "type": "string",
                        "description": "First name."
                      },
                      "lastname": {
                        "type": "string",
                        "description": "Last name."
                      },
                      "phone": {
                        "type": "string",
                        "description": "Phone number."
                      }
                    },
                    "required": [
                      "email"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_deals": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_deals",
        "operationId": "hubspot_list_deals",
        "description": "List HubSpot deals with optional property selection.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_deals\",\"arguments\":{\"limit\":0,\"properties\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Maximum deals to return (default 10)."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Deal property names to include."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_deal": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_deal",
        "operationId": "hubspot_create_deal",
        "description": "Create a new HubSpot deal.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_deal\",\"arguments\":{\"dealname\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "dealname": {
                        "type": "string",
                        "description": "Name of the deal."
                      },
                      "amount": {
                        "type": "string",
                        "description": "Deal amount."
                      },
                      "dealstage": {
                        "type": "string",
                        "description": "Deal stage ID."
                      },
                      "pipeline": {
                        "type": "string",
                        "description": "Pipeline ID."
                      }
                    },
                    "required": [
                      "dealname"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_note": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_note",
        "operationId": "hubspot_create_note",
        "description": "Create a note in HubSpot, optionally associated with a contact.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_note\",\"arguments\":{\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "body": {
                        "type": "string",
                        "description": "Note body text."
                      },
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID to associate the note with."
                      }
                    },
                    "required": [
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_update_contact": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "update_contact",
        "operationId": "hubspot_update_contact",
        "description": "Update a HubSpot contact by ID. Pass any properties map to change fields (firstname, lastname, email, phone, company, jobtitle, lifecyclestage, hubspot_owner_id, address, city, state, zip, custom properties, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_update_contact\",\"arguments\":{\"contactId\":\"<string>\",\"properties\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contactId": {
                        "type": "string",
                        "description": "The contact ID to update."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Key-value map of properties to update. Example: { \"phone\": \"555-1234\", \"jobtitle\": \"VP Sales\" }.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "contactId",
                      "properties"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_update_deal": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "update_deal",
        "operationId": "hubspot_update_deal",
        "description": "Update a HubSpot deal by ID. Pass any properties map to change fields (dealname, amount, dealstage, pipeline, closedate, hubspot_owner_id, dealtype, description, hs_next_step, custom properties, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_update_deal\",\"arguments\":{\"dealId\":\"<string>\",\"properties\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "dealId": {
                        "type": "string",
                        "description": "The deal ID to update."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Key-value map of properties to update. Example: { \"amount\": \"25000\", \"dealstage\": \"closedwon\" }.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "dealId",
                      "properties"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_search_deals": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "search_deals",
        "operationId": "hubspot_search_deals",
        "description": "Search HubSpot deals by free-text query OR structured filters. Pass `filterGroups` for precise filtering (e.g. by dealstage, pipeline, amount, hubspot_owner_id, closedate). Pass `sorts` to order. Pass `after` for pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_search_deals\",\"arguments\":{\"query\":\"<string>\",\"filterGroups\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Free-text query to match against dealname. Optional if filterGroups is provided."
                      },
                      "filterGroups": {
                        "type": "array",
                        "description": "HubSpot structured filter. Array of filter groups (OR between groups, AND within). Each group: { filters: [{ propertyName, operator, value, values?, highValue? }] }. Example to exclude closed deals: [{ filters: [{ propertyName: \"dealstage\", operator: \"NOT_IN\", values: [\"closedwon\",\"closedlost\"] }] }].",
                        "items": {
                          "type": "object"
                        }
                      },
                      "sorts": {
                        "type": "array",
                        "description": "Array of { propertyName, direction: \"ASCENDING\"|\"DESCENDING\" } sort specs.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Properties to return on each deal."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum results (default 10, max 100)."
                      },
                      "after": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_pipelines": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_pipelines",
        "operationId": "hubspot_list_pipelines",
        "description": "List HubSpot pipelines with all their stages for a given object type (deals, tickets). Use this to resolve stage names → stage IDs before updating a deal.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_pipelines\",\"arguments\":{\"objectType\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "objectType": {
                        "type": "string",
                        "description": "Object type. Default: \"deals\". Other: \"tickets\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_owners": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_owners",
        "operationId": "hubspot_list_owners",
        "description": "List HubSpot owners (users that can be assigned to contacts and deals). Use this to resolve an owner name → owner ID before assigning a record.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_owners\",\"arguments\":{\"email\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Filter by exact email."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum results (default 100)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_properties": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_properties",
        "operationId": "hubspot_list_properties",
        "description": "List all defined properties for a HubSpot object type (contacts, deals, companies, tickets). Use this to discover custom properties and their internal names.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_properties\",\"arguments\":{\"objectType\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "objectType": {
                        "type": "string",
                        "description": "Object type: contacts, deals, companies, tickets."
                      }
                    },
                    "required": [
                      "objectType"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_get_deal": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "get_deal",
        "operationId": "hubspot_get_deal",
        "description": "Get a HubSpot deal by its ID with the specified properties.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_get_deal\",\"arguments\":{\"dealId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "dealId": {
                        "type": "string",
                        "description": "The deal ID."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "List of property names to return."
                      }
                    },
                    "required": [
                      "dealId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_search_companies": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "search_companies",
        "operationId": "hubspot_search_companies",
        "description": "Search HubSpot companies by free-text query OR structured filters. Pass `filterGroups` for precise filtering (e.g. by domain, industry, numberofemployees). Pass `sorts` to order. Pass `after` for pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_search_companies\",\"arguments\":{\"query\":\"<string>\",\"filterGroups\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Free-text query (company name or domain). Optional if filterGroups is provided."
                      },
                      "filterGroups": {
                        "type": "array",
                        "description": "HubSpot structured filter. Array of filter groups (OR between groups, AND within). Each group: { filters: [{ propertyName, operator, value, values?, highValue? }] }.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "sorts": {
                        "type": "array",
                        "description": "Array of { propertyName, direction: \"ASCENDING\"|\"DESCENDING\" } sort specs.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Properties to return on each company."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum results (default 10, max 100)."
                      },
                      "after": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_get_company": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "get_company",
        "operationId": "hubspot_get_company",
        "description": "Get a HubSpot company by its ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_get_company\",\"arguments\":{\"companyId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "companyId": {
                        "type": "string",
                        "description": "The company ID."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "List of property names to return."
                      }
                    },
                    "required": [
                      "companyId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_company": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_company",
        "operationId": "hubspot_create_company",
        "description": "Create a new HubSpot company. Pass any properties (name, domain, industry, phone, city, state, country, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_company\",\"arguments\":{\"name\":\"<string>\",\"domain\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Company name (recommended)."
                      },
                      "domain": {
                        "type": "string",
                        "description": "Primary domain (e.g. \"example.com\")."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Additional properties as key-value pairs. Merged with name + domain.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_update_company": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "update_company",
        "operationId": "hubspot_update_company",
        "description": "Update a HubSpot company by ID with a properties map.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_update_company\",\"arguments\":{\"companyId\":\"<string>\",\"properties\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "companyId": {
                        "type": "string",
                        "description": "The company ID."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Properties to update.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "companyId",
                      "properties"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_companies": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_companies",
        "operationId": "hubspot_list_companies",
        "description": "List HubSpot companies with optional property selection.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_companies\",\"arguments\":{\"limit\":0,\"properties\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 10)."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Company properties to include."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_association": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_association",
        "operationId": "hubspot_create_association",
        "description": "Create a default HubSpot association between two records. Supports contact↔deal, contact↔company, deal↔company, contact↔ticket, etc. Uses the HubSpot-defined default association type.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_association\",\"arguments\":{\"fromObjectType\":\"<string>\",\"fromId\":\"<string>\",\"toObjectType\":\"<string>\",\"toId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fromObjectType": {
                        "type": "string",
                        "description": "Source object type: contacts, companies, deals, tickets."
                      },
                      "fromId": {
                        "type": "string",
                        "description": "Source record ID."
                      },
                      "toObjectType": {
                        "type": "string",
                        "description": "Target object type: contacts, companies, deals, tickets."
                      },
                      "toId": {
                        "type": "string",
                        "description": "Target record ID."
                      }
                    },
                    "required": [
                      "fromObjectType",
                      "fromId",
                      "toObjectType",
                      "toId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_associations": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_associations",
        "operationId": "hubspot_list_associations",
        "description": "List all associations between a source record and a target object type. Example: get every deal attached to a given contact.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_associations\",\"arguments\":{\"fromObjectType\":\"<string>\",\"fromId\":\"<string>\",\"toObjectType\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fromObjectType": {
                        "type": "string",
                        "description": "Source object type."
                      },
                      "fromId": {
                        "type": "string",
                        "description": "Source record ID."
                      },
                      "toObjectType": {
                        "type": "string",
                        "description": "Target object type to list associations to."
                      }
                    },
                    "required": [
                      "fromObjectType",
                      "fromId",
                      "toObjectType"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_delete_association": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "delete_association",
        "operationId": "hubspot_delete_association",
        "description": "Delete a default association between two HubSpot records.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_delete_association\",\"arguments\":{\"fromObjectType\":\"<string>\",\"fromId\":\"<string>\",\"toObjectType\":\"<string>\",\"toId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fromObjectType": {
                        "type": "string",
                        "description": "Source object type."
                      },
                      "fromId": {
                        "type": "string",
                        "description": "Source record ID."
                      },
                      "toObjectType": {
                        "type": "string",
                        "description": "Target object type."
                      },
                      "toId": {
                        "type": "string",
                        "description": "Target record ID."
                      }
                    },
                    "required": [
                      "fromObjectType",
                      "fromId",
                      "toObjectType",
                      "toId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_task": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_task",
        "operationId": "hubspot_create_task",
        "description": "Create a HubSpot task. Optionally associate with a contact, deal, or company. Timestamps default to now.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_task\",\"arguments\":{\"subject\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Task subject/title."
                      },
                      "body": {
                        "type": "string",
                        "description": "Task body/notes."
                      },
                      "dueDate": {
                        "type": "string",
                        "description": "Due date as ISO string or YYYY-MM-DD. Converted to epoch ms."
                      },
                      "priority": {
                        "type": "string",
                        "description": "LOW, MEDIUM, or HIGH. Default MEDIUM."
                      },
                      "status": {
                        "type": "string",
                        "description": "NOT_STARTED, IN_PROGRESS, COMPLETED, DEFERRED, WAITING. Default NOT_STARTED."
                      },
                      "taskType": {
                        "type": "string",
                        "description": "TODO, CALL, or EMAIL. Default TODO."
                      },
                      "ownerId": {
                        "type": "string",
                        "description": "HubSpot owner ID to assign."
                      },
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID to associate."
                      },
                      "dealId": {
                        "type": "string",
                        "description": "Deal ID to associate."
                      },
                      "companyId": {
                        "type": "string",
                        "description": "Company ID to associate."
                      }
                    },
                    "required": [
                      "subject"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_update_task": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "update_task",
        "operationId": "hubspot_update_task",
        "description": "Update a HubSpot task. Use this to mark a task complete (status: COMPLETED), reschedule, or reassign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_update_task\",\"arguments\":{\"taskId\":\"<string>\",\"properties\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "taskId": {
                        "type": "string",
                        "description": "The task ID."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Properties to update. Common keys: hs_task_subject, hs_task_body, hs_task_status, hs_task_priority, hs_timestamp, hubspot_owner_id.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "taskId",
                      "properties"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_tasks": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_tasks",
        "operationId": "hubspot_list_tasks",
        "description": "List HubSpot tasks. Pass filterStatus to filter by hs_task_status (e.g. NOT_STARTED for open tasks).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_tasks\",\"arguments\":{\"limit\":0,\"filterStatus\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      },
                      "filterStatus": {
                        "type": "string",
                        "description": "Filter by hs_task_status."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_call": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_call",
        "operationId": "hubspot_create_call",
        "description": "Log a phone call in HubSpot and associate it with a contact, deal, or company. Timestamp defaults to now.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_call\",\"arguments\":{\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Call title."
                      },
                      "body": {
                        "type": "string",
                        "description": "Call notes / summary."
                      },
                      "direction": {
                        "type": "string",
                        "description": "INBOUND or OUTBOUND. Default OUTBOUND."
                      },
                      "duration": {
                        "type": "number",
                        "description": "Duration in milliseconds."
                      },
                      "status": {
                        "type": "string",
                        "description": "CALL_STATUS: COMPLETED, NO_ANSWER, BUSY, FAILED, CONNECTING, IN_PROGRESS, QUEUED, RINGING, CANCELED."
                      },
                      "timestamp": {
                        "type": "string",
                        "description": "ISO 8601 timestamp of the call (default: now)."
                      },
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID to associate."
                      },
                      "dealId": {
                        "type": "string",
                        "description": "Deal ID to associate."
                      },
                      "companyId": {
                        "type": "string",
                        "description": "Company ID to associate."
                      },
                      "ownerId": {
                        "type": "string",
                        "description": "HubSpot owner ID."
                      }
                    },
                    "required": [
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_meeting": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_meeting",
        "operationId": "hubspot_create_meeting",
        "description": "Log a meeting in HubSpot and associate it with contact(s), deal, or company.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_meeting\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Meeting title."
                      },
                      "body": {
                        "type": "string",
                        "description": "Meeting notes / agenda."
                      },
                      "startTime": {
                        "type": "string",
                        "description": "Start time ISO 8601 (default: now)."
                      },
                      "endTime": {
                        "type": "string",
                        "description": "End time ISO 8601 (default: startTime + 30min)."
                      },
                      "outcome": {
                        "type": "string",
                        "description": "Meeting outcome (SCHEDULED, COMPLETED, RESCHEDULED, NO_SHOW, CANCELED)."
                      },
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID to associate."
                      },
                      "dealId": {
                        "type": "string",
                        "description": "Deal ID to associate."
                      },
                      "companyId": {
                        "type": "string",
                        "description": "Company ID to associate."
                      },
                      "ownerId": {
                        "type": "string",
                        "description": "HubSpot owner ID."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_email_engagement": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_email_engagement",
        "operationId": "hubspot_create_email_engagement",
        "description": "Log an email engagement in HubSpot (incoming or outgoing email to/from a contact). Use this to record that an email was sent/received — does NOT actually send the email.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_email_engagement\",\"arguments\":{\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Email subject."
                      },
                      "body": {
                        "type": "string",
                        "description": "Email body text."
                      },
                      "direction": {
                        "type": "string",
                        "description": "EMAIL (outgoing), INCOMING_EMAIL, or FORWARDED_EMAIL. Default EMAIL."
                      },
                      "timestamp": {
                        "type": "string",
                        "description": "ISO 8601 timestamp of the email (default: now)."
                      },
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID to associate."
                      },
                      "dealId": {
                        "type": "string",
                        "description": "Deal ID to associate."
                      },
                      "companyId": {
                        "type": "string",
                        "description": "Company ID to associate."
                      },
                      "ownerId": {
                        "type": "string",
                        "description": "HubSpot owner ID."
                      }
                    },
                    "required": [
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_contacts": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_contacts",
        "operationId": "hubspot_list_contacts",
        "description": "List HubSpot contacts with optional property selection and pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_contacts\",\"arguments\":{\"limit\":0,\"after\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      },
                      "after": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Contact properties to include."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_delete_contact": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "delete_contact",
        "operationId": "hubspot_delete_contact",
        "description": "Delete (archive) a HubSpot contact by ID. Destructive — confirm with user first.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_delete_contact\",\"arguments\":{\"contactId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contactId": {
                        "type": "string",
                        "description": "The contact ID to archive."
                      }
                    },
                    "required": [
                      "contactId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_delete_deal": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "delete_deal",
        "operationId": "hubspot_delete_deal",
        "description": "Delete (archive) a HubSpot deal by ID. Destructive — confirm with user first.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_delete_deal\",\"arguments\":{\"dealId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "dealId": {
                        "type": "string",
                        "description": "The deal ID to archive."
                      }
                    },
                    "required": [
                      "dealId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_delete_task": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "delete_task",
        "operationId": "hubspot_delete_task",
        "description": "Delete (archive) a HubSpot task by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_delete_task\",\"arguments\":{\"taskId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "taskId": {
                        "type": "string",
                        "description": "The task ID to archive."
                      }
                    },
                    "required": [
                      "taskId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_search_tickets": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "search_tickets",
        "operationId": "hubspot_search_tickets",
        "description": "Search HubSpot tickets by free-text query OR structured filters. Pass `filterGroups` for precise filtering (e.g. by hs_pipeline_stage, hs_ticket_priority). Pass `sorts` to order. Pass `after` for pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_search_tickets\",\"arguments\":{\"query\":\"<string>\",\"filterGroups\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Free-text query. Optional if filterGroups is provided."
                      },
                      "filterGroups": {
                        "type": "array",
                        "description": "HubSpot structured filter. Array of filter groups (OR between groups, AND within). Each group: { filters: [{ propertyName, operator, value, values?, highValue? }] }.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "sorts": {
                        "type": "array",
                        "description": "Array of { propertyName, direction: \"ASCENDING\"|\"DESCENDING\" } sort specs.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Ticket properties to return."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 10, max 100)."
                      },
                      "after": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_get_ticket": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "get_ticket",
        "operationId": "hubspot_get_ticket",
        "description": "Get a HubSpot ticket by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_get_ticket\",\"arguments\":{\"ticketId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ticketId": {
                        "type": "string",
                        "description": "The ticket ID."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Properties to return."
                      }
                    },
                    "required": [
                      "ticketId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_create_ticket": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "create_ticket",
        "operationId": "hubspot_create_ticket",
        "description": "Create a HubSpot ticket with subject, pipeline/stage, priority, and optional associations.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_create_ticket\",\"arguments\":{\"subject\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Ticket subject (required)."
                      },
                      "content": {
                        "type": "string",
                        "description": "Ticket body / description."
                      },
                      "pipeline": {
                        "type": "string",
                        "description": "Pipeline ID."
                      },
                      "stage": {
                        "type": "string",
                        "description": "Ticket stage ID."
                      },
                      "priority": {
                        "type": "string",
                        "description": "HIGH, MEDIUM, or LOW."
                      },
                      "ownerId": {
                        "type": "string",
                        "description": "HubSpot owner ID."
                      },
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID to associate."
                      },
                      "companyId": {
                        "type": "string",
                        "description": "Company ID to associate."
                      },
                      "dealId": {
                        "type": "string",
                        "description": "Deal ID to associate."
                      }
                    },
                    "required": [
                      "subject"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_update_ticket": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "update_ticket",
        "operationId": "hubspot_update_ticket",
        "description": "Update a HubSpot ticket by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_update_ticket\",\"arguments\":{\"ticketId\":\"<string>\",\"properties\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ticketId": {
                        "type": "string",
                        "description": "The ticket ID."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Properties to update.",
                        "additionalProperties": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "ticketId",
                      "properties"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_tickets": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_tickets",
        "operationId": "hubspot_list_tickets",
        "description": "List HubSpot tickets with pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_tickets\",\"arguments\":{\"limit\":0,\"properties\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Ticket properties to include."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_notes": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_notes",
        "operationId": "hubspot_list_notes",
        "description": "List HubSpot note engagements with optional property selection.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_notes\",\"arguments\":{\"limit\":0,\"properties\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_calls": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_calls",
        "operationId": "hubspot_list_calls",
        "description": "List HubSpot call engagements with optional property selection.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_calls\",\"arguments\":{\"limit\":0,\"properties\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_meetings": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_meetings",
        "operationId": "hubspot_list_meetings",
        "description": "List HubSpot meeting engagements with optional property selection.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_meetings\",\"arguments\":{\"limit\":0,\"properties\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_emails": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_emails",
        "operationId": "hubspot_list_emails",
        "description": "List HubSpot email engagements (logged emails, not sent emails).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_emails\",\"arguments\":{\"limit\":0,\"properties\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_batch_create_contacts": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "batch_create_contacts",
        "operationId": "hubspot_batch_create_contacts",
        "description": "Create multiple HubSpot contacts in a single batch API call (up to 100).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_batch_create_contacts\",\"arguments\":{\"contacts\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contacts": {
                        "type": "array",
                        "description": "Array of contact objects. Each object is a properties map (e.g. { email, firstname, lastname, phone }).",
                        "items": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "required": [
                      "contacts"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_batch_update_contacts": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "batch_update_contacts",
        "operationId": "hubspot_batch_update_contacts",
        "description": "Update multiple HubSpot contacts in a single batch API call (up to 100).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_batch_update_contacts\",\"arguments\":{\"contacts\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contacts": {
                        "type": "array",
                        "description": "Array of objects each with \"id\" (contact ID) and \"properties\" (key-value map of fields to update).",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Contact ID."
                            },
                            "properties": {
                              "type": "object",
                              "description": "Properties to update.",
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "id",
                            "properties"
                          ]
                        }
                      }
                    },
                    "required": [
                      "contacts"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_batch_create_deals": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "batch_create_deals",
        "operationId": "hubspot_batch_create_deals",
        "description": "Create multiple HubSpot deals in a single batch API call (up to 100).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_batch_create_deals\",\"arguments\":{\"deals\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "deals": {
                        "type": "array",
                        "description": "Array of deal objects. Each object is a properties map (e.g. { dealname, amount, pipeline, dealstage }).",
                        "items": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "required": [
                      "deals"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_batch_update_deals": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "batch_update_deals",
        "operationId": "hubspot_batch_update_deals",
        "description": "Update multiple HubSpot deals in a single batch API call (up to 100).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_batch_update_deals\",\"arguments\":{\"deals\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "deals": {
                        "type": "array",
                        "description": "Array of objects each with \"id\" (deal ID) and \"properties\" (key-value map of fields to update).",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Deal ID."
                            },
                            "properties": {
                              "type": "object",
                              "description": "Properties to update.",
                              "additionalProperties": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "id",
                            "properties"
                          ]
                        }
                      }
                    },
                    "required": [
                      "deals"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_list_custom_objects": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "list_custom_objects",
        "operationId": "hubspot_list_custom_objects",
        "description": "List all custom object schemas defined in HubSpot.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_list_custom_objects\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_search_custom_objects": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "search_custom_objects",
        "operationId": "hubspot_search_custom_objects",
        "description": "Search records of a custom object type by free-text query OR structured filters. Pass `filterGroups` for precise filtering. Pass `sorts` to order. Pass `after` for pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_search_custom_objects\",\"arguments\":{\"objectType\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "objectType": {
                        "type": "string",
                        "description": "The custom object type name or ID (e.g. \"2-12345\" or \"my_custom_object\")."
                      },
                      "query": {
                        "type": "string",
                        "description": "Free-text query. Optional if filterGroups is provided."
                      },
                      "filterGroups": {
                        "type": "array",
                        "description": "HubSpot structured filter. Array of filter groups (OR between groups, AND within).",
                        "items": {
                          "type": "object"
                        }
                      },
                      "sorts": {
                        "type": "array",
                        "description": "Array of { propertyName, direction: \"ASCENDING\"|\"DESCENDING\" } sort specs.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "properties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Properties to return on each record."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum results to return (default 10, max 100)."
                      },
                      "after": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      }
                    },
                    "required": [
                      "objectType"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hubspot_trigger_workflow": {
      "post": {
        "tags": [
          "hubspot"
        ],
        "summary": "trigger_workflow",
        "operationId": "hubspot_trigger_workflow",
        "description": "Enroll a contact into a HubSpot workflow by workflow ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hubspot_trigger_workflow\",\"arguments\":{\"workflowId\":\"<string>\",\"contactEmail\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string",
                        "description": "The workflow ID to enroll the contact in."
                      },
                      "contactEmail": {
                        "type": "string",
                        "description": "The email address of the contact to enroll."
                      }
                    },
                    "required": [
                      "workflowId",
                      "contactEmail"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hunter_domain_search": {
      "post": {
        "tags": [
          "hunter"
        ],
        "summary": "domain_search",
        "operationId": "hunter_domain_search",
        "description": "Find email addresses associated with a domain or company. Returns emails with first/last name, position, confidence, sources. Use for prospecting.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hunter_domain_search\",\"arguments\":{\"domain\":\"<string>\",\"company\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "domain": {
                        "type": "string",
                        "description": "Domain to search, e.g. \"example.com\". Provide domain OR company."
                      },
                      "company": {
                        "type": "string",
                        "description": "Company name. Hunter will resolve domain automatically."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max emails. Default 10, max 100."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset. Default 0."
                      },
                      "type": {
                        "type": "string",
                        "description": "\"personal\" or \"generic\" (info@, support@). Omit for both."
                      },
                      "seniority": {
                        "type": "string",
                        "description": "Comma-separated: \"junior\",\"senior\",\"executive\"."
                      },
                      "department": {
                        "type": "string",
                        "description": "Comma-separated: \"executive\",\"it\",\"finance\",\"management\",\"sales\",\"legal\",\"support\",\"hr\",\"marketing\",\"communication\",\"education\",\"design\",\"health\",\"operations\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hunter_email_finder": {
      "post": {
        "tags": [
          "hunter"
        ],
        "summary": "email_finder",
        "operationId": "hunter_email_finder",
        "description": "Find a specific person's email at a company. Returns best-match email with confidence score and verification status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hunter_email_finder\",\"arguments\":{\"domain\":\"<string>\",\"company\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "domain": {
                        "type": "string",
                        "description": "Company domain, e.g. \"example.com\"."
                      },
                      "company": {
                        "type": "string",
                        "description": "Company name (alternative to domain)."
                      },
                      "firstName": {
                        "type": "string",
                        "description": "Person's first name."
                      },
                      "lastName": {
                        "type": "string",
                        "description": "Person's last name."
                      },
                      "fullName": {
                        "type": "string",
                        "description": "Alternative to first/last: \"Jane Doe\"."
                      },
                      "maxDuration": {
                        "type": "number",
                        "description": "Max lookup time in seconds (3-20). Default 10."
                      }
                    },
                    "required": []
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hunter_email_verifier": {
      "post": {
        "tags": [
          "hunter"
        ],
        "summary": "email_verifier",
        "operationId": "hunter_email_verifier",
        "description": "Verify deliverability of a single email address. Returns status (\"valid\",\"accept_all\",\"invalid\",\"disposable\",\"webmail\",\"unknown\"), score (0-100), MX/SMTP/regex checks.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hunter_email_verifier\",\"arguments\":{\"email\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Email address to verify."
                      }
                    },
                    "required": [
                      "email"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hunter_email_count": {
      "post": {
        "tags": [
          "hunter"
        ],
        "summary": "email_count",
        "operationId": "hunter_email_count",
        "description": "Return how many email addresses Hunter has for a domain, broken down by type, seniority, department. Zero cost — does not consume credits. Use before paid domain_search.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hunter_email_count\",\"arguments\":{\"domain\":\"<string>\",\"company\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "domain": {
                        "type": "string",
                        "description": "Domain, e.g. \"example.com\"."
                      },
                      "company": {
                        "type": "string",
                        "description": "Company name (alternative)."
                      },
                      "type": {
                        "type": "string",
                        "description": "\"personal\" or \"generic\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hunter_author_finder": {
      "post": {
        "tags": [
          "hunter"
        ],
        "summary": "author_finder",
        "operationId": "hunter_author_finder",
        "description": "Find the author of a blog post or article by URL — returns name, email, social profiles. Useful for link-building and PR outreach.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hunter_author_finder\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Full article URL."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hunter_combined_enrichment": {
      "post": {
        "tags": [
          "hunter"
        ],
        "summary": "combined_enrichment",
        "operationId": "hunter_combined_enrichment",
        "description": "Enrich a single email with person + company data (name, role, LinkedIn, company size, industry). One-shot enrichment.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hunter_combined_enrichment\",\"arguments\":{\"email\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Email address to enrich."
                      }
                    },
                    "required": [
                      "email"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=hunter_account_info": {
      "post": {
        "tags": [
          "hunter"
        ],
        "summary": "account_info",
        "operationId": "hunter_account_info",
        "description": "Return current Hunter account info: plan, remaining credits (requests, verifications), reset date. Use to check quota before bulk ops.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"hunter_account_info\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=images_image_generate": {
      "post": {
        "tags": [
          "images"
        ],
        "summary": "image_generate",
        "operationId": "images_image_generate",
        "description": "Generate an image from a text prompt. Routes to OpenAI (gpt-image-1) by default, or Replicate/Stability/Ideogram/BFL if specified. The generated image is stored in R2 and recorded as an Asset. Returns { assetId, url, costCents }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"images_image_generate\",\"arguments\":{\"prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "prompt": {
                        "type": "string",
                        "description": "The text description of the image to generate."
                      },
                      "provider": {
                        "type": "string",
                        "enum": [
                          "openai",
                          "replicate",
                          "stability",
                          "ideogram",
                          "bfl"
                        ],
                        "description": "Provider to use. Default: openai."
                      },
                      "model": {
                        "type": "string",
                        "description": "Provider-specific model hint. OpenAI: ignored (uses gpt-image-1). Replicate: model ref like \"black-forest-labs/flux-schnell\" (default) or \"black-forest-labs/flux-1.1-pro\"."
                      },
                      "size": {
                        "type": "string",
                        "description": "Image size (OpenAI accepts 1024x1024, 1024x1792, 1792x1024). Default: 1024x1024."
                      },
                      "quality": {
                        "type": "string",
                        "enum": [
                          "standard",
                          "hd"
                        ],
                        "description": "OpenAI quality level. Default: standard."
                      }
                    },
                    "required": [
                      "prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=images_image_variations": {
      "post": {
        "tags": [
          "images"
        ],
        "summary": "image_variations",
        "operationId": "images_image_variations",
        "description": "Generate N variations of a given image URL or asset ID. Uses OpenAI by default. Returns array of { assetId, url }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"images_image_variations\",\"arguments\":{\"imageUrl\":\"<string>\",\"assetId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "imageUrl": {
                        "type": "string",
                        "description": "URL of the source image."
                      },
                      "assetId": {
                        "type": "string",
                        "description": "Alternatively, an Asset ID in this tenant."
                      },
                      "n": {
                        "type": "number",
                        "description": "How many variations (1-4). Default 2."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=images_image_upscale": {
      "post": {
        "tags": [
          "images"
        ],
        "summary": "image_upscale",
        "operationId": "images_image_upscale",
        "description": "Upscale an image 2x or 4x using Replicate (real-esrgan by default). Returns { assetId, url }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"images_image_upscale\",\"arguments\":{\"imageUrl\":\"<string>\",\"assetId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "imageUrl": {
                        "type": "string",
                        "description": "URL of the source image."
                      },
                      "assetId": {
                        "type": "string",
                        "description": "Alternatively, an Asset ID."
                      },
                      "scale": {
                        "type": "number",
                        "description": "Upscale factor: 2 or 4. Default 2."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=images_image_remove_bg": {
      "post": {
        "tags": [
          "images"
        ],
        "summary": "image_remove_bg",
        "operationId": "images_image_remove_bg",
        "description": "Remove background from an image using Replicate. Returns a PNG with transparent background.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"images_image_remove_bg\",\"arguments\":{\"imageUrl\":\"<string>\",\"assetId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "imageUrl": {
                        "type": "string",
                        "description": "URL of the source image."
                      },
                      "assetId": {
                        "type": "string",
                        "description": "Alternatively, an Asset ID."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=images_image_describe": {
      "post": {
        "tags": [
          "images"
        ],
        "summary": "image_describe",
        "operationId": "images_image_describe",
        "description": "Generate alt text / caption for an image using OpenAI vision. Returns { description }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"images_image_describe\",\"arguments\":{\"imageUrl\":\"<string>\",\"assetId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "imageUrl": {
                        "type": "string",
                        "description": "URL of the image."
                      },
                      "assetId": {
                        "type": "string",
                        "description": "Alternatively, an Asset ID."
                      },
                      "detail": {
                        "type": "string",
                        "enum": [
                          "short",
                          "alt",
                          "detailed"
                        ],
                        "description": "Length of caption. Default: alt."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=images_image_list": {
      "post": {
        "tags": [
          "images"
        ],
        "summary": "image_list",
        "operationId": "images_image_list",
        "description": "List the caller's recent generated images. Returns up to `limit` assets with metadata.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"images_image_list\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 20, max 100)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=landing_landing_generate": {
      "post": {
        "tags": [
          "landing"
        ],
        "summary": "landing_generate",
        "operationId": "landing_landing_generate",
        "description": "Generate a single-page HTML landing page from a brief. Stored in R2, recorded as an Asset (kind=DOCUMENT). Returns { assetId, url, sizeBytes }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"landing_landing_generate\",\"arguments\":{\"productName\":\"<string>\",\"brief\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "productName": {
                        "type": "string"
                      },
                      "brief": {
                        "type": "string",
                        "description": "What the page is for — features, audience, value prop."
                      },
                      "cta": {
                        "type": "string",
                        "description": "Primary call-to-action button text."
                      },
                      "tone": {
                        "type": "string",
                        "description": "Brand tone override. Defaults to user's BrandVoice."
                      },
                      "accentColor": {
                        "type": "string",
                        "description": "CSS color for accents. Default indigo."
                      }
                    },
                    "required": [
                      "productName",
                      "brief"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=landing_landing_preview": {
      "post": {
        "tags": [
          "landing"
        ],
        "summary": "landing_preview",
        "operationId": "landing_landing_preview",
        "description": "Generate landing HTML without saving to R2 or charging credits. Returns just the HTML text for preview.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"landing_landing_preview\",\"arguments\":{\"productName\":\"<string>\",\"brief\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "productName": {
                        "type": "string"
                      },
                      "brief": {
                        "type": "string"
                      },
                      "cta": {
                        "type": "string"
                      },
                      "tone": {
                        "type": "string"
                      },
                      "accentColor": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "productName",
                      "brief"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=landing_landing_list": {
      "post": {
        "tags": [
          "landing"
        ],
        "summary": "landing_list",
        "operationId": "landing_landing_list",
        "description": "List caller's recent landing pages.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"landing_landing_list\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=landing_landing_delete": {
      "post": {
        "tags": [
          "landing"
        ],
        "summary": "landing_delete",
        "operationId": "landing_landing_delete",
        "description": "Archive a landing page by asset id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"landing_landing_delete\",\"arguments\":{\"assetId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "assetId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "assetId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_list_ad_accounts": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "list_ad_accounts",
        "operationId": "linkedin_list_ad_accounts",
        "description": "List LinkedIn Ad Accounts the authenticated user can access. Returns account URNs, names, status, currency.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_list_ad_accounts\",\"arguments\":{\"q\":\"<string>\",\"count\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "q": {
                        "type": "string",
                        "description": "Search type: \"search\" (default) returns user-accessible accounts."
                      },
                      "count": {
                        "type": "number",
                        "description": "Max accounts. Default 25."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_list_campaigns": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "list_campaigns",
        "operationId": "linkedin_list_campaigns",
        "description": "List campaigns under a LinkedIn ad account. Returns campaign IDs, names, status, objective, daily/total budget.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_list_campaigns\",\"arguments\":{\"accountId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "accountId": {
                        "type": "string",
                        "description": "LinkedIn ad account ID (numeric, e.g. \"506140378\")."
                      },
                      "count": {
                        "type": "number",
                        "description": "Max campaigns. Default 25."
                      },
                      "start": {
                        "type": "number",
                        "description": "Offset for pagination. Default 0."
                      }
                    },
                    "required": [
                      "accountId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_get_ad_analytics": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "get_ad_analytics",
        "operationId": "linkedin_get_ad_analytics",
        "description": "Get LinkedIn Ads analytics (impressions, clicks, spend, conversions) for a campaign, account, or creative. Uses Ad Analytics API with time granularity.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_get_ad_analytics\",\"arguments\":{\"dateRange\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pivot": {
                        "type": "string",
                        "description": "Dimension: \"CAMPAIGN\" (default), \"CREATIVE\", \"ACCOUNT\", \"COMPANY\", \"MEMBER_COMPANY_SIZE\", \"MEMBER_INDUSTRY\"."
                      },
                      "accountUrn": {
                        "type": "string",
                        "description": "Account URN, e.g. \"urn:li:sponsoredAccount:506140378\". Used with pivot=ACCOUNT or campaign filter."
                      },
                      "campaignUrns": {
                        "type": "array",
                        "description": "Array of campaign URNs, e.g. [\"urn:li:sponsoredCampaign:111111\"]. Used with pivot=CAMPAIGN or CREATIVE.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "dateRange": {
                        "type": "object",
                        "description": "Start/end: { start: {year,month,day}, end: {year,month,day} }.",
                        "properties": {
                          "start": {
                            "type": "object"
                          },
                          "end": {
                            "type": "object"
                          }
                        },
                        "required": [
                          "start"
                        ]
                      },
                      "timeGranularity": {
                        "type": "string",
                        "description": "\"ALL\" (default), \"DAILY\", \"MONTHLY\", \"YEARLY\"."
                      },
                      "fields": {
                        "type": "string",
                        "description": "Comma-separated metrics. Default \"impressions,clicks,costInUsd,externalWebsiteConversions,videoViews,dateRange,pivotValues\"."
                      }
                    },
                    "required": [
                      "dateRange"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_list_organizations": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "list_organizations",
        "operationId": "linkedin_list_organizations",
        "description": "List LinkedIn Organizations (Company Pages) the authenticated user administers.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_list_organizations\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_get_organization_follower_stats": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "get_organization_follower_stats",
        "operationId": "linkedin_get_organization_follower_stats",
        "description": "Get follower statistics for a LinkedIn Company Page — total followers plus breakdowns by country, industry, seniority.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_get_organization_follower_stats\",\"arguments\":{\"organizationUrn\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "organizationUrn": {
                        "type": "string",
                        "description": "Organization URN, e.g. \"urn:li:organization:12345\"."
                      }
                    },
                    "required": [
                      "organizationUrn"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_get_organization_page_stats": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "get_organization_page_stats",
        "operationId": "linkedin_get_organization_page_stats",
        "description": "Get page view statistics (impressions, unique visitors, engagement) for a LinkedIn Company Page.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_get_organization_page_stats\",\"arguments\":{\"organizationUrn\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "organizationUrn": {
                        "type": "string",
                        "description": "Organization URN."
                      },
                      "timeGranularity": {
                        "type": "string",
                        "description": "\"DAY\" (default) or \"MONTH\"."
                      },
                      "startDate": {
                        "type": "object",
                        "description": "{year,month,day}",
                        "properties": {
                          "year": {
                            "type": "number"
                          },
                          "month": {
                            "type": "number"
                          },
                          "day": {
                            "type": "number"
                          }
                        }
                      },
                      "endDate": {
                        "type": "object",
                        "description": "{year,month,day}",
                        "properties": {
                          "year": {
                            "type": "number"
                          },
                          "month": {
                            "type": "number"
                          },
                          "day": {
                            "type": "number"
                          }
                        }
                      }
                    },
                    "required": [
                      "organizationUrn"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_list_organization_posts": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "list_organization_posts",
        "operationId": "linkedin_list_organization_posts",
        "description": "List recent posts from a LinkedIn Company Page. Returns post URNs, content, creation time.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_list_organization_posts\",\"arguments\":{\"organizationUrn\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "organizationUrn": {
                        "type": "string",
                        "description": "Organization URN."
                      },
                      "count": {
                        "type": "number",
                        "description": "Max posts. Default 25."
                      }
                    },
                    "required": [
                      "organizationUrn"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_linkedin_get_profile": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "linkedin_get_profile",
        "operationId": "linkedin_linkedin_get_profile",
        "description": "Get the authenticated member's basic LinkedIn profile (id, name).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_linkedin_get_profile\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_linkedin_create_post": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "linkedin_create_post",
        "operationId": "linkedin_linkedin_create_post",
        "description": "Create a LinkedIn post on the authenticated member's feed. Returns { postId, url }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_linkedin_create_post\",\"arguments\":{\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "description": "Post text (max ~3000 chars)."
                      },
                      "visibility": {
                        "type": "string",
                        "enum": [
                          "PUBLIC",
                          "CONNECTIONS"
                        ],
                        "description": "Post visibility. Default PUBLIC."
                      },
                      "mediaAssetUrn": {
                        "type": "string",
                        "description": "LinkedIn image asset URN, if attaching media."
                      }
                    },
                    "required": [
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_linkedin_list_posts": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "linkedin_list_posts",
        "operationId": "linkedin_linkedin_list_posts",
        "description": "List the authenticated member's recent LinkedIn posts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_linkedin_list_posts\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=linkedin_linkedin_post_campaign": {
      "post": {
        "tags": [
          "linkedin"
        ],
        "summary": "linkedin_post_campaign",
        "operationId": "linkedin_linkedin_post_campaign",
        "description": "Publish a scheduled CampaignChannel (channel=LINKEDIN) to LinkedIn. Updates the CampaignChannel row with publishedAt + providerRef on success.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"linkedin_linkedin_post_campaign\",\"arguments\":{\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channelId": {
                        "type": "string",
                        "description": "CampaignChannel id to publish."
                      }
                    },
                    "required": [
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=manus_create_task": {
      "post": {
        "tags": [
          "manus"
        ],
        "summary": "create_task",
        "operationId": "manus_create_task",
        "description": "Create a new Manus agent task. Spawns an autonomous agent that executes the prompt and returns a task_id for polling. Maps to POST /v2/task.create.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"manus_create_task\",\"arguments\":{\"prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "prompt": {
                        "type": "string",
                        "description": "Natural-language instruction for the agent."
                      },
                      "agent_profile": {
                        "type": "string",
                        "description": "Agent profile / model to use (e.g. \"manus-1.6\"). Optional — server picks default."
                      },
                      "connectors": {
                        "type": "array",
                        "description": "Connector IDs to enable for this task. Must already be configured in the user account."
                      },
                      "enable_skills": {
                        "type": "array",
                        "description": "Skill IDs to enable for the agent during this task."
                      },
                      "force_skills": {
                        "type": "array",
                        "description": "Skill IDs the agent MUST use during this task."
                      },
                      "title": {
                        "type": "string",
                        "description": "Optional task title."
                      },
                      "project_id": {
                        "type": "string",
                        "description": "Optional project to attach this task to."
                      },
                      "locale": {
                        "type": "string",
                        "description": "Locale hint, e.g. \"en-US\"."
                      },
                      "hide_in_task_list": {
                        "type": "boolean",
                        "description": "Hide from the Manus webapp task list (still reachable by link)."
                      }
                    },
                    "required": [
                      "prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=manus_get_task": {
      "post": {
        "tags": [
          "manus"
        ],
        "summary": "get_task",
        "operationId": "manus_get_task",
        "description": "Fetch current status and result of a Manus task. Maps to GET /v2/task.detail. Poll this until status is terminal.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"manus_get_task\",\"arguments\":{\"task_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "task_id": {
                        "type": "string",
                        "description": "Task id returned by create_task. Also accepts the shortcut \"agent-default-main_task\"."
                      }
                    },
                    "required": [
                      "task_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=manus_list_tasks": {
      "post": {
        "tags": [
          "manus"
        ],
        "summary": "list_tasks",
        "operationId": "manus_list_tasks",
        "description": "List recent Manus tasks with cursor pagination. Maps to GET /v2/task.list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"manus_list_tasks\",\"arguments\":{\"limit\":0,\"cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Page size. Default 20, max 100."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor from a previous response `next_cursor`."
                      },
                      "order": {
                        "type": "string",
                        "description": "Sort direction: \"asc\" or \"desc\" (default)."
                      },
                      "scope": {
                        "type": "string",
                        "description": "Filter by task type: \"all\", \"standard\", \"project\", or \"agent_subtask\"."
                      },
                      "agent_id": {
                        "type": "string",
                        "description": "Required when scope=\"agent_subtask\"."
                      },
                      "project_id": {
                        "type": "string",
                        "description": "Required when scope=\"project\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=manus_cancel_task": {
      "post": {
        "tags": [
          "manus"
        ],
        "summary": "cancel_task",
        "operationId": "manus_cancel_task",
        "description": "Stop a running Manus task. Maps to POST /v2/task.stop. The task can be reactivated later via a follow-up message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"manus_cancel_task\",\"arguments\":{\"task_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "task_id": {
                        "type": "string",
                        "description": "Task id to stop."
                      }
                    },
                    "required": [
                      "task_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_create": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_create",
        "operationId": "marketing_campaign_create",
        "description": "Create a marketing campaign. Returns the created Campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_create\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "objective": {
                        "type": "string"
                      },
                      "audience": {
                        "type": "object",
                        "description": "Audience targeting criteria."
                      },
                      "budgetCents": {
                        "type": "number"
                      },
                      "startAt": {
                        "type": "string",
                        "description": "ISO timestamp."
                      },
                      "endAt": {
                        "type": "string",
                        "description": "ISO timestamp."
                      },
                      "tags": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "utmCampaign": {
                        "type": "string"
                      },
                      "utmSource": {
                        "type": "string"
                      },
                      "utmMedium": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_update": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_update",
        "operationId": "marketing_campaign_update",
        "description": "Update a campaign. Pass any subset of fields.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_update\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "objective": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "DRAFT",
                          "SCHEDULED",
                          "RUNNING",
                          "PAUSED",
                          "COMPLETED",
                          "CANCELLED"
                        ]
                      },
                      "audience": {
                        "type": "object"
                      },
                      "budgetCents": {
                        "type": "number"
                      },
                      "startAt": {
                        "type": "string"
                      },
                      "endAt": {
                        "type": "string"
                      },
                      "tags": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_list": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_list",
        "operationId": "marketing_campaign_list",
        "description": "List caller's campaigns, optionally filtered by status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_list\",\"arguments\":{\"status\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_get": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_get",
        "operationId": "marketing_campaign_get",
        "description": "Get a single campaign with all its channels.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_get\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_add_channel": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_add_channel",
        "operationId": "marketing_campaign_add_channel",
        "description": "Add a channel to a campaign (email, linkedin, twitter, facebook, etc.) with its content payload. Content shape depends on the channel — e.g. { subject, body } for EMAIL, { text, mediaUrls } for LINKEDIN.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_add_channel\",\"arguments\":{\"campaignId\":\"<string>\",\"channel\":\"<string>\",\"content\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "string"
                      },
                      "channel": {
                        "type": "string",
                        "enum": [
                          "EMAIL",
                          "LINKEDIN",
                          "TWITTER",
                          "FACEBOOK",
                          "INSTAGRAM",
                          "TIKTOK",
                          "GOOGLE_ADS",
                          "META_ADS",
                          "BLOG",
                          "LANDING_PAGE",
                          "OTHER"
                        ]
                      },
                      "content": {
                        "type": "object",
                        "description": "Channel-specific payload."
                      },
                      "scheduledAt": {
                        "type": "string",
                        "description": "ISO timestamp."
                      }
                    },
                    "required": [
                      "campaignId",
                      "channel",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_schedule": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_schedule",
        "operationId": "marketing_campaign_schedule",
        "description": "Move all PLANNED channels of a campaign to SCHEDULED and flip the campaign to SCHEDULED.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_schedule\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_draft_with_brand": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_draft_with_brand",
        "operationId": "marketing_campaign_draft_with_brand",
        "description": "Draft marketing copy for a given channel, applying the caller's BrandVoice. Returns { draft } string. Uses Claude when ANTHROPIC_API_KEY is set; otherwise returns a scaffolded template.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_draft_with_brand\",\"arguments\":{\"channel\":\"<string>\",\"topic\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "enum": [
                          "EMAIL",
                          "LINKEDIN",
                          "TWITTER",
                          "FACEBOOK",
                          "INSTAGRAM",
                          "TIKTOK",
                          "BLOG"
                        ]
                      },
                      "topic": {
                        "type": "string",
                        "description": "What the post is about."
                      },
                      "goal": {
                        "type": "string",
                        "description": "CTA or outcome. E.g. \"book a demo\"."
                      },
                      "audience": {
                        "type": "string",
                        "description": "Who this targets."
                      },
                      "tone": {
                        "type": "string",
                        "description": "Overrides brand tone if set."
                      }
                    },
                    "required": [
                      "channel",
                      "topic"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_content_calendar": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "content_calendar",
        "operationId": "marketing_content_calendar",
        "description": "Return a unified calendar of scheduled + published channels across campaigns in a date range. Useful for \"show me everything going out this week\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_content_calendar\",\"arguments\":{\"start\":\"<string>\",\"end\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "start": {
                        "type": "string",
                        "description": "ISO date start. Default: now."
                      },
                      "end": {
                        "type": "string",
                        "description": "ISO date end. Default: +30d."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_ab_test_create": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "ab_test_create",
        "operationId": "marketing_ab_test_create",
        "description": "Create an A/B test. Variants is an array of per-variant specs (channel payloads). Metric is what you'll optimize (ctr, open_rate, conversion_rate).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_ab_test_create\",\"arguments\":{\"name\":\"<string>\",\"variants\":[],\"metric\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "campaignId": {
                        "type": "string"
                      },
                      "hypothesis": {
                        "type": "string"
                      },
                      "variants": {
                        "type": "array",
                        "items": {
                          "type": "object"
                        }
                      },
                      "metric": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "variants",
                      "metric"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_ab_test_record": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "ab_test_record",
        "operationId": "marketing_ab_test_record",
        "description": "Record per-variant results on an A/B test. Stored as JSON under resultsJson.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_ab_test_record\",\"arguments\":{\"id\":\"<string>\",\"results\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "results": {
                        "type": "array",
                        "description": "Array of per-variant { variantIndex, metricValue, sampleSize }.",
                        "items": {
                          "type": "object"
                        }
                      },
                      "winnerIndex": {
                        "type": "number"
                      },
                      "finalize": {
                        "type": "boolean",
                        "description": "If true, mark COMPLETED."
                      }
                    },
                    "required": [
                      "id",
                      "results"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_delete": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_delete",
        "operationId": "marketing_campaign_delete",
        "description": "Delete a campaign and all its channels. Also sets linked ABTests' campaignId to null. Irreversible.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_delete\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=marketing_campaign_delete_channel": {
      "post": {
        "tags": [
          "marketing"
        ],
        "summary": "campaign_delete_channel",
        "operationId": "marketing_campaign_delete_channel",
        "description": "Delete a single CampaignChannel by id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"marketing_campaign_delete_channel\",\"arguments\":{\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channelId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta_meta_get_pages": {
      "post": {
        "tags": [
          "meta"
        ],
        "summary": "meta_get_pages",
        "operationId": "meta_meta_get_pages",
        "description": "List Facebook Pages the authenticated user manages.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta_meta_get_pages\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta_meta_fb_post": {
      "post": {
        "tags": [
          "meta"
        ],
        "summary": "meta_fb_post",
        "operationId": "meta_meta_fb_post",
        "description": "Post to a Facebook Page. Returns { postId, url }. Provide `linkUrl` for a link preview card, or `imageUrl` to attach a photo.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta_meta_fb_post\",\"arguments\":{\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "message": {
                        "type": "string"
                      },
                      "linkUrl": {
                        "type": "string"
                      },
                      "imageUrl": {
                        "type": "string",
                        "description": "Public URL of image to attach."
                      },
                      "pageId": {
                        "type": "string",
                        "description": "Override page ID. Defaults to creds.pageId."
                      }
                    },
                    "required": [
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta_meta_fb_list_posts": {
      "post": {
        "tags": [
          "meta"
        ],
        "summary": "meta_fb_list_posts",
        "operationId": "meta_meta_fb_list_posts",
        "description": "List recent posts from a Facebook Page.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta_meta_fb_list_posts\",\"arguments\":{\"pageId\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageId": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta_meta_ig_post": {
      "post": {
        "tags": [
          "meta"
        ],
        "summary": "meta_ig_post",
        "operationId": "meta_meta_ig_post",
        "description": "Publish to Instagram Business account. Two-step: creates a container, then publishes. Returns { id, url }. Requires `imageUrl` (public) and `caption`.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta_meta_ig_post\",\"arguments\":{\"imageUrl\":\"<string>\",\"caption\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "imageUrl": {
                        "type": "string",
                        "description": "Publicly accessible image URL."
                      },
                      "caption": {
                        "type": "string"
                      },
                      "igUserId": {
                        "type": "string",
                        "description": "Override IG business user id."
                      }
                    },
                    "required": [
                      "imageUrl",
                      "caption"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta_meta_ig_list_media": {
      "post": {
        "tags": [
          "meta"
        ],
        "summary": "meta_ig_list_media",
        "operationId": "meta_meta_ig_list_media",
        "description": "List recent Instagram media from the connected IG Business account.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta_meta_ig_list_media\",\"arguments\":{\"igUserId\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "igUserId": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta_meta_post_campaign": {
      "post": {
        "tags": [
          "meta"
        ],
        "summary": "meta_post_campaign",
        "operationId": "meta_meta_post_campaign",
        "description": "Publish a CampaignChannel with channel=FACEBOOK or INSTAGRAM. FB content: { message, linkUrl?, imageUrl? }. IG content: { imageUrl, caption }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta_meta_post_campaign\",\"arguments\":{\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channelId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta-ads_list_ad_accounts": {
      "post": {
        "tags": [
          "meta-ads"
        ],
        "summary": "list_ad_accounts",
        "operationId": "meta-ads_list_ad_accounts",
        "description": "List all Meta ad accounts the authenticated user can access. Returns ad account IDs (act_XXXX), names, currency, status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta-ads_list_ad_accounts\",\"arguments\":{\"fields\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "fields": {
                        "type": "string",
                        "description": "Comma-separated fields to return. Default \"id,name,account_status,currency,timezone_name\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta-ads_list_campaigns": {
      "post": {
        "tags": [
          "meta-ads"
        ],
        "summary": "list_campaigns",
        "operationId": "meta-ads_list_campaigns",
        "description": "List campaigns under a specific Meta ad account. Returns campaign IDs, names, status, objective, daily/lifetime budget.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta-ads_list_campaigns\",\"arguments\":{\"adAccountId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "adAccountId": {
                        "type": "string",
                        "description": "Ad account ID (format \"act_XXXXXXXXXX\")."
                      },
                      "fields": {
                        "type": "string",
                        "description": "Default \"id,name,status,objective,daily_budget,lifetime_budget,start_time,stop_time\"."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max campaigns. Default 100."
                      }
                    },
                    "required": [
                      "adAccountId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta-ads_get_ad_insights": {
      "post": {
        "tags": [
          "meta-ads"
        ],
        "summary": "get_ad_insights",
        "operationId": "meta-ads_get_ad_insights",
        "description": "Get performance insights for an ad account, campaign, ad set, or ad. Returns spend, impressions, reach, clicks, CPC, CTR, conversions.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta-ads_get_ad_insights\",\"arguments\":{\"objectId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "objectId": {
                        "type": "string",
                        "description": "Node ID to pull insights for: ad account (\"act_XXX\"), campaign, ad set, or ad ID."
                      },
                      "level": {
                        "type": "string",
                        "description": "\"account\" (default), \"campaign\", \"adset\", \"ad\"."
                      },
                      "datePreset": {
                        "type": "string",
                        "description": "Preset: \"today\", \"yesterday\", \"last_7d\", \"last_14d\", \"last_28d\", \"last_30d\", \"last_90d\", \"this_month\", \"last_month\", \"lifetime\"."
                      },
                      "timeRange": {
                        "type": "object",
                        "description": "Custom range {since:\"YYYY-MM-DD\",until:\"YYYY-MM-DD\"}. Use instead of datePreset.",
                        "properties": {
                          "since": {
                            "type": "string"
                          },
                          "until": {
                            "type": "string"
                          }
                        }
                      },
                      "fields": {
                        "type": "string",
                        "description": "Comma-separated insight fields. Default \"spend,impressions,reach,clicks,cpc,ctr,cpm,actions\"."
                      },
                      "breakdowns": {
                        "type": "string",
                        "description": "Optional breakdowns (e.g. \"age,gender\", \"country\", \"device_platform\", \"publisher_platform\")."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max rows. Default 100."
                      }
                    },
                    "required": [
                      "objectId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta-ads_list_pages": {
      "post": {
        "tags": [
          "meta-ads"
        ],
        "summary": "list_pages",
        "operationId": "meta-ads_list_pages",
        "description": "List Facebook Pages the authenticated user manages, with page access tokens for Page Insights and Instagram lookups.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta-ads_list_pages\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta-ads_get_page_insights": {
      "post": {
        "tags": [
          "meta-ads"
        ],
        "summary": "get_page_insights",
        "operationId": "meta-ads_get_page_insights",
        "description": "Get organic Page Insights metrics (reach, engagement, follower growth). Requires page access token from list_pages.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta-ads_get_page_insights\",\"arguments\":{\"pageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageId": {
                        "type": "string",
                        "description": "Facebook Page ID."
                      },
                      "pageAccessToken": {
                        "type": "string",
                        "description": "Page-scoped access token (from list_pages). If omitted, uses user token (limited metrics)."
                      },
                      "metric": {
                        "type": "string",
                        "description": "Comma-separated metrics. Default \"page_impressions,page_engaged_users,page_fans,page_post_engagements\"."
                      },
                      "period": {
                        "type": "string",
                        "description": "\"day\" (default), \"week\", \"days_28\"."
                      },
                      "since": {
                        "type": "string",
                        "description": "YYYY-MM-DD or Unix timestamp. Start of range."
                      },
                      "until": {
                        "type": "string",
                        "description": "YYYY-MM-DD or Unix timestamp. End of range."
                      }
                    },
                    "required": [
                      "pageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta-ads_get_instagram_insights": {
      "post": {
        "tags": [
          "meta-ads"
        ],
        "summary": "get_instagram_insights",
        "operationId": "meta-ads_get_instagram_insights",
        "description": "Get Instagram Business/Creator account insights. Requires the IG user ID linked to a managed Facebook Page.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta-ads_get_instagram_insights\",\"arguments\":{\"igUserId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "igUserId": {
                        "type": "string",
                        "description": "Instagram user ID (from the linked Facebook Page)."
                      },
                      "metric": {
                        "type": "string",
                        "description": "Comma-separated metrics. Default \"reach,impressions,profile_views,follower_count\"."
                      },
                      "period": {
                        "type": "string",
                        "description": "\"day\" (default), \"week\", \"days_28\"."
                      },
                      "since": {
                        "type": "string"
                      },
                      "until": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "igUserId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=meta-ads_search_interests": {
      "post": {
        "tags": [
          "meta-ads"
        ],
        "summary": "search_interests",
        "operationId": "meta-ads_search_interests",
        "description": "Search Meta targeting interests for audience planning. Returns interest IDs and audience size estimates.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"meta-ads_search_interests\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search query string."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results. Default 10."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_list_workflows": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "list_workflows",
        "operationId": "n8n_list_workflows",
        "description": "List all workflows. Supports filtering by name, tags, and active status, plus pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_list_workflows\",\"arguments\":{\"name\":\"<string>\",\"active\":false}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Filter by workflow name (partial match)"
                      },
                      "active": {
                        "type": "boolean",
                        "description": "Filter by active status"
                      },
                      "tags": {
                        "type": "string",
                        "description": "Comma-separated tag names to filter by."
                      },
                      "projectId": {
                        "type": "string",
                        "description": "Filter by n8n project ID."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results to return (max 250)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor from previous response (nextCursor)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_get_workflow": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "get_workflow",
        "operationId": "n8n_get_workflow",
        "description": "Get a specific workflow by ID, including all nodes and connections.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_get_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_activate_workflow": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "activate_workflow",
        "operationId": "n8n_activate_workflow",
        "description": "Activate a workflow so it runs on its trigger schedule.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_activate_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to activate"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_deactivate_workflow": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "deactivate_workflow",
        "operationId": "n8n_deactivate_workflow",
        "description": "Deactivate a workflow so it stops running.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_deactivate_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to deactivate"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_execute_workflow": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "execute_workflow",
        "operationId": "n8n_execute_workflow",
        "description": "Manually execute/run a workflow. Optionally pass input data.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_execute_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to execute"
                      },
                      "data": {
                        "type": "object",
                        "description": "Input data to pass to the workflow"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_list_executions": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "list_executions",
        "operationId": "n8n_list_executions",
        "description": "List workflow executions. Filter by workflow ID or status, with pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_list_executions\",\"arguments\":{\"workflowId\":\"<string>\",\"status\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string",
                        "description": "Filter by workflow ID"
                      },
                      "status": {
                        "type": "string",
                        "description": "Filter: error, success, waiting, running"
                      },
                      "includeData": {
                        "type": "boolean",
                        "description": "Include execution data in results."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (max 250)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_get_execution": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "get_execution",
        "operationId": "n8n_get_execution",
        "description": "Get details of a specific execution including input/output data.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_get_execution\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Execution ID"
                      },
                      "includeData": {
                        "type": "boolean",
                        "description": "Include full execution data"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_list_credentials": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "list_credentials",
        "operationId": "n8n_list_credentials",
        "description": "List all saved credentials (without sensitive data).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_list_credentials\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_create_workflow": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "create_workflow",
        "operationId": "n8n_create_workflow",
        "description": "Create a new n8n workflow. Returns the created workflow including its new ID. Workflows are created inactive — use activate_workflow after.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_create_workflow\",\"arguments\":{\"name\":\"<string>\",\"nodes\":[],\"connections\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Workflow name (shown in n8n UI)"
                      },
                      "nodes": {
                        "type": "array",
                        "description": "Array of node objects. Each node has: { id, name, type, typeVersion, position: [x,y], parameters: {...}, credentials?: {...} }"
                      },
                      "connections": {
                        "type": "object",
                        "description": "Node connection map keyed by source node name, e.g. { \"Webhook\": { \"main\": [[{\"node\": \"HTTP Request\", \"type\": \"main\", \"index\": 0}]] } }"
                      },
                      "settings": {
                        "type": "object",
                        "description": "Optional workflow settings (executionOrder, timezone, errorWorkflow, saveDataErrorExecution, etc.)"
                      }
                    },
                    "required": [
                      "name",
                      "nodes",
                      "connections"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_update_workflow": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "update_workflow",
        "operationId": "n8n_update_workflow",
        "description": "Update an existing workflow. IMPORTANT: call get_workflow first to fetch the current state, modify the fields you need, then pass the full object here. Read-only fields (id, active, createdAt, updatedAt, versionId, tags, triggerCount, pinData, meta, staticData) are automatically stripped — n8n rejects them in PUT bodies.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_update_workflow\",\"arguments\":{\"id\":\"<string>\",\"name\":\"<string>\",\"nodes\":[],\"connections\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to update"
                      },
                      "name": {
                        "type": "string",
                        "description": "Workflow name"
                      },
                      "nodes": {
                        "type": "array",
                        "description": "Full nodes array (replaces existing)"
                      },
                      "connections": {
                        "type": "object",
                        "description": "Full connections map (replaces existing)"
                      },
                      "settings": {
                        "type": "object",
                        "description": "Workflow settings (replaces existing)"
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "nodes",
                      "connections"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_delete_workflow": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "delete_workflow",
        "operationId": "n8n_delete_workflow",
        "description": "Permanently delete a workflow. Cannot be undone. Any active triggers will stop firing.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_delete_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to delete"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_create_credential": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "create_credential",
        "operationId": "n8n_create_credential",
        "description": "Create a new n8n credential (API key, OAuth config, etc.). Use get_credential_schema first to see required data fields for the given type.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_create_credential\",\"arguments\":{\"name\":\"<string>\",\"type\":\"<string>\",\"data\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Display name for the credential"
                      },
                      "type": {
                        "type": "string",
                        "description": "Credential type name, e.g. \"hubspotOAuth2Api\", \"gmailOAuth2\", \"httpHeaderAuth\", \"postgres\""
                      },
                      "data": {
                        "type": "object",
                        "description": "Credential data matching the type schema (e.g. { apiKey: \"...\" } or { accessToken: \"...\", refreshToken: \"...\" })"
                      }
                    },
                    "required": [
                      "name",
                      "type",
                      "data"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_delete_credential": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "delete_credential",
        "operationId": "n8n_delete_credential",
        "description": "Permanently delete a credential. Any workflows referencing it will break on next execution.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_delete_credential\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Credential ID to delete"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_get_credential_schema": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "get_credential_schema",
        "operationId": "n8n_get_credential_schema",
        "description": "Get the JSON schema for a credential type, showing which fields are required in the data object when creating it.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_get_credential_schema\",\"arguments\":{\"type\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "description": "Credential type name, e.g. \"hubspotOAuth2Api\""
                      }
                    },
                    "required": [
                      "type"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_list_tags": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "list_tags",
        "operationId": "n8n_list_tags",
        "description": "List all n8n tags.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_list_tags\",\"arguments\":{\"limit\":0,\"cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (max 250)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_create_tag": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "create_tag",
        "operationId": "n8n_create_tag",
        "description": "Create a new tag.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_create_tag\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Tag name."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_update_tag": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "update_tag",
        "operationId": "n8n_update_tag",
        "description": "Rename a tag.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_update_tag\",\"arguments\":{\"id\":\"<string>\",\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Tag ID."
                      },
                      "name": {
                        "type": "string",
                        "description": "New tag name."
                      }
                    },
                    "required": [
                      "id",
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_delete_tag": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "delete_tag",
        "operationId": "n8n_delete_tag",
        "description": "Delete a tag. Workflows currently tagged with it will have the tag removed.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_delete_tag\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Tag ID to delete."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_get_workflow_tags": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "get_workflow_tags",
        "operationId": "n8n_get_workflow_tags",
        "description": "Get the tags assigned to a workflow.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_get_workflow_tags\",\"arguments\":{\"workflowId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string",
                        "description": "Workflow ID."
                      }
                    },
                    "required": [
                      "workflowId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=n8n_assign_workflow_tags": {
      "post": {
        "tags": [
          "n8n"
        ],
        "summary": "assign_workflow_tags",
        "operationId": "n8n_assign_workflow_tags",
        "description": "Set the tags for a workflow (replaces existing). Pass array of tag IDs.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"n8n_assign_workflow_tags\",\"arguments\":{\"workflowId\":\"<string>\",\"tagIds\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string",
                        "description": "Workflow ID."
                      },
                      "tagIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of tag IDs to assign (replaces current set)."
                      }
                    },
                    "required": [
                      "workflowId",
                      "tagIds"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_search": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "search",
        "operationId": "notion_search",
        "description": "Search pages and databases in the workspace the integration has access to. Title-match only (Notion limitation). Use filter to narrow to just pages or databases.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_search\",\"arguments\":{\"query\":\"<string>\",\"filter\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Text to match against page/database titles."
                      },
                      "filter": {
                        "type": "object",
                        "description": "Shape: { value: \"page\" | \"database\", property: \"object\" }. Restricts to one type."
                      },
                      "sort": {
                        "type": "object",
                        "description": "Shape: { direction: \"ascending\"|\"descending\", timestamp: \"last_edited_time\" }."
                      },
                      "page_size": {
                        "type": "number",
                        "description": "Results per page. Default 100, max 100."
                      },
                      "start_cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_get_page": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "get_page",
        "operationId": "notion_get_page",
        "description": "Get a page's properties by ID. Does NOT include block content — use get_block_children for that.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_get_page\",\"arguments\":{\"page_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "page_id": {
                        "type": "string",
                        "description": "Notion page ID (UUID or with dashes)."
                      }
                    },
                    "required": [
                      "page_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_create_page": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "create_page",
        "operationId": "notion_create_page",
        "description": "Create a new page. Parent must be a database (for DB rows) or a page (for child pages). Properties match the parent database schema.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_create_page\",\"arguments\":{\"parent\":{},\"properties\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parent": {
                        "type": "object",
                        "description": "Parent ref: { database_id: \"...\" } or { page_id: \"...\" } or { workspace: true }."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Property values. Shape matches parent database schema. For page children, only \"title\" is required."
                      },
                      "children": {
                        "type": "array",
                        "description": "Optional array of block children to seed the new page. Shape: [{object:\"block\", type:\"paragraph\"|\"heading_1\"|..., ...}]"
                      },
                      "icon": {
                        "type": "object",
                        "description": "Icon: { type:\"emoji\", emoji:\"📘\" } or external URL."
                      },
                      "cover": {
                        "type": "object",
                        "description": "Cover image: { type:\"external\", external:{url:\"...\"} }."
                      }
                    },
                    "required": [
                      "parent",
                      "properties"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_update_page": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "update_page",
        "operationId": "notion_update_page",
        "description": "Update page properties (not block content). Can also archive/unarchive. To edit page body, use append_blocks or update individual blocks.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_update_page\",\"arguments\":{\"page_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "page_id": {
                        "type": "string",
                        "description": "Page ID."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Properties to update."
                      },
                      "archived": {
                        "type": "boolean",
                        "description": "true to archive, false to unarchive."
                      },
                      "icon": {
                        "type": "object"
                      },
                      "cover": {
                        "type": "object"
                      }
                    },
                    "required": [
                      "page_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_query_database": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "query_database",
        "operationId": "notion_query_database",
        "description": "Query a database (list rows) with filter + sorts. Returns paginated page objects. Use for \"show me all rows where X\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_query_database\",\"arguments\":{\"database_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "database_id": {
                        "type": "string",
                        "description": "Database ID."
                      },
                      "filter": {
                        "type": "object",
                        "description": "Notion filter shape. E.g. { property: \"Status\", select: { equals: \"Done\" } } or compound { and: [...] } / { or: [...] }."
                      },
                      "sorts": {
                        "type": "array",
                        "description": "Array of { property, direction } or { timestamp, direction }."
                      },
                      "page_size": {
                        "type": "number",
                        "description": "Default 100, max 100."
                      },
                      "start_cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      }
                    },
                    "required": [
                      "database_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_get_database": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "get_database",
        "operationId": "notion_get_database",
        "description": "Get a database's schema + metadata (properties, title, etc.). Use before querying to see available properties.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_get_database\",\"arguments\":{\"database_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "database_id": {
                        "type": "string",
                        "description": "Database ID."
                      }
                    },
                    "required": [
                      "database_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_create_database": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "create_database",
        "operationId": "notion_create_database",
        "description": "Create a new database as a child of a page. Properties define the schema (name + type per column).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_create_database\",\"arguments\":{\"parent\":{},\"title\":[],\"properties\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parent": {
                        "type": "object",
                        "description": "Must be { type: \"page_id\", page_id: \"...\" }."
                      },
                      "title": {
                        "type": "array",
                        "description": "Rich-text title array: [{type:\"text\",text:{content:\"Name\"}}]."
                      },
                      "properties": {
                        "type": "object",
                        "description": "Schema, keyed by property name. Each value = {<type>: {...}}. Types: title, rich_text, number, select, multi_select, date, checkbox, url, email, phone_number, people, files, relation."
                      },
                      "icon": {
                        "type": "object"
                      },
                      "cover": {
                        "type": "object"
                      }
                    },
                    "required": [
                      "parent",
                      "title",
                      "properties"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_get_block_children": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "get_block_children",
        "operationId": "notion_get_block_children",
        "description": "List children (body content) of a page or block. Returns array of block objects with type + content. Paginate via start_cursor.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_get_block_children\",\"arguments\":{\"block_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "block_id": {
                        "type": "string",
                        "description": "Page ID or parent block ID."
                      },
                      "page_size": {
                        "type": "number",
                        "description": "Default 100, max 100."
                      },
                      "start_cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      }
                    },
                    "required": [
                      "block_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_append_blocks": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "append_blocks",
        "operationId": "notion_append_blocks",
        "description": "Append blocks to a page or block. Use for adding content to an existing page (paragraphs, headings, lists, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_append_blocks\",\"arguments\":{\"block_id\":\"<string>\",\"children\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "block_id": {
                        "type": "string",
                        "description": "Parent page or block ID."
                      },
                      "children": {
                        "type": "array",
                        "description": "Array of block objects. E.g. [{object:\"block\", type:\"paragraph\", paragraph:{rich_text:[{type:\"text\",text:{content:\"Hello\"}}]}}]."
                      },
                      "after": {
                        "type": "string",
                        "description": "Optional block ID — append after this specific block."
                      }
                    },
                    "required": [
                      "block_id",
                      "children"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_update_block": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "update_block",
        "operationId": "notion_update_block",
        "description": "Update a single block (e.g. edit paragraph text, check a to-do, change heading). Body shape depends on block type.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_update_block\",\"arguments\":{\"block_id\":\"<string>\",\"body\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "block_id": {
                        "type": "string",
                        "description": "Block ID."
                      },
                      "body": {
                        "type": "object",
                        "description": "Type-specific update body, e.g. { paragraph: { rich_text: [...] } } or { archived: true }."
                      }
                    },
                    "required": [
                      "block_id",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_delete_block": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "delete_block",
        "operationId": "notion_delete_block",
        "description": "Archive (soft-delete) a block.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_delete_block\",\"arguments\":{\"block_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "block_id": {
                        "type": "string",
                        "description": "Block ID."
                      }
                    },
                    "required": [
                      "block_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_list_users": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "list_users",
        "operationId": "notion_list_users",
        "description": "List users in the workspace the integration has access to.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_list_users\",\"arguments\":{\"page_size\":0,\"start_cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "page_size": {
                        "type": "number",
                        "description": "Default 100."
                      },
                      "start_cursor": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=notion_get_me": {
      "post": {
        "tags": [
          "notion"
        ],
        "summary": "get_me",
        "operationId": "notion_get_me",
        "description": "Get the bot/integration user info (who the API key authenticates as).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"notion_get_me\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_ask": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "ask",
        "operationId": "openai_ask",
        "description": "Ask OpenAI a question. Single-turn wrapper over /chat/completions. Default model \"gpt-4o\". Use \"gpt-4o-mini\" for cheap/fast, \"o1\"/\"o1-mini\" for reasoning-heavy tasks.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_ask\",\"arguments\":{\"question\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "question": {
                        "type": "string",
                        "description": "The question."
                      },
                      "model": {
                        "type": "string",
                        "description": "OpenAI model. \"gpt-4o\" (default), \"gpt-4o-mini\" (cheapest), \"o1\"/\"o1-mini\" (reasoning)."
                      },
                      "system": {
                        "type": "string",
                        "description": "Optional system prompt."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max output tokens. Default 1024."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Temperature (0-2). Default 1.0."
                      }
                    },
                    "required": [
                      "question"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_chat_completion": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "chat_completion",
        "operationId": "openai_chat_completion",
        "description": "Raw OpenAI /chat/completions call. Multi-turn. Pass your own messages array plus optional system prompt, tools, or response_format (for JSON mode).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_chat_completion\",\"arguments\":{\"model\":\"<string>\",\"messages\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "OpenAI model name."
                      },
                      "messages": {
                        "type": "array",
                        "description": "OpenAI message format: [{role: \"system\"|\"user\"|\"assistant\"|\"tool\", content: \"...\"}]."
                      },
                      "system": {
                        "type": "string",
                        "description": "System prompt — prepended as a system-role message if provided."
                      },
                      "max_tokens": {
                        "type": "number"
                      },
                      "temperature": {
                        "type": "number"
                      },
                      "top_p": {
                        "type": "number"
                      },
                      "tools": {
                        "type": "array",
                        "description": "Function/tool definitions for tool calling."
                      },
                      "response_format": {
                        "type": "object",
                        "description": "e.g. {type: \"json_object\"} for JSON mode."
                      }
                    },
                    "required": [
                      "model",
                      "messages"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_brand_visibility_check": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "brand_visibility_check",
        "operationId": "openai_brand_visibility_check",
        "description": "AEO helper — asks OpenAI a set of comparison questions and reports whether the target brand is mentioned. Same shape as anthropic/grok/perplexity equivalents — run the same prompt pack across all engines for unified AEO tracking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_brand_visibility_check\",\"arguments\":{\"brand\":\"<string>\",\"questions\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "brand": {
                        "type": "string",
                        "description": "Brand name to check for."
                      },
                      "questions": {
                        "type": "array",
                        "description": "Comparison prompts."
                      },
                      "model": {
                        "type": "string",
                        "description": "OpenAI model. Default \"gpt-4o\"."
                      }
                    },
                    "required": [
                      "brand",
                      "questions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_embeddings": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "embeddings",
        "operationId": "openai_embeddings",
        "description": "Generate vector embeddings for text. Default model \"text-embedding-3-small\" (1536 dims, cheap). Use \"text-embedding-3-large\" for higher quality (3072 dims).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_embeddings\",\"arguments\":{\"input\":null}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "input": {
                        "description": "Text — string or array of strings for batching."
                      },
                      "model": {
                        "type": "string",
                        "description": "Embedding model. Default \"text-embedding-3-small\"."
                      }
                    },
                    "required": [
                      "input"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_image_generate": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "image_generate",
        "operationId": "openai_image_generate",
        "description": "Generate an image with DALL·E 3. Returns URL(s). Sizes: 1024x1024 (default), 1792x1024, 1024x1792. Quality \"hd\" doubles cost.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_image_generate\",\"arguments\":{\"prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "prompt": {
                        "type": "string",
                        "description": "Image description."
                      },
                      "size": {
                        "type": "string",
                        "description": "\"1024x1024\" (default), \"1792x1024\", or \"1024x1792\"."
                      },
                      "quality": {
                        "type": "string",
                        "description": "\"standard\" (default) or \"hd\"."
                      },
                      "model": {
                        "type": "string",
                        "description": "Default \"dall-e-3\"."
                      }
                    },
                    "required": [
                      "prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_moderations": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "moderations",
        "operationId": "openai_moderations",
        "description": "Check text for policy violations (hate, harassment, self-harm, sexual, violence). Free. Returns per-category flags and scores.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_moderations\",\"arguments\":{\"input\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "input": {
                        "type": "string",
                        "description": "Text to moderate."
                      }
                    },
                    "required": [
                      "input"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_list_assistants": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "list_assistants",
        "operationId": "openai_list_assistants",
        "description": "List Assistants API objects. Optional limit (default 20, max 100). Sends OpenAI-Beta: assistants=v2 header automatically.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_list_assistants\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max assistants to return. Default 20."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=openai_list_models": {
      "post": {
        "tags": [
          "openai"
        ],
        "summary": "list_models",
        "operationId": "openai_list_models",
        "description": "List available OpenAI models with IDs, ownership, and creation timestamps.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"openai_list_models\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_list_workflows": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "list_workflows",
        "operationId": "optimizer_list_workflows",
        "description": "List workflows on the shared n8n instance. Filter by name, tags, active status. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_list_workflows\",\"arguments\":{\"name\":\"<string>\",\"active\":false}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Filter by workflow name (partial match)"
                      },
                      "active": {
                        "type": "boolean",
                        "description": "Filter by active status"
                      },
                      "tags": {
                        "type": "string",
                        "description": "Comma-separated tag names to filter by."
                      },
                      "projectId": {
                        "type": "string",
                        "description": "Filter by n8n project ID."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results to return (max 250)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor from previous response (nextCursor)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_get_workflow": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "get_workflow",
        "operationId": "optimizer_get_workflow",
        "description": "Get a specific workflow by ID, including all nodes and connections. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_get_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_activate_workflow": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "activate_workflow",
        "operationId": "optimizer_activate_workflow",
        "description": "Activate a workflow so it runs on its trigger schedule. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_activate_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to activate"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_deactivate_workflow": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "deactivate_workflow",
        "operationId": "optimizer_deactivate_workflow",
        "description": "Deactivate a workflow so it stops running. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_deactivate_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to deactivate"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_execute_workflow": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "execute_workflow",
        "operationId": "optimizer_execute_workflow",
        "description": "Manually execute/run a workflow on the shared n8n. Pass input data in `data`. Good for bulk CRM updates, mass mailers, sync jobs, anything that would time out inside a single tool call. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_execute_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to execute"
                      },
                      "data": {
                        "type": "object",
                        "description": "Input data to pass to the workflow"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_list_executions": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "list_executions",
        "operationId": "optimizer_list_executions",
        "description": "List workflow executions. Filter by workflow ID or status, with pagination. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_list_executions\",\"arguments\":{\"workflowId\":\"<string>\",\"status\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string",
                        "description": "Filter by workflow ID"
                      },
                      "status": {
                        "type": "string",
                        "description": "Filter: error, success, waiting, running"
                      },
                      "includeData": {
                        "type": "boolean",
                        "description": "Include execution data in results."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (max 250)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_get_execution": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "get_execution",
        "operationId": "optimizer_get_execution",
        "description": "Get details of a specific execution including input/output data. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_get_execution\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Execution ID"
                      },
                      "includeData": {
                        "type": "boolean",
                        "description": "Include full execution data"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_list_credentials": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "list_credentials",
        "operationId": "optimizer_list_credentials",
        "description": "List saved credentials on the shared n8n (names/types only, no secrets). Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_list_credentials\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_create_workflow": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "create_workflow",
        "operationId": "optimizer_create_workflow",
        "description": "Create a new workflow on the shared n8n. Returns the workflow with its new ID. Workflows are created inactive — use activate_workflow after. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_create_workflow\",\"arguments\":{\"name\":\"<string>\",\"nodes\":[],\"connections\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Workflow name (shown in n8n UI)"
                      },
                      "nodes": {
                        "type": "array",
                        "description": "Array of node objects. Each node: { id, name, type, typeVersion, position: [x,y], parameters: {...}, credentials?: {...} }"
                      },
                      "connections": {
                        "type": "object",
                        "description": "Node connection map keyed by source node name."
                      },
                      "settings": {
                        "type": "object",
                        "description": "Optional workflow settings (executionOrder, timezone, errorWorkflow, saveDataErrorExecution, etc.)"
                      }
                    },
                    "required": [
                      "name",
                      "nodes",
                      "connections"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_update_workflow": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "update_workflow",
        "operationId": "optimizer_update_workflow",
        "description": "Update an existing workflow. Call get_workflow first to fetch current state, modify, then pass full object here. Read-only fields are stripped automatically. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_update_workflow\",\"arguments\":{\"id\":\"<string>\",\"name\":\"<string>\",\"nodes\":[],\"connections\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to update"
                      },
                      "name": {
                        "type": "string",
                        "description": "Workflow name"
                      },
                      "nodes": {
                        "type": "array",
                        "description": "Full nodes array (replaces existing)"
                      },
                      "connections": {
                        "type": "object",
                        "description": "Full connections map (replaces existing)"
                      },
                      "settings": {
                        "type": "object",
                        "description": "Workflow settings (replaces existing)"
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "nodes",
                      "connections"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_delete_workflow": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "delete_workflow",
        "operationId": "optimizer_delete_workflow",
        "description": "Permanently delete a workflow from the shared n8n. Cannot be undone. Active triggers stop firing. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_delete_workflow\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Workflow ID to delete"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_list_tags": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "list_tags",
        "operationId": "optimizer_list_tags",
        "description": "List all n8n tags on the shared instance. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_list_tags\",\"arguments\":{\"limit\":0,\"cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (max 250)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_create_tag": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "create_tag",
        "operationId": "optimizer_create_tag",
        "description": "Create a new tag on the shared n8n. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_create_tag\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Tag name."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_get_workflow_tags": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "get_workflow_tags",
        "operationId": "optimizer_get_workflow_tags",
        "description": "Get the tags assigned to a workflow. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_get_workflow_tags\",\"arguments\":{\"workflowId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string",
                        "description": "Workflow ID."
                      }
                    },
                    "required": [
                      "workflowId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_assign_workflow_tags": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "assign_workflow_tags",
        "operationId": "optimizer_assign_workflow_tags",
        "description": "Set the tags for a workflow (replaces existing). Pass array of tag IDs. Runs on the shared router n8n instance — visible to other router users.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_assign_workflow_tags\",\"arguments\":{\"workflowId\":\"<string>\",\"tagIds\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "workflowId": {
                        "type": "string",
                        "description": "Workflow ID."
                      },
                      "tagIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of tag IDs to assign (replaces current set)."
                      }
                    },
                    "required": [
                      "workflowId",
                      "tagIds"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=optimizer_status": {
      "post": {
        "tags": [
          "optimizer"
        ],
        "summary": "status",
        "operationId": "optimizer_status",
        "description": "Quick health check for the shared n8n. Returns { configured, reachable, workflowCount } without exposing credentials. Use this first to verify the optimizer is set up before trying other tools.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"optimizer_status\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=perplexity_ask": {
      "post": {
        "tags": [
          "perplexity"
        ],
        "summary": "ask",
        "operationId": "perplexity_ask",
        "description": "Ask Perplexity a question. Returns an AI-generated answer with web citations. Use the default \"sonar\" model for fast cheap answers. Use \"sonar-pro\" for higher quality + more sources. Use \"sonar-deep-research\" for comprehensive multi-step research. Perfect for AEO: ask \"What are the best X companies?\" and see which brands Perplexity recommends.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"perplexity_ask\",\"arguments\":{\"question\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "question": {
                        "type": "string",
                        "description": "The question to ask."
                      },
                      "model": {
                        "type": "string",
                        "description": "Perplexity model. Options: \"sonar\" (default, cheapest), \"sonar-pro\", \"sonar-reasoning\", \"sonar-reasoning-pro\", \"sonar-deep-research\"."
                      },
                      "system_prompt": {
                        "type": "string",
                        "description": "Optional system prompt to set context/tone. E.g. \"Answer like a brand analyst.\""
                      },
                      "search_domain_filter": {
                        "type": "array",
                        "description": "Whitelist/blacklist domains. Prefix with \"-\" to exclude, e.g. [\"reddit.com\", \"-pinterest.com\"]. Max 3."
                      },
                      "search_recency_filter": {
                        "type": "string",
                        "description": "\"day\", \"week\", \"month\", or \"year\". Restricts search to recent content. Useful for fresh brand tracking."
                      },
                      "return_related_questions": {
                        "type": "boolean",
                        "description": "If true, Perplexity returns follow-up question suggestions."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max tokens in answer. Default 512."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Sampling temperature (0-2). Default 0.2."
                      }
                    },
                    "required": [
                      "question"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=perplexity_chat_completion": {
      "post": {
        "tags": [
          "perplexity"
        ],
        "summary": "chat_completion",
        "operationId": "perplexity_chat_completion",
        "description": "Raw Perplexity chat/completions call (OpenAI-compatible). Pass your own messages array for multi-turn conversations. Returns choices + citations + search_results. Use this for advanced use cases; use \"ask\" for simple single-turn.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"perplexity_chat_completion\",\"arguments\":{\"model\":\"<string>\",\"messages\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "model": {
                        "type": "string",
                        "description": "Perplexity model name."
                      },
                      "messages": {
                        "type": "array",
                        "description": "OpenAI-style chat messages: [{role: \"system\"|\"user\"|\"assistant\", content: \"...\"}]."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max tokens. Default 512."
                      },
                      "temperature": {
                        "type": "number",
                        "description": "Temperature. Default 0.2."
                      },
                      "top_p": {
                        "type": "number",
                        "description": "Top-p sampling. Default 0.9."
                      },
                      "search_domain_filter": {
                        "type": "array",
                        "description": "Domain whitelist/blacklist."
                      },
                      "search_recency_filter": {
                        "type": "string",
                        "description": "\"day\", \"week\", \"month\", \"year\"."
                      },
                      "return_images": {
                        "type": "boolean",
                        "description": "Include image results. Default false."
                      },
                      "return_related_questions": {
                        "type": "boolean",
                        "description": "Suggest follow-up questions."
                      },
                      "stream": {
                        "type": "boolean",
                        "description": "Stream response tokens. Not supported in MCP adapter — leave false."
                      }
                    },
                    "required": [
                      "model",
                      "messages"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=perplexity_brand_visibility_check": {
      "post": {
        "tags": [
          "perplexity"
        ],
        "summary": "brand_visibility_check",
        "operationId": "perplexity_brand_visibility_check",
        "description": "Convenience tool for AEO: asks Perplexity a set of comparison questions about a brand/product/category and returns whether the target brand appears in the answer. Good for tracking share-of-voice in AI answers over time.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"perplexity_brand_visibility_check\",\"arguments\":{\"brand\":\"<string>\",\"questions\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "brand": {
                        "type": "string",
                        "description": "Brand name to check for (case-insensitive match in answer)."
                      },
                      "questions": {
                        "type": "array",
                        "description": "List of comparison prompts to ask. E.g. [\"What are the best CRMs for small business?\", \"What are the top email marketing tools in 2026?\"]."
                      },
                      "model": {
                        "type": "string",
                        "description": "Perplexity model. Default \"sonar\"."
                      }
                    },
                    "required": [
                      "brand",
                      "questions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=perplexity_deep_research": {
      "post": {
        "tags": [
          "perplexity"
        ],
        "summary": "deep_research",
        "operationId": "perplexity_deep_research",
        "description": "Perplexity Deep Research — multi-step research report with exhaustive citations. Takes longer and costs more than ask/chat_completion but returns a thorough, structured answer instead of a short paragraph. Use for in-depth topic reports, competitive research, or due diligence. Model defaults to \"sonar-deep-research\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"perplexity_deep_research\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "The research question or topic."
                      },
                      "model": {
                        "type": "string",
                        "description": "Deep-research model. Default \"sonar-deep-research\"."
                      },
                      "system": {
                        "type": "string",
                        "description": "Optional system prompt to steer the research (audience, tone, focus areas)."
                      },
                      "max_tokens": {
                        "type": "number",
                        "description": "Max output tokens for the final report. Default 4096 (deep research can emit a lot)."
                      },
                      "search_domain_filter": {
                        "type": "array",
                        "description": "Optional list of domains to bias the search toward (e.g. [\"nytimes.com\", \"reuters.com\"])."
                      },
                      "search_recency_filter": {
                        "type": "string",
                        "description": "Recency window: \"hour\" | \"day\" | \"week\" | \"month\" | \"year\". Omit for no recency filter."
                      },
                      "return_related_questions": {
                        "type": "boolean",
                        "description": "If true, Perplexity also returns follow-up questions. Default false."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_search_persons": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "search_persons",
        "operationId": "pipedrive_search_persons",
        "description": "Search for persons/contacts in Pipedrive by name, email, or phone.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_search_persons\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term (name, email, phone, etc.)."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Maximum results to return (default 10)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_get_person": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "get_person",
        "operationId": "pipedrive_get_person",
        "description": "Get full details for a person by their Pipedrive ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_get_person\",\"arguments\":{\"personId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "personId": {
                        "type": "number",
                        "description": "The person ID."
                      }
                    },
                    "required": [
                      "personId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_create_person": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "create_person",
        "operationId": "pipedrive_create_person",
        "description": "Create a new person/contact in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_create_person\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Full name (required)."
                      },
                      "email": {
                        "type": "string",
                        "description": "Email address."
                      },
                      "phone": {
                        "type": "string",
                        "description": "Phone number."
                      },
                      "org_id": {
                        "type": "number",
                        "description": "Organization ID to link to."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_update_person": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "update_person",
        "operationId": "pipedrive_update_person",
        "description": "Update an existing person in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_update_person\",\"arguments\":{\"personId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "personId": {
                        "type": "number",
                        "description": "Person ID to update (required)."
                      },
                      "name": {
                        "type": "string",
                        "description": "Updated name."
                      },
                      "email": {
                        "type": "string",
                        "description": "Updated email."
                      },
                      "phone": {
                        "type": "string",
                        "description": "Updated phone."
                      }
                    },
                    "required": [
                      "personId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_list_deals": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "list_deals",
        "operationId": "pipedrive_list_deals",
        "description": "List deals with optional status/stage/owner filter, sorting, and pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_list_deals\",\"arguments\":{\"status\":\"<string>\",\"stage_id\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "description": "Filter by status: open, won, lost, deleted, all_not_deleted (default \"open\")."
                      },
                      "stage_id": {
                        "type": "number",
                        "description": "Filter by pipeline stage ID. Use list_stages to discover."
                      },
                      "user_id": {
                        "type": "number",
                        "description": "Filter by owner user ID. 0 = current user."
                      },
                      "filter_id": {
                        "type": "number",
                        "description": "Pipedrive saved filter ID."
                      },
                      "sort": {
                        "type": "string",
                        "description": "Sort by field (e.g. \"add_time DESC\", \"value DESC\", \"close_time ASC\")."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 20, Pipedrive hard cap 500 per page)."
                      },
                      "start": {
                        "type": "number",
                        "description": "Pagination offset (default 0)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_get_deal": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "get_deal",
        "operationId": "pipedrive_get_deal",
        "description": "Get full details for a deal by its Pipedrive ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_get_deal\",\"arguments\":{\"dealId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "dealId": {
                        "type": "number",
                        "description": "The deal ID."
                      }
                    },
                    "required": [
                      "dealId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_create_deal": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "create_deal",
        "operationId": "pipedrive_create_deal",
        "description": "Create a new deal in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_create_deal\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Deal title (required)."
                      },
                      "value": {
                        "type": "number",
                        "description": "Deal monetary value."
                      },
                      "currency": {
                        "type": "string",
                        "description": "Currency code (e.g. USD, EUR)."
                      },
                      "person_id": {
                        "type": "number",
                        "description": "Person ID to associate."
                      },
                      "org_id": {
                        "type": "number",
                        "description": "Organization ID to associate."
                      },
                      "stage_id": {
                        "type": "number",
                        "description": "Pipeline stage ID."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_update_deal": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "update_deal",
        "operationId": "pipedrive_update_deal",
        "description": "Update an existing deal in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_update_deal\",\"arguments\":{\"dealId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "dealId": {
                        "type": "number",
                        "description": "Deal ID to update (required)."
                      },
                      "title": {
                        "type": "string",
                        "description": "Updated title."
                      },
                      "value": {
                        "type": "number",
                        "description": "Updated value."
                      },
                      "stage_id": {
                        "type": "number",
                        "description": "Move to a different stage."
                      },
                      "status": {
                        "type": "string",
                        "description": "Set status: open, won, lost, deleted."
                      }
                    },
                    "required": [
                      "dealId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_list_organizations": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "list_organizations",
        "operationId": "pipedrive_list_organizations",
        "description": "List organizations in Pipedrive with pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_list_organizations\",\"arguments\":{\"limit\":0,\"start\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 20)."
                      },
                      "start": {
                        "type": "number",
                        "description": "Pagination offset (default 0)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_search_organizations": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "search_organizations",
        "operationId": "pipedrive_search_organizations",
        "description": "Search organizations in Pipedrive by name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_search_organizations\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 10)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_create_organization": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "create_organization",
        "operationId": "pipedrive_create_organization",
        "description": "Create a new organization in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_create_organization\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Organization name (required)."
                      },
                      "address": {
                        "type": "string",
                        "description": "Organization address."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_list_activities": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "list_activities",
        "operationId": "pipedrive_list_activities",
        "description": "List activities (calls, meetings, tasks, etc.) in Pipedrive with filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_list_activities\",\"arguments\":{\"limit\":0,\"start\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 20, max 500)."
                      },
                      "start": {
                        "type": "number",
                        "description": "Pagination offset (default 0)."
                      },
                      "type": {
                        "type": "string",
                        "description": "Filter by activity type (comma-separated for multiple: \"call,meeting\")."
                      },
                      "user_id": {
                        "type": "number",
                        "description": "Filter by owner user ID. 0 = current user."
                      },
                      "done": {
                        "type": "number",
                        "description": "Filter by completion: 0 = not done, 1 = done."
                      },
                      "start_date": {
                        "type": "string",
                        "description": "Start of due-date range (YYYY-MM-DD)."
                      },
                      "end_date": {
                        "type": "string",
                        "description": "End of due-date range (YYYY-MM-DD)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_create_activity": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "create_activity",
        "operationId": "pipedrive_create_activity",
        "description": "Create an activity (call, meeting, task, deadline, email) in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_create_activity\",\"arguments\":{\"subject\":\"<string>\",\"type\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Activity subject (required)."
                      },
                      "type": {
                        "type": "string",
                        "description": "Activity type: call, meeting, task, deadline, email (required)."
                      },
                      "due_date": {
                        "type": "string",
                        "description": "Due date in YYYY-MM-DD format."
                      },
                      "deal_id": {
                        "type": "number",
                        "description": "Deal ID to associate."
                      },
                      "person_id": {
                        "type": "number",
                        "description": "Person ID to associate."
                      },
                      "note": {
                        "type": "string",
                        "description": "Activity note/description."
                      }
                    },
                    "required": [
                      "subject",
                      "type"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_update_activity": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "update_activity",
        "operationId": "pipedrive_update_activity",
        "description": "Update an existing activity in Pipedrive. Pass activityId + any fields to change.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_update_activity\",\"arguments\":{\"activityId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "activityId": {
                        "type": "number",
                        "description": "Activity ID to update (required)."
                      },
                      "subject": {
                        "type": "string",
                        "description": "Updated subject."
                      },
                      "type": {
                        "type": "string",
                        "description": "Updated type."
                      },
                      "due_date": {
                        "type": "string",
                        "description": "Updated due date (YYYY-MM-DD)."
                      },
                      "due_time": {
                        "type": "string",
                        "description": "Due time (HH:MM)."
                      },
                      "duration": {
                        "type": "string",
                        "description": "Duration (HH:MM)."
                      },
                      "deal_id": {
                        "type": "number",
                        "description": "Associated deal."
                      },
                      "person_id": {
                        "type": "number",
                        "description": "Associated person."
                      },
                      "org_id": {
                        "type": "number",
                        "description": "Associated organization."
                      },
                      "note": {
                        "type": "string",
                        "description": "Updated note."
                      },
                      "done": {
                        "type": "number",
                        "description": "0 = not done, 1 = done."
                      }
                    },
                    "required": [
                      "activityId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_delete_activity": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "delete_activity",
        "operationId": "pipedrive_delete_activity",
        "description": "Delete an activity in Pipedrive by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_delete_activity\",\"arguments\":{\"activityId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "activityId": {
                        "type": "number",
                        "description": "Activity ID to delete."
                      }
                    },
                    "required": [
                      "activityId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_list_pipelines": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "list_pipelines",
        "operationId": "pipedrive_list_pipelines",
        "description": "List all sales pipelines in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_list_pipelines\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_list_stages": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "list_stages",
        "operationId": "pipedrive_list_stages",
        "description": "List stages for a specific pipeline in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_list_stages\",\"arguments\":{\"pipelineId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pipelineId": {
                        "type": "number",
                        "description": "Pipeline ID to list stages for."
                      }
                    },
                    "required": [
                      "pipelineId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=pipedrive_get_deal_timeline": {
      "post": {
        "tags": [
          "pipedrive"
        ],
        "summary": "get_deal_timeline",
        "operationId": "pipedrive_get_deal_timeline",
        "description": "Get the timeline of changes/flow for a deal in Pipedrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"pipedrive_get_deal_timeline\",\"arguments\":{\"dealId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "dealId": {
                        "type": "number",
                        "description": "Deal ID to get timeline for."
                      }
                    },
                    "required": [
                      "dealId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-calendar_list_events": {
      "post": {
        "tags": [
          "premier-calendar"
        ],
        "summary": "list_events",
        "operationId": "premier-calendar_list_events",
        "description": "List upcoming Outlook calendar events. Defaults to the next 30 days.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-calendar_list_events\",\"arguments\":{\"top\":0,\"startDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Number of events to return (default 25, max 100)."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time. Defaults to now."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time. Defaults to 30 days from now."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-calendar_get_event": {
      "post": {
        "tags": [
          "premier-calendar"
        ],
        "summary": "get_event",
        "operationId": "premier-calendar_get_event",
        "description": "Get a specific calendar event by ID, including attendees and body.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-calendar_get_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-calendar_create_event": {
      "post": {
        "tags": [
          "premier-calendar"
        ],
        "summary": "create_event",
        "operationId": "premier-calendar_create_event",
        "description": "Create a new calendar event / meeting. Optionally adds attendees and creates a Teams online meeting.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-calendar_create_event\",\"arguments\":{\"subject\":\"<string>\",\"startDateTime\":\"<string>\",\"endDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Event title."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time (e.g. 2026-04-15T14:00:00)."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time."
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "IANA time zone (default \"UTC\")."
                      },
                      "body": {
                        "type": "string",
                        "description": "Event description / agenda (HTML supported)."
                      },
                      "location": {
                        "type": "string",
                        "description": "Location display name."
                      },
                      "attendees": {
                        "type": "array",
                        "description": "Attendee email addresses.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "isOnlineMeeting": {
                        "type": "boolean",
                        "description": "Create a Teams online meeting (default false)."
                      }
                    },
                    "required": [
                      "subject",
                      "startDateTime",
                      "endDateTime"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-calendar_update_event": {
      "post": {
        "tags": [
          "premier-calendar"
        ],
        "summary": "update_event",
        "operationId": "premier-calendar_update_event",
        "description": "Update an existing calendar event. Pass any subset of fields to change.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-calendar_update_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      },
                      "subject": {
                        "type": "string"
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time."
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "IANA time zone (default \"UTC\")."
                      },
                      "body": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-calendar_delete_event": {
      "post": {
        "tags": [
          "premier-calendar"
        ],
        "summary": "delete_event",
        "operationId": "premier-calendar_delete_event",
        "description": "Delete (cancel) a calendar event by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-calendar_delete_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-calendar_find_meeting_times": {
      "post": {
        "tags": [
          "premier-calendar"
        ],
        "summary": "find_meeting_times",
        "operationId": "premier-calendar_find_meeting_times",
        "description": "Suggest meeting times when all required attendees are free.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-calendar_find_meeting_times\",\"arguments\":{\"attendees\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "attendees": {
                        "type": "array",
                        "description": "Required attendee email addresses.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "durationMinutes": {
                        "type": "number",
                        "description": "Meeting duration in minutes (default 30)."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 search window start. Defaults to now."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 search window end. Defaults to 7 days from now."
                      },
                      "maxCandidates": {
                        "type": "number",
                        "description": "Maximum number of slots to suggest (default 5)."
                      }
                    },
                    "required": [
                      "attendees"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_list_files": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "list_files",
        "operationId": "premier-onedrive_list_files",
        "description": "List files and folders in OneDrive. Defaults to the drive root.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_list_files\",\"arguments\":{\"folderPath\":\"<string>\",\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "folderPath": {
                        "type": "string",
                        "description": "Folder path relative to drive root (e.g. \"Documents/Reports\"). Omit for root."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_search_files": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "search_files",
        "operationId": "premier-onedrive_search_files",
        "description": "Search files across the entire OneDrive by name or content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_search_files\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_get_file_metadata": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "get_file_metadata",
        "operationId": "premier-onedrive_get_file_metadata",
        "description": "Get metadata for a file or folder by path.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_get_file_metadata\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File or folder path relative to drive root (e.g. \"Documents/report.docx\")."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_download_file": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "download_file",
        "operationId": "premier-onedrive_download_file",
        "description": "Download a file from OneDrive. Returns text content for text files, base64-encoded content otherwise. Best for files under 4 MB.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_download_file\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File path relative to drive root (e.g. \"Documents/report.docx\")."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_upload_file": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "upload_file",
        "operationId": "premier-onedrive_upload_file",
        "description": "Upload a small file (under 4 MB) to OneDrive. Pass either text content directly or base64-encoded binary content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_upload_file\",\"arguments\":{\"path\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "Destination path relative to drive root (e.g. \"Documents/notes.txt\")."
                      },
                      "content": {
                        "type": "string",
                        "description": "File content (text or base64)."
                      },
                      "encoding": {
                        "type": "string",
                        "description": "\"utf8\" (default) or \"base64\"."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type (default \"application/octet-stream\")."
                      }
                    },
                    "required": [
                      "path",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_create_folder": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "create_folder",
        "operationId": "premier-onedrive_create_folder",
        "description": "Create a new folder in OneDrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_create_folder\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parentPath": {
                        "type": "string",
                        "description": "Parent folder path relative to drive root. Omit for root."
                      },
                      "name": {
                        "type": "string",
                        "description": "New folder name."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_share_file": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "share_file",
        "operationId": "premier-onedrive_share_file",
        "description": "Create a sharing link for a file or folder. NOTE: this expands access to others — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_share_file\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File or folder path relative to drive root."
                      },
                      "type": {
                        "type": "string",
                        "description": "\"view\" (read-only) or \"edit\". Default \"view\"."
                      },
                      "scope": {
                        "type": "string",
                        "description": "\"anonymous\" (anyone with link) or \"organization\" (signed-in users only). Default \"organization\"."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_delete_file": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "delete_file",
        "operationId": "premier-onedrive_delete_file",
        "description": "Delete a file or folder from OneDrive by item ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_delete_file\",\"arguments\":{\"itemId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to delete."
                      }
                    },
                    "required": [
                      "itemId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_move_file": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "move_file",
        "operationId": "premier-onedrive_move_file",
        "description": "Move a file or folder to a different parent folder in OneDrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_move_file\",\"arguments\":{\"itemId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to move."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "The destination folder item ID."
                      }
                    },
                    "required": [
                      "itemId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-onedrive_copy_file": {
      "post": {
        "tags": [
          "premier-onedrive"
        ],
        "summary": "copy_file",
        "operationId": "premier-onedrive_copy_file",
        "description": "Copy a file in OneDrive to a different folder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-onedrive_copy_file\",\"arguments\":{\"itemId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to copy."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "The destination folder item ID."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name for the copy."
                      }
                    },
                    "required": [
                      "itemId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_list_messages": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "list_messages",
        "operationId": "premier-outlook_list_messages",
        "description": "List messages from an Outlook mail folder (default: Inbox).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_list_messages\",\"arguments\":{\"top\":0,\"filter\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Number of messages to return (default 25)."
                      },
                      "filter": {
                        "type": "string",
                        "description": "OData $filter expression (e.g. \"isRead eq false\")."
                      },
                      "folderId": {
                        "type": "string",
                        "description": "Optional mail folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive). Default: inbox."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_read_message": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "read_message",
        "operationId": "premier-outlook_read_message",
        "description": "Read a specific Outlook email message by ID, including body, recipients, and attachment metadata.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_read_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Outlook message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_send_email": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "send_email",
        "operationId": "premier-outlook_send_email",
        "description": "Send an email via Outlook / Microsoft Graph. Supports multiple recipients, cc, bcc, and file attachments. For replies, use reply or reply_all instead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_send_email\",\"arguments\":{\"to\":null,\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "description": "Recipient(s). Single email, comma-separated string, or array of emails.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "cc": {
                        "description": "CC recipient(s). Single email, comma-separated string, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "bcc": {
                        "description": "BCC recipient(s). Single email, comma-separated string, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "subject": {
                        "type": "string",
                        "description": "Email subject."
                      },
                      "body": {
                        "type": "string",
                        "description": "Email body (HTML supported by default)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "Body content type: \"HTML\" (default) or \"Text\"."
                      },
                      "saveToSentItems": {
                        "type": "boolean",
                        "description": "Save to Sent Items (default true)."
                      },
                      "attachments": {
                        "type": "array",
                        "description": "Optional file attachments. Each item must include \"name\" (filename) plus either \"contentBytes\" (base64-encoded file content) or \"url\" (public/signed URL the server will fetch). Per-file inline limit is 3 MB; for larger files use create_draft + add_attachment.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Filename, e.g. \"Proposal.pdf\"."
                            },
                            "contentBytes": {
                              "type": "string",
                              "description": "Base64-encoded file content. Mutually exclusive with url."
                            },
                            "url": {
                              "type": "string",
                              "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                            },
                            "contentType": {
                              "type": "string",
                              "description": "MIME type (e.g. \"application/pdf\"). Auto-inferred from filename if omitted."
                            },
                            "isInline": {
                              "type": "boolean",
                              "description": "Mark as inline (referenced via cid:contentId from HTML body). Default false."
                            },
                            "contentId": {
                              "type": "string",
                              "description": "Optional Content-ID for inline attachments referenced from HTML body."
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    },
                    "required": [
                      "to",
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_search_messages": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "search_messages",
        "operationId": "premier-outlook_search_messages",
        "description": "Search Outlook emails. Use `query` for free-text ($search across subject/body/sender) OR use `filter`/`orderby` for structured OData queries. NOTE: Graph forbids combining $search with $filter or $orderby — if you pass query, filter/orderby are ignored.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_search_messages\",\"arguments\":{\"query\":\"<string>\",\"filter\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Free-text search across subject/body/from. Optional if filter is provided."
                      },
                      "filter": {
                        "type": "string",
                        "description": "OData $filter expression (e.g. \"from/emailAddress/address eq 'x@y.com'\", \"receivedDateTime ge 2026-04-01T00:00:00Z\", \"isRead eq false\"). Cannot be combined with query."
                      },
                      "orderby": {
                        "type": "string",
                        "description": "OData $orderby (e.g. \"receivedDateTime desc\"). Ignored if query is set. Default: receivedDateTime desc."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25, max 999)."
                      },
                      "skip": {
                        "type": "number",
                        "description": "OData $skip for pagination."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_reply": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "reply",
        "operationId": "premier-outlook_reply",
        "description": "Reply to an Outlook message, preserving threading. By default replies only to the sender. Set replyAll=true to reply to all recipients.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_reply\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being replied to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Reply body (HTML)."
                      },
                      "replyAll": {
                        "type": "boolean",
                        "description": "Reply-all instead of reply. Default false."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_reply_all": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "reply_all",
        "operationId": "premier-outlook_reply_all",
        "description": "Reply-all to an Outlook message, preserving threading. Sends to sender + all original To/Cc recipients.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_reply_all\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being replied to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Reply body (HTML)."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_forward": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "forward",
        "operationId": "premier-outlook_forward",
        "description": "Forward an Outlook message to new recipients with an optional comment.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_forward\",\"arguments\":{\"messageId\":\"<string>\",\"to\":null}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being forwarded."
                      },
                      "to": {
                        "description": "Recipient(s). String, comma-separated, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "comment": {
                        "type": "string",
                        "description": "Optional comment prepended to the forwarded body."
                      }
                    },
                    "required": [
                      "messageId",
                      "to"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_create_draft": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "create_draft",
        "operationId": "premier-outlook_create_draft",
        "description": "Create a draft email in Outlook without sending. Supports inline attachments (≤3 MB each). Returns the draft ID which can later be sent or extended with add_attachment for larger files.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_create_draft\",\"arguments\":{\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "description": "Recipient(s). String, comma-separated, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "cc": {
                        "description": "CC recipient(s).",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "bcc": {
                        "description": "BCC recipient(s).",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "subject": {
                        "type": "string",
                        "description": "Subject line."
                      },
                      "body": {
                        "type": "string",
                        "description": "Body (HTML)."
                      },
                      "attachments": {
                        "type": "array",
                        "description": "Optional file attachments. Each item must include \"name\" (filename) plus either \"contentBytes\" (base64-encoded file content) or \"url\" (public/signed URL the server will fetch). Per-file inline limit is 3 MB; for larger files use create_draft + add_attachment.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Filename, e.g. \"Proposal.pdf\"."
                            },
                            "contentBytes": {
                              "type": "string",
                              "description": "Base64-encoded file content. Mutually exclusive with url."
                            },
                            "url": {
                              "type": "string",
                              "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                            },
                            "contentType": {
                              "type": "string",
                              "description": "MIME type (e.g. \"application/pdf\"). Auto-inferred from filename if omitted."
                            },
                            "isInline": {
                              "type": "boolean",
                              "description": "Mark as inline (referenced via cid:contentId from HTML body). Default false."
                            },
                            "contentId": {
                              "type": "string",
                              "description": "Optional Content-ID for inline attachments referenced from HTML body."
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    },
                    "required": [
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_add_attachment": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "add_attachment",
        "operationId": "premier-outlook_add_attachment",
        "description": "Attach a file to an existing Outlook draft message (from create_draft). Use this to add attachments larger than ~3 MB (handled via Graph upload session) or to add files to a draft after creation. Returns the attachment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_add_attachment\",\"arguments\":{\"messageId\":\"<string>\",\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "Draft message ID (from create_draft)."
                      },
                      "name": {
                        "type": "string",
                        "description": "Filename, e.g. \"Proposal.pdf\"."
                      },
                      "contentBytes": {
                        "type": "string",
                        "description": "Base64-encoded file content. Mutually exclusive with url."
                      },
                      "url": {
                        "type": "string",
                        "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type. Auto-inferred from filename if omitted."
                      },
                      "isInline": {
                        "type": "boolean",
                        "description": "Mark as inline. Default false."
                      },
                      "contentId": {
                        "type": "string",
                        "description": "Optional Content-ID for inline attachments."
                      }
                    },
                    "required": [
                      "messageId",
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_send_draft": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "send_draft",
        "operationId": "premier-outlook_send_draft",
        "description": "Send an existing Outlook draft message (typically one created by create_draft + add_attachment).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_send_draft\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "Draft message ID to send."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_mark_read": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "mark_read",
        "operationId": "premier-outlook_mark_read",
        "description": "Mark an Outlook message as read or unread.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_mark_read\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "isRead": {
                        "type": "boolean",
                        "description": "true = mark read, false = mark unread. Default true."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_flag_message": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "flag_message",
        "operationId": "premier-outlook_flag_message",
        "description": "Flag or unflag an Outlook message for follow-up.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_flag_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "flagStatus": {
                        "type": "string",
                        "description": "One of: notFlagged, complete, flagged. Default: flagged."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_assign_category": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "assign_category",
        "operationId": "premier-outlook_assign_category",
        "description": "Apply Outlook color categories to a message. Categories are Outlook color tags (e.g. \"Red category\", \"Follow up\"). Pass an array of category names to set — this REPLACES existing categories on the message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_assign_category\",\"arguments\":{\"messageId\":\"<string>\",\"categories\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "categories": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of category names to apply. Empty array clears all categories."
                      }
                    },
                    "required": [
                      "messageId",
                      "categories"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_list_categories": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "list_categories",
        "operationId": "premier-outlook_list_categories",
        "description": "List all Outlook master categories defined on the mailbox (the color-tag names that can be applied to messages).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_list_categories\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_move_message": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "move_message",
        "operationId": "premier-outlook_move_message",
        "description": "Move an Outlook message to a different folder. destinationFolderId accepts a folder ID or a well-known name (inbox, archive, deleteditems, junkemail, drafts, sentitems).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_move_message\",\"arguments\":{\"messageId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID to move."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "Target folder ID or well-known name."
                      }
                    },
                    "required": [
                      "messageId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_list_folders": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "list_folders",
        "operationId": "premier-outlook_list_folders",
        "description": "List Outlook mail folders with their IDs, names, and unread counts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_list_folders\",\"arguments\":{\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Max folders to return (default 50)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_delete_message": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "delete_message",
        "operationId": "premier-outlook_delete_message",
        "description": "Delete (soft-delete to Deleted Items) an Outlook message. This is reversible — user can restore from Deleted Items until it is permanently purged.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_delete_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID to delete."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_list_attachments": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "list_attachments",
        "operationId": "premier-outlook_list_attachments",
        "description": "List attachments on an Outlook message with their IDs, names, sizes, and content types.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_list_attachments\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_download_attachment": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "download_attachment",
        "operationId": "premier-outlook_download_attachment",
        "description": "Download the content of a specific email attachment by message ID and attachment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_download_attachment\",\"arguments\":{\"messageId\":\"<string>\",\"attachmentId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "attachmentId": {
                        "type": "string",
                        "description": "The attachment ID (from list_attachments)."
                      }
                    },
                    "required": [
                      "messageId",
                      "attachmentId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_list_rules": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "list_rules",
        "operationId": "premier-outlook_list_rules",
        "description": "List inbox rules configured for the Outlook mailbox.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_list_rules\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_create_rule": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "create_rule",
        "operationId": "premier-outlook_create_rule",
        "description": "Create a new inbox rule in Outlook.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_create_rule\",\"arguments\":{\"displayName\":\"<string>\",\"conditions\":{},\"actions\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "displayName": {
                        "type": "string",
                        "description": "Name for the rule."
                      },
                      "conditions": {
                        "type": "object",
                        "description": "Rule conditions object (Graph messageRulePredicates)."
                      },
                      "actions": {
                        "type": "object",
                        "description": "Rule actions object (Graph messageRuleActions)."
                      },
                      "isEnabled": {
                        "type": "boolean",
                        "description": "Whether the rule is enabled (default true)."
                      }
                    },
                    "required": [
                      "displayName",
                      "conditions",
                      "actions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_update_rule": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "update_rule",
        "operationId": "premier-outlook_update_rule",
        "description": "Update an existing Outlook inbox rule by ID. Pass any subset of displayName/conditions/actions/isEnabled/sequence.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_update_rule\",\"arguments\":{\"ruleId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ruleId": {
                        "type": "string",
                        "description": "The inbox rule ID (from list_rules)."
                      },
                      "displayName": {
                        "type": "string",
                        "description": "New rule name."
                      },
                      "conditions": {
                        "type": "object",
                        "description": "Updated conditions (messageRulePredicates)."
                      },
                      "actions": {
                        "type": "object",
                        "description": "Updated actions (messageRuleActions)."
                      },
                      "isEnabled": {
                        "type": "boolean",
                        "description": "Enable/disable the rule."
                      },
                      "sequence": {
                        "type": "number",
                        "description": "Execution order (lower runs first)."
                      }
                    },
                    "required": [
                      "ruleId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-outlook_delete_rule": {
      "post": {
        "tags": [
          "premier-outlook"
        ],
        "summary": "delete_rule",
        "operationId": "premier-outlook_delete_rule",
        "description": "Delete an Outlook inbox rule by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-outlook_delete_rule\",\"arguments\":{\"ruleId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ruleId": {
                        "type": "string",
                        "description": "The inbox rule ID to delete."
                      }
                    },
                    "required": [
                      "ruleId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_list_sites": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "list_sites",
        "operationId": "premier-sharepoint_list_sites",
        "description": "List SharePoint sites the current user can access. Defaults to followed sites.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_list_sites\",\"arguments\":{\"search\":\"<string>\",\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "search": {
                        "type": "string",
                        "description": "Optional search query to filter sites by name. If omitted, returns followed sites."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max sites to return (default 25)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_get_site": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "get_site",
        "operationId": "premier-sharepoint_get_site",
        "description": "Get SharePoint site metadata by site ID or by hostname + path (e.g. \"contoso.sharepoint.com:/sites/Marketing\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_get_site\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "Either a site ID (from list_sites) or \"hostname:/sites/path\" form."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_list_document_libraries": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "list_document_libraries",
        "operationId": "premier-sharepoint_list_document_libraries",
        "description": "List the document libraries (drives) inside a SharePoint site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_list_document_libraries\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_list_files": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "list_files",
        "operationId": "premier-sharepoint_list_files",
        "description": "List files and folders in a SharePoint document library. Defaults to the library root.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_list_files\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "folderPath": {
                        "type": "string",
                        "description": "Folder path inside the library (e.g. \"Reports/2026\"). Omit for the library root."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_search_files": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "search_files",
        "operationId": "premier-sharepoint_search_files",
        "description": "Search SharePoint for files matching a query. Searches across all sites the user can access.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_search_files\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_get_file_metadata": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "get_file_metadata",
        "operationId": "premier-sharepoint_get_file_metadata",
        "description": "Get metadata for a file or folder inside a SharePoint document library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_get_file_metadata\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File or folder path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_download_file": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "download_file",
        "operationId": "premier-sharepoint_download_file",
        "description": "Download a file from a SharePoint document library. Returns text content for text files, base64-encoded otherwise. Best for files under 4 MB.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_download_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_upload_file": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "upload_file",
        "operationId": "premier-sharepoint_upload_file",
        "description": "Upload a small file (under 4 MB) into a SharePoint document library. Pass either text content directly or base64-encoded binary content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_upload_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Destination path inside the library."
                      },
                      "content": {
                        "type": "string",
                        "description": "File content (text or base64)."
                      },
                      "encoding": {
                        "type": "string",
                        "description": "\"utf8\" (default) or \"base64\"."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type (default \"application/octet-stream\")."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_list_pages": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "list_pages",
        "operationId": "premier-sharepoint_list_pages",
        "description": "List SharePoint pages (modern site pages) in a site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_list_pages\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max pages to return (default 25)."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_list_lists": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "list_lists",
        "operationId": "premier-sharepoint_list_lists",
        "description": "List SharePoint lists in a site (e.g. tasks, contacts, custom lists).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_list_lists\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_get_list_items": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "get_list_items",
        "operationId": "premier-sharepoint_get_list_items",
        "description": "Get items from a SharePoint list, including their fields.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_get_list_items\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID (from list_lists)."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_create_list_item": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "create_list_item",
        "operationId": "premier-sharepoint_create_list_item",
        "description": "Create a new item in a SharePoint list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_create_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"fields\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "fields": {
                        "type": "object",
                        "description": "Field values for the new item (e.g. { \"Title\": \"My Item\" })."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "fields"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_update_list_item": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "update_list_item",
        "operationId": "premier-sharepoint_update_list_item",
        "description": "Update fields on an existing SharePoint list item.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_update_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"itemId\":\"<string>\",\"fields\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "itemId": {
                        "type": "string",
                        "description": "The list item ID to update."
                      },
                      "fields": {
                        "type": "object",
                        "description": "Field values to update."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "itemId",
                      "fields"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_delete_list_item": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "delete_list_item",
        "operationId": "premier-sharepoint_delete_list_item",
        "description": "Delete a SharePoint list item by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_delete_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"itemId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "itemId": {
                        "type": "string",
                        "description": "The list item ID to delete."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "itemId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_delete_file": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "delete_file",
        "operationId": "premier-sharepoint_delete_file",
        "description": "Delete a file or folder from a SharePoint document library. Moves to recycle bin.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_delete_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File or folder path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_move_file": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "move_file",
        "operationId": "premier-sharepoint_move_file",
        "description": "Move a file or folder to a different location in a SharePoint document library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_move_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"destinationFolderPath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Source file/folder path."
                      },
                      "destinationFolderPath": {
                        "type": "string",
                        "description": "Target parent folder path (e.g. \"Reports/Archive\"). Root if empty."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name after move."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "destinationFolderPath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-sharepoint_copy_file": {
      "post": {
        "tags": [
          "premier-sharepoint"
        ],
        "summary": "copy_file",
        "operationId": "premier-sharepoint_copy_file",
        "description": "Copy a file or folder to a different location in a SharePoint document library. Returns a monitor URL; copy runs asynchronously.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-sharepoint_copy_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"destinationFolderPath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Source file/folder path."
                      },
                      "destinationFolderPath": {
                        "type": "string",
                        "description": "Target parent folder path."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name for the copy."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "destinationFolderPath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_list_teams": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "list_teams",
        "operationId": "premier-teams_list_teams",
        "description": "List all Microsoft Teams the current user is a member of.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_list_teams\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_list_channels": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "list_channels",
        "operationId": "premier-teams_list_channels",
        "description": "List channels in a specific team.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_list_channels\",\"arguments\":{\"teamId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID (from list_teams)."
                      }
                    },
                    "required": [
                      "teamId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_list_channel_messages": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "list_channel_messages",
        "operationId": "premier-teams_list_channel_messages",
        "description": "List recent messages in a Teams channel.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_list_channel_messages\",\"arguments\":{\"teamId\":\"<string>\",\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID."
                      },
                      "channelId": {
                        "type": "string",
                        "description": "The channel ID."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25)."
                      }
                    },
                    "required": [
                      "teamId",
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_send_channel_message": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "send_channel_message",
        "operationId": "premier-teams_send_channel_message",
        "description": "Post a message to a Teams channel. NOTE: this is visible to all channel members — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_send_channel_message\",\"arguments\":{\"teamId\":\"<string>\",\"channelId\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID."
                      },
                      "channelId": {
                        "type": "string",
                        "description": "The channel ID."
                      },
                      "message": {
                        "type": "string",
                        "description": "Message content (HTML supported)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "\"html\" (default) or \"text\"."
                      }
                    },
                    "required": [
                      "teamId",
                      "channelId",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_list_chats": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "list_chats",
        "operationId": "premier-teams_list_chats",
        "description": "List 1:1 and group chats the current user is part of.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_list_chats\",\"arguments\":{\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Max chats to return (default 25)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_get_chat_messages": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "get_chat_messages",
        "operationId": "premier-teams_get_chat_messages",
        "description": "Get recent messages from a specific Teams chat (1:1 or group).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_get_chat_messages\",\"arguments\":{\"chatId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "chatId": {
                        "type": "string",
                        "description": "The chat ID (from list_chats)."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25)."
                      }
                    },
                    "required": [
                      "chatId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_send_chat_message": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "send_chat_message",
        "operationId": "premier-teams_send_chat_message",
        "description": "Send a message to a Teams chat (1:1 or group). NOTE: this notifies recipients — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_send_chat_message\",\"arguments\":{\"chatId\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "chatId": {
                        "type": "string",
                        "description": "The chat ID."
                      },
                      "message": {
                        "type": "string",
                        "description": "Message content (HTML supported)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "\"html\" (default) or \"text\"."
                      }
                    },
                    "required": [
                      "chatId",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=premier-teams_create_online_meeting": {
      "post": {
        "tags": [
          "premier-teams"
        ],
        "summary": "create_online_meeting",
        "operationId": "premier-teams_create_online_meeting",
        "description": "Create a Teams online meeting. NOTE: this sends calendar invites to participants — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"premier-teams_create_online_meeting\",\"arguments\":{\"subject\":\"<string>\",\"startDateTime\":\"<string>\",\"endDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Meeting subject."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "Start time in ISO 8601 format (e.g. \"2026-04-15T09:00:00Z\")."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "End time in ISO 8601 format (e.g. \"2026-04-15T10:00:00Z\")."
                      },
                      "participants": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Optional array of participant email addresses."
                      }
                    },
                    "required": [
                      "subject",
                      "startDateTime",
                      "endDateTime"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=psi_analyze": {
      "post": {
        "tags": [
          "psi"
        ],
        "summary": "analyze",
        "operationId": "psi_analyze",
        "description": "Run a full PageSpeed Insights / Lighthouse audit on a public URL. Returns the complete Lighthouse report including category scores (performance, accessibility, best-practices, seo, pwa), Core Web Vitals (LCP, INP, CLS, FCP, TTFB), audits, opportunities, and diagnostics. WARNING: response is large (~100KB+); use core_web_vitals for a slim summary.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"psi_analyze\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Full URL to analyze (must be publicly reachable, e.g. \"https://example.com/blog/post\")."
                      },
                      "strategy": {
                        "type": "string",
                        "description": "\"mobile\" (default) or \"desktop\". Run twice for both."
                      },
                      "category": {
                        "type": "array",
                        "description": "Categories to score. Default [\"performance\"]. Options: \"performance\", \"accessibility\", \"best-practices\", \"seo\", \"pwa\". Pass an array to request multiple in one call.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "locale": {
                        "type": "string",
                        "description": "BCP-47 locale, e.g. \"en_US\" (default), \"en_GB\", \"es\", \"fr\"."
                      },
                      "utm_source": {
                        "type": "string",
                        "description": "Optional analytics tag echoed back in the report."
                      },
                      "utm_campaign": {
                        "type": "string",
                        "description": "Optional analytics tag echoed back in the report."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=psi_core_web_vitals": {
      "post": {
        "tags": [
          "psi"
        ],
        "summary": "core_web_vitals",
        "operationId": "psi_core_web_vitals",
        "description": "Convenience: run PageSpeed Insights and return ONLY the Core Web Vitals + category scores in a slim JSON. Use for quick \"is this page fast?\" checks across many URLs without the 100KB Lighthouse blob. Returns: { url, strategy, scores: { performance, accessibility, ... }, vitals: { lcp, inp, cls, fcp, ttfb, si, tbt }, lighthouse_version }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"psi_core_web_vitals\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Full URL to analyze."
                      },
                      "strategy": {
                        "type": "string",
                        "description": "\"mobile\" (default) or \"desktop\"."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reporting_report_daily_digest": {
      "post": {
        "tags": [
          "reporting"
        ],
        "summary": "report_daily_digest",
        "operationId": "reporting_report_daily_digest",
        "description": "Generate a daily activity digest — tool calls, new contacts, deals moved, tasks completed.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reporting_report_daily_digest\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reporting_report_weekly_summary": {
      "post": {
        "tags": [
          "reporting"
        ],
        "summary": "report_weekly_summary",
        "operationId": "reporting_report_weekly_summary",
        "description": "Generate a weekly summary — stats, top tools, error trends, pipeline changes.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reporting_report_weekly_summary\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reporting_report_monthly_review": {
      "post": {
        "tags": [
          "reporting"
        ],
        "summary": "report_monthly_review",
        "operationId": "reporting_report_monthly_review",
        "description": "Generate a monthly review — totals, growth metrics, usage trends.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reporting_report_monthly_review\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reporting_report_pipeline": {
      "post": {
        "tags": [
          "reporting"
        ],
        "summary": "report_pipeline",
        "operationId": "reporting_report_pipeline",
        "description": "Generate a pipeline state report — deals by stage, forecast.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reporting_report_pipeline\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reporting_report_claude_usage": {
      "post": {
        "tags": [
          "reporting"
        ],
        "summary": "report_claude_usage",
        "operationId": "reporting_report_claude_usage",
        "description": "Summarize Claude / MCP usage for the caller: tool calls by service, top tools, error rate, credit burn.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reporting_report_claude_usage\",\"arguments\":{\"windowDays\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "windowDays": {
                        "type": "number",
                        "description": "Lookback window. Default 7."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reporting_report_roi": {
      "post": {
        "tags": [
          "reporting"
        ],
        "summary": "report_roi",
        "operationId": "reporting_report_roi",
        "description": "Compute ROI for a date range. Cost = credit spend + campaign budgets. Value = pulled from provided revenueCents or left 0 if not supplied. Returns breakdown by campaign/channel/kind.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reporting_report_roi\",\"arguments\":{\"start\":\"<string>\",\"end\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "start": {
                        "type": "string",
                        "description": "ISO date. Default 30d ago."
                      },
                      "end": {
                        "type": "string",
                        "description": "ISO date. Default now."
                      },
                      "revenueCents": {
                        "type": "number",
                        "description": "Revenue attributed to this period. If omitted, ROI shows cost only."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reporting_report_exec_summary": {
      "post": {
        "tags": [
          "reporting"
        ],
        "summary": "report_exec_summary",
        "operationId": "reporting_report_exec_summary",
        "description": "Generate an executive summary prose report for the caller covering a date range. Pulls daily digest + pipeline + ROI + usage and asks Claude to synthesize. Falls back to structured sections if ANTHROPIC_API_KEY is missing.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reporting_report_exec_summary\",\"arguments\":{\"windowDays\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "windowDays": {
                        "type": "number",
                        "description": "Default 7."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reports_create": {
      "post": {
        "tags": [
          "reports"
        ],
        "summary": "create",
        "operationId": "reports_create",
        "description": "Create a new saved report. Returns the report id, which the user can view at /reports in the dashboard.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reports_create\",\"arguments\":{\"name\":\"<string>\",\"dataSpec\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "required": [
                      "name",
                      "dataSpec"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Display name shown in the dashboard."
                      },
                      "description": {
                        "type": "string",
                        "description": "Optional one-line summary."
                      },
                      "dataSpec": {
                        "type": "object",
                        "description": "JSON spec describing how to fetch the data. One of:\n\n  { \"type\": \"brain_query\", \"sql\": \"SELECT ...\" }\n      Run a SELECT against the user's brain warehouse. Tenant-isolated.\n      Use for HubSpot, Outlook, and any synced CRM data.\n\n  { \"type\": \"tool_call\", \"tool\": \"service_toolName\", \"args\": { ... } }\n      Invoke a single MCP tool the user has connected. Example:\n      { \"type\": \"tool_call\",\n        \"tool\": \"ezsmartleads-outlook_list_messages\",\n        \"args\": { \"filter\": \"isRead eq false\", \"top\": 50 } }\n\n  { \"type\": \"multi\", \"steps\": [ { \"label\": \"...\", \"tool\": \"...\", \"args\": {...}, \"extract\": \"field.path\" }, ... ],\n    \"aggregator\": \"none\" | \"count\" | \"sum\" | \"merge\" }\n      Run several tool_calls in parallel and aggregate. Use \"count\" when\n      each step returns an array and you want lengths labeled. Use \"extract\"\n      to pull a nested field from each step's response before aggregating."
                      },
                      "renderHint": {
                        "type": "string",
                        "enum": [
                          "table",
                          "kpi",
                          "list",
                          "raw",
                          "chart"
                        ],
                        "description": "How the dashboard should display the result. Default: table."
                      },
                      "schedule": {
                        "type": "string",
                        "enum": [
                          "manual",
                          "hourly",
                          "daily",
                          "weekly"
                        ],
                        "description": "Auto-refresh cadence. Default: manual."
                      },
                      "runNow": {
                        "type": "boolean",
                        "description": "If true, run the report once immediately after creating. Default: true."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reports_list": {
      "post": {
        "tags": [
          "reports"
        ],
        "summary": "list",
        "operationId": "reports_list",
        "description": "List the caller's saved reports with last-run status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reports_list\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reports_get": {
      "post": {
        "tags": [
          "reports"
        ],
        "summary": "get",
        "operationId": "reports_get",
        "description": "Fetch a single report by id, including its latest snapshot data.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reports_get\",\"arguments\":{\"reportId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "required": [
                      "reportId"
                    ],
                    "properties": {
                      "reportId": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reports_run": {
      "post": {
        "tags": [
          "reports"
        ],
        "summary": "run",
        "operationId": "reports_run",
        "description": "Re-run a report now and persist a fresh snapshot. Returns the snapshot data.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reports_run\",\"arguments\":{\"reportId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "required": [
                      "reportId"
                    ],
                    "properties": {
                      "reportId": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reports_update": {
      "post": {
        "tags": [
          "reports"
        ],
        "summary": "update",
        "operationId": "reports_update",
        "description": "Update a report's name, description, dataSpec, render hint, schedule, or enabled flag.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reports_update\",\"arguments\":{\"reportId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "required": [
                      "reportId"
                    ],
                    "properties": {
                      "reportId": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "dataSpec": {
                        "type": "object",
                        "description": "JSON spec describing how to fetch the data. One of:\n\n  { \"type\": \"brain_query\", \"sql\": \"SELECT ...\" }\n      Run a SELECT against the user's brain warehouse. Tenant-isolated.\n      Use for HubSpot, Outlook, and any synced CRM data.\n\n  { \"type\": \"tool_call\", \"tool\": \"service_toolName\", \"args\": { ... } }\n      Invoke a single MCP tool the user has connected. Example:\n      { \"type\": \"tool_call\",\n        \"tool\": \"ezsmartleads-outlook_list_messages\",\n        \"args\": { \"filter\": \"isRead eq false\", \"top\": 50 } }\n\n  { \"type\": \"multi\", \"steps\": [ { \"label\": \"...\", \"tool\": \"...\", \"args\": {...}, \"extract\": \"field.path\" }, ... ],\n    \"aggregator\": \"none\" | \"count\" | \"sum\" | \"merge\" }\n      Run several tool_calls in parallel and aggregate. Use \"count\" when\n      each step returns an array and you want lengths labeled. Use \"extract\"\n      to pull a nested field from each step's response before aggregating."
                      },
                      "renderHint": {
                        "type": "string",
                        "enum": [
                          "table",
                          "kpi",
                          "list",
                          "raw",
                          "chart"
                        ]
                      },
                      "schedule": {
                        "type": "string",
                        "enum": [
                          "manual",
                          "hourly",
                          "daily",
                          "weekly"
                        ]
                      },
                      "enabled": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=reports_delete": {
      "post": {
        "tags": [
          "reports"
        ],
        "summary": "delete",
        "operationId": "reports_delete",
        "description": "Delete a report and all of its snapshots.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"reports_delete\",\"arguments\":{\"reportId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "required": [
                      "reportId"
                    ],
                    "properties": {
                      "reportId": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_list": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "list",
        "operationId": "skills_list",
        "description": "List all active Claude Code skills in the hub catalog. Returns name, displayName, description, category, and version. Read-only, no auth needed.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_list\",\"arguments\":{\"category\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "category": {
                        "type": "string",
                        "description": "Filter by category (e.g. \"jesse\", \"email\", \"hubspot\"). Optional."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_get": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "get",
        "operationId": "skills_get",
        "description": "Get a single skill by name, including full SKILL.md content. Write content to ~/.claude/skills/<name>/SKILL.md.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_get\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Skill name (e.g. \"jesse-daily\")."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_my_skills": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "my_skills",
        "operationId": "skills_my_skills",
        "description": "List skills the CURRENT USER can see — both owned (createdBy) and assigned (ClientSkill). Returns ownership flag, enabled state, and version sync status. Requires auth.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_my_skills\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_install_mine": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "install_mine",
        "operationId": "skills_install_mine",
        "description": "Get full content of ALL skills assigned to OR owned by the current user, ready to write to ~/.claude/skills/<name>/SKILL.md. Tenant-scoped — only your skills. Requires auth.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_install_mine\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_install_all": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "install_all",
        "operationId": "skills_install_all",
        "description": "Get ALL skills in the hub (catalog-wide). Not tenant-scoped — use install_mine instead for user-scoped install. Kept for backward compat.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_install_all\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_upload": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "upload",
        "operationId": "skills_upload",
        "description": "Create a new skill OR update an existing one you own/have assigned. Stores SKILL.md content, extracts displayName/description from frontmatter, bumps patch version on update, snapshots previous version. Auto-assigns to the caller. Requires auth.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_upload\",\"arguments\":{\"name\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Skill name (e.g. \"jesse-daily\"). Used as folder/slug."
                      },
                      "content": {
                        "type": "string",
                        "description": "Full SKILL.md content including frontmatter."
                      },
                      "category": {
                        "type": "string",
                        "description": "Category for grouping. Optional."
                      }
                    },
                    "required": [
                      "name",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_update": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "update",
        "operationId": "skills_update",
        "description": "Update content of an existing skill you own or have installed. Bumps patch version and snapshots the old version. Alias for upload when the skill already exists. Requires auth.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_update\",\"arguments\":{\"name\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Skill name to update."
                      },
                      "content": {
                        "type": "string",
                        "description": "Full replacement SKILL.md content."
                      }
                    },
                    "required": [
                      "name",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_delete": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "delete",
        "operationId": "skills_delete",
        "description": "Remove a skill. If you OWN it (createdBy match), the skill is archived (soft-delete, status=DEPRECATED). If it is only ASSIGNED to you, just your assignment is removed (uninstall for self). Requires auth.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_delete\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Skill name to delete."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_share": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "share",
        "operationId": "skills_share",
        "description": "Hand off a skill to another user by email OR userId. Creates/refreshes a ClientSkill row for the recipient and sends an internal notification. You must own the skill or have it installed. Requires auth.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_share\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Skill name to share."
                      },
                      "email": {
                        "type": "string",
                        "description": "Recipient email. Either email or toUserId is required."
                      },
                      "toUserId": {
                        "type": "string",
                        "description": "Recipient user id. Either email or toUserId is required."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=skills_history": {
      "post": {
        "tags": [
          "skills"
        ],
        "summary": "history",
        "operationId": "skills_history",
        "description": "Get version history for a skill. Returns all snapshots with version, changelog, and timestamp.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"skills_history\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Skill name."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_send_message": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "send_message",
        "operationId": "slack_send_message",
        "description": "Send a message to a Slack channel.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_send_message\",\"arguments\":{\"channel\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID or name to send the message to."
                      },
                      "text": {
                        "type": "string",
                        "description": "Message text."
                      }
                    },
                    "required": [
                      "channel",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_list_channels": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "list_channels",
        "operationId": "slack_list_channels",
        "description": "List Slack channels the bot has access to, with filters and pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_list_channels\",\"arguments\":{\"limit\":0,\"cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Maximum channels to return (default 100, max 1000)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor from previous response (response_metadata.next_cursor)."
                      },
                      "exclude_archived": {
                        "type": "boolean",
                        "description": "Exclude archived channels (default true)."
                      },
                      "types": {
                        "type": "string",
                        "description": "Comma-separated channel types to include: public_channel, private_channel, mpim, im. Default \"public_channel\"."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_search_messages": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "search_messages",
        "operationId": "slack_search_messages",
        "description": "Search Slack messages. Query supports operators like \"in:#channel\", \"from:@user\", \"before:2026-01-01\", \"after:2026-04-01\". See https://slack.com/help/articles/202528808-Search-in-Slack for full syntax.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_search_messages\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search query (supports in:, from:, before:, after: operators)."
                      },
                      "in_channel": {
                        "type": "string",
                        "description": "Shorthand for \"in:#channel\". Channel name without #."
                      },
                      "from_user": {
                        "type": "string",
                        "description": "Shorthand for \"from:@user\". Username without @."
                      },
                      "after": {
                        "type": "string",
                        "description": "Shorthand for \"after:YYYY-MM-DD\"."
                      },
                      "before": {
                        "type": "string",
                        "description": "Shorthand for \"before:YYYY-MM-DD\"."
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "score",
                          "timestamp"
                        ],
                        "description": "Sort by relevance or time."
                      },
                      "sort_dir": {
                        "type": "string",
                        "enum": [
                          "asc",
                          "desc"
                        ],
                        "description": "Sort direction."
                      },
                      "count": {
                        "type": "number",
                        "description": "Results per page (default 20, max 100)."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number (default 1)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_update_message": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "update_message",
        "operationId": "slack_update_message",
        "description": "Update (edit) a Slack message you've previously sent.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_update_message\",\"arguments\":{\"channel\":\"<string>\",\"ts\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID containing the message."
                      },
                      "ts": {
                        "type": "string",
                        "description": "Timestamp of the message to update."
                      },
                      "text": {
                        "type": "string",
                        "description": "New message text."
                      }
                    },
                    "required": [
                      "channel",
                      "ts",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_delete_message": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "delete_message",
        "operationId": "slack_delete_message",
        "description": "Delete a Slack message. Must be a message you (or your bot) sent.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_delete_message\",\"arguments\":{\"channel\":\"<string>\",\"ts\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID containing the message."
                      },
                      "ts": {
                        "type": "string",
                        "description": "Timestamp of the message to delete."
                      }
                    },
                    "required": [
                      "channel",
                      "ts"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_add_reaction": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "add_reaction",
        "operationId": "slack_add_reaction",
        "description": "Add an emoji reaction to a Slack message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_add_reaction\",\"arguments\":{\"channel\":\"<string>\",\"timestamp\":\"<string>\",\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID where the message is."
                      },
                      "timestamp": {
                        "type": "string",
                        "description": "Timestamp of the message."
                      },
                      "name": {
                        "type": "string",
                        "description": "Emoji name without colons (e.g. \"thumbsup\", \"fire\")."
                      }
                    },
                    "required": [
                      "channel",
                      "timestamp",
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_remove_reaction": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "remove_reaction",
        "operationId": "slack_remove_reaction",
        "description": "Remove an emoji reaction from a Slack message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_remove_reaction\",\"arguments\":{\"channel\":\"<string>\",\"timestamp\":\"<string>\",\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID where the message is."
                      },
                      "timestamp": {
                        "type": "string",
                        "description": "Timestamp of the message."
                      },
                      "name": {
                        "type": "string",
                        "description": "Emoji name without colons."
                      }
                    },
                    "required": [
                      "channel",
                      "timestamp",
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_archive_channel": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "archive_channel",
        "operationId": "slack_archive_channel",
        "description": "Archive a Slack channel.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_archive_channel\",\"arguments\":{\"channel\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID to archive."
                      }
                    },
                    "required": [
                      "channel"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_reply_to_thread": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "reply_to_thread",
        "operationId": "slack_reply_to_thread",
        "description": "Reply to a specific Slack message thread.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_reply_to_thread\",\"arguments\":{\"channel\":\"<string>\",\"thread_ts\":\"<string>\",\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID to post in."
                      },
                      "thread_ts": {
                        "type": "string",
                        "description": "Timestamp of the parent message to reply to."
                      },
                      "text": {
                        "type": "string",
                        "description": "Reply text."
                      }
                    },
                    "required": [
                      "channel",
                      "thread_ts",
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_find_user": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "find_user",
        "operationId": "slack_find_user",
        "description": "Find a Slack user by name or email. Searches display_name, real_name, and email.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_find_user\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Name or email to search for."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=slack_list_reactions": {
      "post": {
        "tags": [
          "slack"
        ],
        "summary": "list_reactions",
        "operationId": "slack_list_reactions",
        "description": "List reactions on a specific Slack message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"slack_list_reactions\",\"arguments\":{\"channel\":\"<string>\",\"timestamp\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channel": {
                        "type": "string",
                        "description": "Channel ID where the message is."
                      },
                      "timestamp": {
                        "type": "string",
                        "description": "Timestamp of the message."
                      }
                    },
                    "required": [
                      "channel",
                      "timestamp"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_list_campaigns": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "list_campaigns",
        "operationId": "smartlead_list_campaigns",
        "description": "List all SmartLead campaigns.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_list_campaigns\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_campaign",
        "operationId": "smartlead_get_campaign",
        "description": "Get details for a specific campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_campaign\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_campaign_analytics": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_campaign_analytics",
        "operationId": "smartlead_get_campaign_analytics",
        "description": "Get top-level analytics for a campaign (sent, opens, replies, bounces).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_campaign_analytics\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_campaign_analytics_by_date": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_campaign_analytics_by_date",
        "operationId": "smartlead_get_campaign_analytics_by_date",
        "description": "Get campaign analytics filtered by date range.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_campaign_analytics_by_date\",\"arguments\":{\"campaignId\":0,\"startDate\":\"<string>\",\"endDate\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "startDate": {
                        "type": "string",
                        "description": "Start date (YYYY-MM-DD)."
                      },
                      "endDate": {
                        "type": "string",
                        "description": "End date (YYYY-MM-DD)."
                      }
                    },
                    "required": [
                      "campaignId",
                      "startDate",
                      "endDate"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_overall_stats": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_overall_stats",
        "operationId": "smartlead_get_overall_stats",
        "description": "Get overall account-level stats (all campaigns combined).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_overall_stats\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_update_campaign_status": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "update_campaign_status",
        "operationId": "smartlead_update_campaign_status",
        "description": "Change campaign status (START, PAUSED, STOPPED, ARCHIVE).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_update_campaign_status\",\"arguments\":{\"campaignId\":0,\"status\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "START",
                          "PAUSED",
                          "STOPPED",
                          "ARCHIVE"
                        ],
                        "description": "New status."
                      }
                    },
                    "required": [
                      "campaignId",
                      "status"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_campaign_sequence": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_campaign_sequence",
        "operationId": "smartlead_get_campaign_sequence",
        "description": "Get the email sequence (steps and variants) for a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_campaign_sequence\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_sequence_analytics": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_sequence_analytics",
        "operationId": "smartlead_get_sequence_analytics",
        "description": "Get per-step analytics for a campaign sequence.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_sequence_analytics\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_create_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "create_campaign",
        "operationId": "smartlead_create_campaign",
        "description": "Create a new SmartLead campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_create_campaign\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Campaign name."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_save_campaign_sequences": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "save_campaign_sequences",
        "operationId": "smartlead_save_campaign_sequences",
        "description": "Save email sequences (steps and variants) for a campaign. Each sequence has seq_number, subject, body, and seq_delay_days.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_save_campaign_sequences\",\"arguments\":{\"campaignId\":0,\"sequences\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "sequences": {
                        "type": "array",
                        "description": "Array of sequence objects. Each: { seq_number, seq_delay_days, subject, email_body, variant_label? }. For A/B variants of the same step, use the same seq_number with different variant_label (a, b, c...).",
                        "items": {
                          "type": "object"
                        }
                      }
                    },
                    "required": [
                      "campaignId",
                      "sequences"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_update_campaign_settings": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "update_campaign_settings",
        "operationId": "smartlead_update_campaign_settings",
        "description": "Update campaign general settings like schedule, sending limits, and tracking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_update_campaign_settings\",\"arguments\":{\"campaignId\":0,\"settings\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "settings": {
                        "type": "object",
                        "description": "Settings object. Common fields: timezone, days_of_the_week (array of 0-6), start_hour, end_hour, min_time_btwn_emails, max_leads_per_day, track_settings (array: \"TRACK_EMAIL_OPEN\",\"TRACK_LINK_CLICK\"), stop_lead_settings, send_as_plain_text, follow_up_percentage."
                      }
                    },
                    "required": [
                      "campaignId",
                      "settings"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_list_campaign_leads": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "list_campaign_leads",
        "operationId": "smartlead_list_campaign_leads",
        "description": "List leads in a campaign with pagination and status/category filtering.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_list_campaign_leads\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Offset for pagination (default 0)."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max leads to return (default 100)."
                      },
                      "status": {
                        "type": "string",
                        "description": "Filter by lead status (e.g. \"replied\", \"bounced\", \"opened\", \"clicked\", \"unsubscribed\")."
                      },
                      "category": {
                        "type": "string",
                        "description": "Filter by category (e.g. \"interested\", \"not_interested\", \"meeting_booked\")."
                      },
                      "email": {
                        "type": "string",
                        "description": "Filter to a specific lead by email."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_add_leads_to_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "add_leads_to_campaign",
        "operationId": "smartlead_add_leads_to_campaign",
        "description": "Add leads to a campaign. Max 400 per request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_add_leads_to_campaign\",\"arguments\":{\"campaignId\":0,\"leadList\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "leadList": {
                        "type": "array",
                        "description": "Array of lead objects with email (required), first_name, last_name, company_name, etc.",
                        "items": {
                          "type": "object"
                        }
                      }
                    },
                    "required": [
                      "campaignId",
                      "leadList"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_lead_by_email": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_lead_by_email",
        "operationId": "smartlead_get_lead_by_email",
        "description": "Look up a lead by email address.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_lead_by_email\",\"arguments\":{\"email\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Lead email address."
                      }
                    },
                    "required": [
                      "email"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_lead_messages": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_lead_messages",
        "operationId": "smartlead_get_lead_messages",
        "description": "Get message history for a lead in a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_lead_messages\",\"arguments\":{\"campaignId\":0,\"leadId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "leadId": {
                        "type": "number",
                        "description": "Lead ID."
                      }
                    },
                    "required": [
                      "campaignId",
                      "leadId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_lead_categories": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_lead_categories",
        "operationId": "smartlead_get_lead_categories",
        "description": "Get available lead categories.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_lead_categories\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_update_lead_category": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "update_lead_category",
        "operationId": "smartlead_update_lead_category",
        "description": "Change a lead's category in a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_update_lead_category\",\"arguments\":{\"campaignId\":0,\"leadId\":0,\"category\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "leadId": {
                        "type": "number",
                        "description": "Lead ID."
                      },
                      "category": {
                        "type": "string",
                        "description": "New category name."
                      }
                    },
                    "required": [
                      "campaignId",
                      "leadId",
                      "category"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_remove_lead_from_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "remove_lead_from_campaign",
        "operationId": "smartlead_remove_lead_from_campaign",
        "description": "Remove a lead from a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_remove_lead_from_campaign\",\"arguments\":{\"campaignId\":0,\"leadId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "leadId": {
                        "type": "number",
                        "description": "Lead ID."
                      }
                    },
                    "required": [
                      "campaignId",
                      "leadId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_list_email_accounts": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "list_email_accounts",
        "operationId": "smartlead_list_email_accounts",
        "description": "List all email accounts (inboxes) in SmartLead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_list_email_accounts\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number",
                        "description": "Offset (default 0)."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Limit (default 100)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_email_account": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_email_account",
        "operationId": "smartlead_get_email_account",
        "description": "Get details for a specific email account.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_email_account\",\"arguments\":{\"emailAccountId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "emailAccountId": {
                        "type": "number",
                        "description": "Email account ID."
                      }
                    },
                    "required": [
                      "emailAccountId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_warmup_status": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_warmup_status",
        "operationId": "smartlead_get_warmup_status",
        "description": "Check warmup status for an email account.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_warmup_status\",\"arguments\":{\"emailAccountId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "emailAccountId": {
                        "type": "number",
                        "description": "Email account ID."
                      }
                    },
                    "required": [
                      "emailAccountId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_list_campaign_email_accounts": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "list_campaign_email_accounts",
        "operationId": "smartlead_list_campaign_email_accounts",
        "description": "List email accounts attached to a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_list_campaign_email_accounts\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_add_email_account_to_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "add_email_account_to_campaign",
        "operationId": "smartlead_add_email_account_to_campaign",
        "description": "Add an email account to a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_add_email_account_to_campaign\",\"arguments\":{\"campaignId\":0,\"emailAccountId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "emailAccountId": {
                        "type": "number",
                        "description": "Email account ID to add."
                      }
                    },
                    "required": [
                      "campaignId",
                      "emailAccountId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_remove_email_account_from_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "remove_email_account_from_campaign",
        "operationId": "smartlead_remove_email_account_from_campaign",
        "description": "Remove an email account from a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_remove_email_account_from_campaign\",\"arguments\":{\"campaignId\":0,\"emailAccountId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "emailAccountId": {
                        "type": "number",
                        "description": "Email account ID to remove."
                      }
                    },
                    "required": [
                      "campaignId",
                      "emailAccountId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_list_webhooks": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "list_webhooks",
        "operationId": "smartlead_list_webhooks",
        "description": "List all webhooks configured in SmartLead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_list_webhooks\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_global_blocklist": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_global_blocklist",
        "operationId": "smartlead_get_global_blocklist",
        "description": "View blocked emails/domains in the global block list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_global_blocklist\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_add_to_global_blocklist": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "add_to_global_blocklist",
        "operationId": "smartlead_add_to_global_blocklist",
        "description": "Add email or domain to the global block list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_add_to_global_blocklist\",\"arguments\":{\"email\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Email address or domain to block."
                      }
                    },
                    "required": [
                      "email"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_list_replies": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "list_replies",
        "operationId": "smartlead_list_replies",
        "description": "List replied leads for a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_list_replies\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max leads to return (default 100)."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Offset for pagination (default 0)."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_reply_content": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_reply_content",
        "operationId": "smartlead_get_reply_content",
        "description": "Get the full message history for a lead in a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_reply_content\",\"arguments\":{\"campaignId\":0,\"leadId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "leadId": {
                        "type": "number",
                        "description": "Lead ID."
                      }
                    },
                    "required": [
                      "campaignId",
                      "leadId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_lead_status": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_lead_status",
        "operationId": "smartlead_get_lead_status",
        "description": "Get the current status of a specific lead in a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_lead_status\",\"arguments\":{\"campaignId\":0,\"leadEmail\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      },
                      "leadEmail": {
                        "type": "string",
                        "description": "Lead email address."
                      }
                    },
                    "required": [
                      "campaignId",
                      "leadEmail"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_pause_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "pause_campaign",
        "operationId": "smartlead_pause_campaign",
        "description": "Pause an active SmartLead campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_pause_campaign\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_resume_campaign": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "resume_campaign",
        "operationId": "smartlead_resume_campaign",
        "description": "Resume a paused SmartLead campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_resume_campaign\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_get_bounce_report": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "get_bounce_report",
        "operationId": "smartlead_get_bounce_report",
        "description": "Get bounced leads for a campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_get_bounce_report\",\"arguments\":{\"campaignId\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaignId": {
                        "type": "number",
                        "description": "Campaign ID."
                      }
                    },
                    "required": [
                      "campaignId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=smartlead_smart_prospect_departments": {
      "post": {
        "tags": [
          "smartlead"
        ],
        "summary": "smart_prospect_departments",
        "operationId": "smartlead_smart_prospect_departments",
        "description": "List all department categories available as filters in SmartLead SmartProspect (Engineering, Sales, Marketing, etc.). Use this to know the taxonomy when filtering prospect searches in the dashboard. Requires SmartProspect add-on ($59/mo).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"smartlead_smart_prospect_departments\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_brand_kit_get": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "brand_kit_get",
        "operationId": "studio_brand_kit_get",
        "description": "Fetch the caller's Brand Kit (voice, tone, audience personas, products, colors, fonts, approved/forbidden phrases). Returns null fields if no kit configured yet.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_brand_kit_get\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_brand_kit_update": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "brand_kit_update",
        "operationId": "studio_brand_kit_update",
        "description": "Partial-update the caller's Brand Kit. Only pass the fields you want to change; everything else is preserved. Use this when the client asks to update their brand description, add a forbidden phrase, change tone, etc.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_brand_kit_update\",\"arguments\":{\"name\":\"<string>\",\"tagline\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Brand display name."
                      },
                      "tagline": {
                        "type": "string"
                      },
                      "mission": {
                        "type": "string"
                      },
                      "tone": {
                        "type": "string",
                        "description": "Free-form tone description."
                      },
                      "approvedPhrases": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "forbiddenPhrases": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "exampleOutputs": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "audiencePersonas": {
                        "type": "array",
                        "description": "Array of {name, description, painPoints[], goals[]}."
                      },
                      "products": {
                        "type": "array",
                        "description": "Array of {name, oneLiner, valueProps[]}."
                      },
                      "colors": {
                        "type": "object",
                        "description": "{primary,secondary,accent,bg,text} hex colors."
                      },
                      "logoUrl": {
                        "type": "string"
                      },
                      "fontPrimary": {
                        "type": "string"
                      },
                      "fontSecondary": {
                        "type": "string"
                      },
                      "style": {
                        "type": "object",
                        "description": "{voice, formality 1-5, emojiPolicy, readingLevel}."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_generate": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "generate",
        "operationId": "studio_generate",
        "description": "Generate a brand-aligned content draft and persist it as a ContentDraft row. Returns { draft, voice, previewUrl }. The voice block scores 0..1 + structured issues. Status starts at DRAFT — call studio_drafts_submit to send for approval. Kinds: BLOG | EMAIL | EMAIL_SEQUENCE | SOCIAL | LANDING | AD.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_generate\",\"arguments\":{\"kind\":\"<string>\",\"brief\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "enum": [
                          "BLOG",
                          "EMAIL",
                          "EMAIL_SEQUENCE",
                          "SOCIAL",
                          "LANDING",
                          "AD"
                        ]
                      },
                      "brief": {
                        "type": "object",
                        "description": "Kind-specific brief. BLOG: {topic, audience?, goal?, length?, keywords[]?}. EMAIL: {topic, audience?, goal?, length?, channel?, cta?, fromName?}. EMAIL_SEQUENCE: same as EMAIL + {steps 3-7}. SOCIAL: {topic, platform: linkedin|twitter|facebook|instagram, format?, audience?, goal?, imagePrompt?}. LANDING: {product, goal?, audience?, primaryCta?, hero?, proofPoints[]?}. AD: {product, platform: meta|google_search|google_display|linkedin_ads|tiktok_ads, goal?, audience?, variants?}."
                      }
                    },
                    "required": [
                      "kind",
                      "brief"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_drafts_list": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "drafts_list",
        "operationId": "studio_drafts_list",
        "description": "List the caller's content drafts, most recent first. Optional filters by kind and status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_drafts_list\",\"arguments\":{\"kind\":\"<string>\",\"status\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "enum": [
                          "BLOG",
                          "EMAIL",
                          "EMAIL_SEQUENCE",
                          "SOCIAL",
                          "LANDING",
                          "AD"
                        ]
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "DRAFT",
                          "REVIEW",
                          "APPROVED",
                          "PUBLISHED",
                          "REJECTED"
                        ]
                      },
                      "limit": {
                        "type": "number",
                        "description": "1-200, default 50."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_drafts_get": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "drafts_get",
        "operationId": "studio_drafts_get",
        "description": "Fetch a single ContentDraft by id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_drafts_get\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_drafts_patch": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "drafts_patch",
        "operationId": "studio_drafts_patch",
        "description": "Edit a DRAFT or REJECTED draft. Only title / body / assetIds / publishTarget / scheduledAt can be changed. Once a draft moves to REVIEW or beyond it is locked.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_drafts_patch\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      },
                      "body": {
                        "type": "object"
                      },
                      "assetIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "publishTarget": {
                        "type": "object"
                      },
                      "scheduledAt": {
                        "type": "string",
                        "description": "ISO 8601 datetime."
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_drafts_delete": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "drafts_delete",
        "operationId": "studio_drafts_delete",
        "description": "Delete a DRAFT or REJECTED draft. PUBLISHED drafts cannot be deleted.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_drafts_delete\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_drafts_submit": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "drafts_submit",
        "operationId": "studio_drafts_submit",
        "description": "Submit a draft for approval. Flips status DRAFT→REVIEW and creates a CONTENT_PUBLISH Approval row in one transaction. Returns the updated draft and the new approval id.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_drafts_submit\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "publishTarget": {
                        "type": "object",
                        "description": "Where to publish on approve. Examples: { channel: \"linkedin\" }, { service: \"smartlead\", campaignName: \"Q3 nurture\" }, { channel: \"wix\", collectionId: \"...\" }."
                      },
                      "scheduledAt": {
                        "type": "string",
                        "description": "ISO 8601 future timestamp."
                      },
                      "summary": {
                        "type": "string"
                      },
                      "riskLevel": {
                        "type": "string",
                        "enum": [
                          "low",
                          "normal",
                          "high"
                        ]
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_drafts_publish": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "drafts_publish",
        "operationId": "studio_drafts_publish",
        "description": "Publish an APPROVED draft. The dispatcher routes by kind + publishTarget to the right channel adapter (Wix / SmartLead / Constant Contact / LinkedIn / Buffer / Meta / Twitter / R2 for landing). Falls back to manual artifact when the target service is not OAuth-connected. Owner can publish their own PENDING request, which auto-approves.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_drafts_publish\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_drafts_social_image": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "drafts_social_image",
        "operationId": "studio_drafts_social_image",
        "description": "Generate a brand-style image for a SOCIAL draft via the images adapter and attach it to the draft. Reuses the draft's imagePromptSuggestion when no override is supplied.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_drafts_social_image\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "prompt": {
                        "type": "string"
                      },
                      "provider": {
                        "type": "string",
                        "enum": [
                          "openai",
                          "replicate",
                          "stability",
                          "ideogram",
                          "bfl"
                        ]
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_approvals_list": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "approvals_list",
        "operationId": "studio_approvals_list",
        "description": "List the caller's CONTENT_PUBLISH approvals filtered by status (default PENDING).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_approvals_list\",\"arguments\":{\"status\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "PENDING",
                          "APPROVED",
                          "REJECTED",
                          "EXECUTED",
                          "FAILED",
                          "CANCELLED"
                        ]
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_approvals_decide": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "approvals_decide",
        "operationId": "studio_approvals_decide",
        "description": "Approve, reject, or cancel a single approval. On approve: caller should follow with drafts_publish to actually fire the publish dispatcher (or call publish directly which auto-flips PENDING→APPROVED for the owner).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_approvals_decide\",\"arguments\":{\"id\":\"<string>\",\"decision\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "decision": {
                        "type": "string",
                        "enum": [
                          "APPROVED",
                          "REJECTED",
                          "CANCELLED"
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "decision"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_draft_preview_url": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "draft_preview_url",
        "operationId": "studio_draft_preview_url",
        "description": "Return a shareable URL to the portal draft view. Useful when the client wants to \"see the preview\" before approving — paste the URL in chat and they can click through.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_draft_preview_url\",\"arguments\":{\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_pull_performance": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "pull_performance",
        "operationId": "studio_pull_performance",
        "description": "Pull current engagement metrics for one or all recent PUBLISHED drafts (impressions, opens, clicks, replies, reactions, CTR, conversions, etc.). Closes the learning loop — call before insights or promote_winners. Per kind: EMAIL → smartlead analytics, SOCIAL/linkedin → linkedin page stats, AD/meta → meta-ads ad insights.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_pull_performance\",\"arguments\":{\"draftId\":\"<string>\",\"days\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "draftId": {
                        "type": "string",
                        "description": "If set, pull only this draft. Else pulls last 30 days."
                      },
                      "days": {
                        "type": "number",
                        "description": "Look-back window when draftId is omitted. Default 30."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_insights": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "insights",
        "operationId": "studio_insights",
        "description": "Summary of the caller's recent content performance — top winners by engagement score, channel breakdown, and rough learnings ('your LinkedIn posts in contrarian format outperform tips 3:1'). Does NOT modify the BrandKit; pure analysis.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_insights\",\"arguments\":{\"days\":0,\"topK\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "days": {
                        "type": "number",
                        "description": "Default 30."
                      },
                      "topK": {
                        "type": "number",
                        "description": "How many winners to surface. Default 5."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_brand_discover": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "brand_discover",
        "operationId": "studio_brand_discover",
        "description": "Paste a brand's website URL and get a populated Brand Kit. Scrapes the homepage (and optionally /about, /pricing, /products if `deep=true`) via firecrawl, then Claude extracts a structured patch: name, tagline, mission, tone, audience personas, products, approved phrases, example outputs, style hints. By default returns the proposed patch WITHOUT writing it (preview mode); pass apply=true to merge into the caller's BrandKit immediately.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_brand_discover\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Brand website URL (with or without https://)."
                      },
                      "deep": {
                        "type": "boolean",
                        "description": "Also scrape /about, /pricing, /products, /features, /services slugs for richer signal. Slower + more Firecrawl credits."
                      },
                      "apply": {
                        "type": "boolean",
                        "description": "If true, merge the patch into the caller's BrandKit immediately (only fills empty/missing fields). Default false (preview only)."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=studio_promote_winners": {
      "post": {
        "tags": [
          "studio"
        ],
        "summary": "promote_winners",
        "operationId": "studio_promote_winners",
        "description": "Pull performance + promote top-performing drafts into the BrandKit's exampleOutputs so the next generation mimics what worked. Engagement-floor is 0.4 (e.g. ~2%+ CTR or 5%+ reply rate). Pass dryRun=true to preview without writing.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"studio_promote_winners\",\"arguments\":{\"days\":0,\"topK\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "days": {
                        "type": "number",
                        "description": "Default 30."
                      },
                      "topK": {
                        "type": "number",
                        "description": "Max winners to promote. Default 5, max 10."
                      },
                      "dryRun": {
                        "type": "boolean",
                        "description": "If true, compute but don't modify the BrandKit."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tiktok_tiktok_get_me": {
      "post": {
        "tags": [
          "tiktok"
        ],
        "summary": "tiktok_get_me",
        "operationId": "tiktok_tiktok_get_me",
        "description": "Get the authenticated TikTok user's basic info (open_id, display_name, avatar).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tiktok_tiktok_get_me\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tiktok_tiktok_init_video_post": {
      "post": {
        "tags": [
          "tiktok"
        ],
        "summary": "tiktok_init_video_post",
        "operationId": "tiktok_tiktok_init_video_post",
        "description": "Initialize a video post on TikTok. Returns { publishId, uploadUrl } — caller uploads the actual video bytes to uploadUrl separately. Pass either `videoUrl` (we will stream from URL) or pre-upload the file yourself.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tiktok_tiktok_init_video_post\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Video caption (max 2200 chars)."
                      },
                      "videoUrl": {
                        "type": "string",
                        "description": "Public URL of the video file (mp4, max 128MB). We fetch and relay to TikTok."
                      },
                      "videoSizeBytes": {
                        "type": "number",
                        "description": "If not fetching from URL, provide size for chunked upload."
                      },
                      "privacyLevel": {
                        "type": "string",
                        "enum": [
                          "PUBLIC_TO_EVERYONE",
                          "MUTUAL_FOLLOW_FRIENDS",
                          "SELF_ONLY"
                        ],
                        "description": "Default: SELF_ONLY (safer for programmatic posts)."
                      },
                      "disableComment": {
                        "type": "boolean"
                      },
                      "disableDuet": {
                        "type": "boolean"
                      },
                      "disableStitch": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tiktok_tiktok_check_status": {
      "post": {
        "tags": [
          "tiktok"
        ],
        "summary": "tiktok_check_status",
        "operationId": "tiktok_tiktok_check_status",
        "description": "Poll the publish status of a TikTok publishId. Returns { status, failReason? }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tiktok_tiktok_check_status\",\"arguments\":{\"publishId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "publishId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "publishId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tiktok_tiktok_list_videos": {
      "post": {
        "tags": [
          "tiktok"
        ],
        "summary": "tiktok_list_videos",
        "operationId": "tiktok_tiktok_list_videos",
        "description": "List the authenticated user's recent TikTok videos.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tiktok_tiktok_list_videos\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tiktok_tiktok_post_campaign": {
      "post": {
        "tags": [
          "tiktok"
        ],
        "summary": "tiktok_post_campaign",
        "operationId": "tiktok_tiktok_post_campaign",
        "description": "Publish a CampaignChannel with channel=TIKTOK. Content payload: { title, videoUrl, privacyLevel? }. Records publishId as providerRef.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tiktok_tiktok_post_campaign\",\"arguments\":{\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channelId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-calendar_list_events": {
      "post": {
        "tags": [
          "tmrw-calendar"
        ],
        "summary": "list_events",
        "operationId": "tmrw-calendar_list_events",
        "description": "List upcoming Outlook calendar events. Defaults to the next 30 days.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-calendar_list_events\",\"arguments\":{\"top\":0,\"startDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Number of events to return (default 25, max 100)."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time. Defaults to now."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time. Defaults to 30 days from now."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-calendar_get_event": {
      "post": {
        "tags": [
          "tmrw-calendar"
        ],
        "summary": "get_event",
        "operationId": "tmrw-calendar_get_event",
        "description": "Get a specific calendar event by ID, including attendees and body.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-calendar_get_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-calendar_create_event": {
      "post": {
        "tags": [
          "tmrw-calendar"
        ],
        "summary": "create_event",
        "operationId": "tmrw-calendar_create_event",
        "description": "Create a new calendar event / meeting. Optionally adds attendees and creates a Teams online meeting.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-calendar_create_event\",\"arguments\":{\"subject\":\"<string>\",\"startDateTime\":\"<string>\",\"endDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Event title."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time (e.g. 2026-04-15T14:00:00)."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time."
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "IANA time zone (default \"UTC\")."
                      },
                      "body": {
                        "type": "string",
                        "description": "Event description / agenda (HTML supported)."
                      },
                      "location": {
                        "type": "string",
                        "description": "Location display name."
                      },
                      "attendees": {
                        "type": "array",
                        "description": "Attendee email addresses.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "isOnlineMeeting": {
                        "type": "boolean",
                        "description": "Create a Teams online meeting (default false)."
                      }
                    },
                    "required": [
                      "subject",
                      "startDateTime",
                      "endDateTime"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-calendar_update_event": {
      "post": {
        "tags": [
          "tmrw-calendar"
        ],
        "summary": "update_event",
        "operationId": "tmrw-calendar_update_event",
        "description": "Update an existing calendar event. Pass any subset of fields to change.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-calendar_update_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      },
                      "subject": {
                        "type": "string"
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 start time."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 end time."
                      },
                      "timeZone": {
                        "type": "string",
                        "description": "IANA time zone (default \"UTC\")."
                      },
                      "body": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-calendar_delete_event": {
      "post": {
        "tags": [
          "tmrw-calendar"
        ],
        "summary": "delete_event",
        "operationId": "tmrw-calendar_delete_event",
        "description": "Delete (cancel) a calendar event by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-calendar_delete_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "The Outlook event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-calendar_find_meeting_times": {
      "post": {
        "tags": [
          "tmrw-calendar"
        ],
        "summary": "find_meeting_times",
        "operationId": "tmrw-calendar_find_meeting_times",
        "description": "Suggest meeting times when all required attendees are free.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-calendar_find_meeting_times\",\"arguments\":{\"attendees\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "attendees": {
                        "type": "array",
                        "description": "Required attendee email addresses.",
                        "items": {
                          "type": "string"
                        }
                      },
                      "durationMinutes": {
                        "type": "number",
                        "description": "Meeting duration in minutes (default 30)."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "ISO 8601 search window start. Defaults to now."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "ISO 8601 search window end. Defaults to 7 days from now."
                      },
                      "maxCandidates": {
                        "type": "number",
                        "description": "Maximum number of slots to suggest (default 5)."
                      }
                    },
                    "required": [
                      "attendees"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_list_files": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "list_files",
        "operationId": "tmrw-onedrive_list_files",
        "description": "List files and folders in OneDrive. Defaults to the drive root.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_list_files\",\"arguments\":{\"folderPath\":\"<string>\",\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "folderPath": {
                        "type": "string",
                        "description": "Folder path relative to drive root (e.g. \"Documents/Reports\"). Omit for root."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_search_files": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "search_files",
        "operationId": "tmrw-onedrive_search_files",
        "description": "Search files across the entire OneDrive by name or content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_search_files\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_get_file_metadata": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "get_file_metadata",
        "operationId": "tmrw-onedrive_get_file_metadata",
        "description": "Get metadata for a file or folder by path.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_get_file_metadata\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File or folder path relative to drive root (e.g. \"Documents/report.docx\")."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_download_file": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "download_file",
        "operationId": "tmrw-onedrive_download_file",
        "description": "Download a file from OneDrive. Returns text content for text files, base64-encoded content otherwise. Best for files under 4 MB.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_download_file\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File path relative to drive root (e.g. \"Documents/report.docx\")."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_upload_file": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "upload_file",
        "operationId": "tmrw-onedrive_upload_file",
        "description": "Upload a small file (under 4 MB) to OneDrive. Pass either text content directly or base64-encoded binary content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_upload_file\",\"arguments\":{\"path\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "Destination path relative to drive root (e.g. \"Documents/notes.txt\")."
                      },
                      "content": {
                        "type": "string",
                        "description": "File content (text or base64)."
                      },
                      "encoding": {
                        "type": "string",
                        "description": "\"utf8\" (default) or \"base64\"."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type (default \"application/octet-stream\")."
                      }
                    },
                    "required": [
                      "path",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_create_folder": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "create_folder",
        "operationId": "tmrw-onedrive_create_folder",
        "description": "Create a new folder in OneDrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_create_folder\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parentPath": {
                        "type": "string",
                        "description": "Parent folder path relative to drive root. Omit for root."
                      },
                      "name": {
                        "type": "string",
                        "description": "New folder name."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_share_file": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "share_file",
        "operationId": "tmrw-onedrive_share_file",
        "description": "Create a sharing link for a file or folder. NOTE: this expands access to others — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_share_file\",\"arguments\":{\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "string",
                        "description": "File or folder path relative to drive root."
                      },
                      "type": {
                        "type": "string",
                        "description": "\"view\" (read-only) or \"edit\". Default \"view\"."
                      },
                      "scope": {
                        "type": "string",
                        "description": "\"anonymous\" (anyone with link) or \"organization\" (signed-in users only). Default \"organization\"."
                      }
                    },
                    "required": [
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_delete_file": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "delete_file",
        "operationId": "tmrw-onedrive_delete_file",
        "description": "Delete a file or folder from OneDrive by item ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_delete_file\",\"arguments\":{\"itemId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to delete."
                      }
                    },
                    "required": [
                      "itemId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_move_file": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "move_file",
        "operationId": "tmrw-onedrive_move_file",
        "description": "Move a file or folder to a different parent folder in OneDrive.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_move_file\",\"arguments\":{\"itemId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to move."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "The destination folder item ID."
                      }
                    },
                    "required": [
                      "itemId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-onedrive_copy_file": {
      "post": {
        "tags": [
          "tmrw-onedrive"
        ],
        "summary": "copy_file",
        "operationId": "tmrw-onedrive_copy_file",
        "description": "Copy a file in OneDrive to a different folder.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-onedrive_copy_file\",\"arguments\":{\"itemId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "itemId": {
                        "type": "string",
                        "description": "The drive item ID to copy."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "The destination folder item ID."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name for the copy."
                      }
                    },
                    "required": [
                      "itemId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_list_messages": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "list_messages",
        "operationId": "tmrw-outlook_list_messages",
        "description": "List messages from an Outlook mail folder (default: Inbox).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_list_messages\",\"arguments\":{\"top\":0,\"filter\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Number of messages to return (default 25)."
                      },
                      "filter": {
                        "type": "string",
                        "description": "OData $filter expression (e.g. \"isRead eq false\")."
                      },
                      "folderId": {
                        "type": "string",
                        "description": "Optional mail folder ID or well-known name (inbox, drafts, sentitems, deleteditems, junkemail, archive). Default: inbox."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_read_message": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "read_message",
        "operationId": "tmrw-outlook_read_message",
        "description": "Read a specific Outlook email message by ID, including body, recipients, and attachment metadata.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_read_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The Outlook message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_send_email": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "send_email",
        "operationId": "tmrw-outlook_send_email",
        "description": "Send an email via Outlook / Microsoft Graph. Supports multiple recipients, cc, bcc, and file attachments. For replies, use reply or reply_all instead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_send_email\",\"arguments\":{\"to\":null,\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "description": "Recipient(s). Single email, comma-separated string, or array of emails.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "cc": {
                        "description": "CC recipient(s). Single email, comma-separated string, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "bcc": {
                        "description": "BCC recipient(s). Single email, comma-separated string, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "subject": {
                        "type": "string",
                        "description": "Email subject."
                      },
                      "body": {
                        "type": "string",
                        "description": "Email body (HTML supported by default)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "Body content type: \"HTML\" (default) or \"Text\"."
                      },
                      "saveToSentItems": {
                        "type": "boolean",
                        "description": "Save to Sent Items (default true)."
                      },
                      "attachments": {
                        "type": "array",
                        "description": "Optional file attachments. Each item must include \"name\" (filename) plus either \"contentBytes\" (base64-encoded file content) or \"url\" (public/signed URL the server will fetch). Per-file inline limit is 3 MB; for larger files use create_draft + add_attachment.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Filename, e.g. \"Proposal.pdf\"."
                            },
                            "contentBytes": {
                              "type": "string",
                              "description": "Base64-encoded file content. Mutually exclusive with url."
                            },
                            "url": {
                              "type": "string",
                              "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                            },
                            "contentType": {
                              "type": "string",
                              "description": "MIME type (e.g. \"application/pdf\"). Auto-inferred from filename if omitted."
                            },
                            "isInline": {
                              "type": "boolean",
                              "description": "Mark as inline (referenced via cid:contentId from HTML body). Default false."
                            },
                            "contentId": {
                              "type": "string",
                              "description": "Optional Content-ID for inline attachments referenced from HTML body."
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    },
                    "required": [
                      "to",
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_search_messages": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "search_messages",
        "operationId": "tmrw-outlook_search_messages",
        "description": "Search Outlook emails. Use `query` for free-text ($search across subject/body/sender) OR use `filter`/`orderby` for structured OData queries. NOTE: Graph forbids combining $search with $filter or $orderby — if you pass query, filter/orderby are ignored.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_search_messages\",\"arguments\":{\"query\":\"<string>\",\"filter\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Free-text search across subject/body/from. Optional if filter is provided."
                      },
                      "filter": {
                        "type": "string",
                        "description": "OData $filter expression (e.g. \"from/emailAddress/address eq 'x@y.com'\", \"receivedDateTime ge 2026-04-01T00:00:00Z\", \"isRead eq false\"). Cannot be combined with query."
                      },
                      "orderby": {
                        "type": "string",
                        "description": "OData $orderby (e.g. \"receivedDateTime desc\"). Ignored if query is set. Default: receivedDateTime desc."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25, max 999)."
                      },
                      "skip": {
                        "type": "number",
                        "description": "OData $skip for pagination."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_reply": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "reply",
        "operationId": "tmrw-outlook_reply",
        "description": "Reply to an Outlook message, preserving threading. By default replies only to the sender. Set replyAll=true to reply to all recipients.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_reply\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being replied to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Reply body (HTML)."
                      },
                      "replyAll": {
                        "type": "boolean",
                        "description": "Reply-all instead of reply. Default false."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_reply_all": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "reply_all",
        "operationId": "tmrw-outlook_reply_all",
        "description": "Reply-all to an Outlook message, preserving threading. Sends to sender + all original To/Cc recipients.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_reply_all\",\"arguments\":{\"messageId\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being replied to."
                      },
                      "body": {
                        "type": "string",
                        "description": "Reply body (HTML)."
                      }
                    },
                    "required": [
                      "messageId",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_forward": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "forward",
        "operationId": "tmrw-outlook_forward",
        "description": "Forward an Outlook message to new recipients with an optional comment.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_forward\",\"arguments\":{\"messageId\":\"<string>\",\"to\":null}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "ID of the message being forwarded."
                      },
                      "to": {
                        "description": "Recipient(s). String, comma-separated, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "comment": {
                        "type": "string",
                        "description": "Optional comment prepended to the forwarded body."
                      }
                    },
                    "required": [
                      "messageId",
                      "to"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_create_draft": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "create_draft",
        "operationId": "tmrw-outlook_create_draft",
        "description": "Create a draft email in Outlook without sending. Supports inline attachments (≤3 MB each). Returns the draft ID which can later be sent or extended with add_attachment for larger files.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_create_draft\",\"arguments\":{\"subject\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "description": "Recipient(s). String, comma-separated, or array.",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "cc": {
                        "description": "CC recipient(s).",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "bcc": {
                        "description": "BCC recipient(s).",
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      },
                      "subject": {
                        "type": "string",
                        "description": "Subject line."
                      },
                      "body": {
                        "type": "string",
                        "description": "Body (HTML)."
                      },
                      "attachments": {
                        "type": "array",
                        "description": "Optional file attachments. Each item must include \"name\" (filename) plus either \"contentBytes\" (base64-encoded file content) or \"url\" (public/signed URL the server will fetch). Per-file inline limit is 3 MB; for larger files use create_draft + add_attachment.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Filename, e.g. \"Proposal.pdf\"."
                            },
                            "contentBytes": {
                              "type": "string",
                              "description": "Base64-encoded file content. Mutually exclusive with url."
                            },
                            "url": {
                              "type": "string",
                              "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                            },
                            "contentType": {
                              "type": "string",
                              "description": "MIME type (e.g. \"application/pdf\"). Auto-inferred from filename if omitted."
                            },
                            "isInline": {
                              "type": "boolean",
                              "description": "Mark as inline (referenced via cid:contentId from HTML body). Default false."
                            },
                            "contentId": {
                              "type": "string",
                              "description": "Optional Content-ID for inline attachments referenced from HTML body."
                            }
                          },
                          "required": [
                            "name"
                          ]
                        }
                      }
                    },
                    "required": [
                      "subject",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_add_attachment": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "add_attachment",
        "operationId": "tmrw-outlook_add_attachment",
        "description": "Attach a file to an existing Outlook draft message (from create_draft). Use this to add attachments larger than ~3 MB (handled via Graph upload session) or to add files to a draft after creation. Returns the attachment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_add_attachment\",\"arguments\":{\"messageId\":\"<string>\",\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "Draft message ID (from create_draft)."
                      },
                      "name": {
                        "type": "string",
                        "description": "Filename, e.g. \"Proposal.pdf\"."
                      },
                      "contentBytes": {
                        "type": "string",
                        "description": "Base64-encoded file content. Mutually exclusive with url."
                      },
                      "url": {
                        "type": "string",
                        "description": "URL the server will fetch to load the attachment. Mutually exclusive with contentBytes."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type. Auto-inferred from filename if omitted."
                      },
                      "isInline": {
                        "type": "boolean",
                        "description": "Mark as inline. Default false."
                      },
                      "contentId": {
                        "type": "string",
                        "description": "Optional Content-ID for inline attachments."
                      }
                    },
                    "required": [
                      "messageId",
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_send_draft": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "send_draft",
        "operationId": "tmrw-outlook_send_draft",
        "description": "Send an existing Outlook draft message (typically one created by create_draft + add_attachment).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_send_draft\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "Draft message ID to send."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_mark_read": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "mark_read",
        "operationId": "tmrw-outlook_mark_read",
        "description": "Mark an Outlook message as read or unread.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_mark_read\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "isRead": {
                        "type": "boolean",
                        "description": "true = mark read, false = mark unread. Default true."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_flag_message": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "flag_message",
        "operationId": "tmrw-outlook_flag_message",
        "description": "Flag or unflag an Outlook message for follow-up.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_flag_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "flagStatus": {
                        "type": "string",
                        "description": "One of: notFlagged, complete, flagged. Default: flagged."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_assign_category": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "assign_category",
        "operationId": "tmrw-outlook_assign_category",
        "description": "Apply Outlook color categories to a message. Categories are Outlook color tags (e.g. \"Red category\", \"Follow up\"). Pass an array of category names to set — this REPLACES existing categories on the message.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_assign_category\",\"arguments\":{\"messageId\":\"<string>\",\"categories\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "categories": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of category names to apply. Empty array clears all categories."
                      }
                    },
                    "required": [
                      "messageId",
                      "categories"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_list_categories": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "list_categories",
        "operationId": "tmrw-outlook_list_categories",
        "description": "List all Outlook master categories defined on the mailbox (the color-tag names that can be applied to messages).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_list_categories\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_move_message": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "move_message",
        "operationId": "tmrw-outlook_move_message",
        "description": "Move an Outlook message to a different folder. destinationFolderId accepts a folder ID or a well-known name (inbox, archive, deleteditems, junkemail, drafts, sentitems).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_move_message\",\"arguments\":{\"messageId\":\"<string>\",\"destinationFolderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID to move."
                      },
                      "destinationFolderId": {
                        "type": "string",
                        "description": "Target folder ID or well-known name."
                      }
                    },
                    "required": [
                      "messageId",
                      "destinationFolderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_list_folders": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "list_folders",
        "operationId": "tmrw-outlook_list_folders",
        "description": "List Outlook mail folders with their IDs, names, and unread counts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_list_folders\",\"arguments\":{\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Max folders to return (default 50)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_delete_message": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "delete_message",
        "operationId": "tmrw-outlook_delete_message",
        "description": "Delete (soft-delete to Deleted Items) an Outlook message. This is reversible — user can restore from Deleted Items until it is permanently purged.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_delete_message\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID to delete."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_list_attachments": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "list_attachments",
        "operationId": "tmrw-outlook_list_attachments",
        "description": "List attachments on an Outlook message with their IDs, names, sizes, and content types.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_list_attachments\",\"arguments\":{\"messageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      }
                    },
                    "required": [
                      "messageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_download_attachment": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "download_attachment",
        "operationId": "tmrw-outlook_download_attachment",
        "description": "Download the content of a specific email attachment by message ID and attachment ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_download_attachment\",\"arguments\":{\"messageId\":\"<string>\",\"attachmentId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageId": {
                        "type": "string",
                        "description": "The message ID."
                      },
                      "attachmentId": {
                        "type": "string",
                        "description": "The attachment ID (from list_attachments)."
                      }
                    },
                    "required": [
                      "messageId",
                      "attachmentId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_list_rules": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "list_rules",
        "operationId": "tmrw-outlook_list_rules",
        "description": "List inbox rules configured for the Outlook mailbox.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_list_rules\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_create_rule": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "create_rule",
        "operationId": "tmrw-outlook_create_rule",
        "description": "Create a new inbox rule in Outlook.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_create_rule\",\"arguments\":{\"displayName\":\"<string>\",\"conditions\":{},\"actions\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "displayName": {
                        "type": "string",
                        "description": "Name for the rule."
                      },
                      "conditions": {
                        "type": "object",
                        "description": "Rule conditions object (Graph messageRulePredicates)."
                      },
                      "actions": {
                        "type": "object",
                        "description": "Rule actions object (Graph messageRuleActions)."
                      },
                      "isEnabled": {
                        "type": "boolean",
                        "description": "Whether the rule is enabled (default true)."
                      }
                    },
                    "required": [
                      "displayName",
                      "conditions",
                      "actions"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_update_rule": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "update_rule",
        "operationId": "tmrw-outlook_update_rule",
        "description": "Update an existing Outlook inbox rule by ID. Pass any subset of displayName/conditions/actions/isEnabled/sequence.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_update_rule\",\"arguments\":{\"ruleId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ruleId": {
                        "type": "string",
                        "description": "The inbox rule ID (from list_rules)."
                      },
                      "displayName": {
                        "type": "string",
                        "description": "New rule name."
                      },
                      "conditions": {
                        "type": "object",
                        "description": "Updated conditions (messageRulePredicates)."
                      },
                      "actions": {
                        "type": "object",
                        "description": "Updated actions (messageRuleActions)."
                      },
                      "isEnabled": {
                        "type": "boolean",
                        "description": "Enable/disable the rule."
                      },
                      "sequence": {
                        "type": "number",
                        "description": "Execution order (lower runs first)."
                      }
                    },
                    "required": [
                      "ruleId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-outlook_delete_rule": {
      "post": {
        "tags": [
          "tmrw-outlook"
        ],
        "summary": "delete_rule",
        "operationId": "tmrw-outlook_delete_rule",
        "description": "Delete an Outlook inbox rule by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-outlook_delete_rule\",\"arguments\":{\"ruleId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ruleId": {
                        "type": "string",
                        "description": "The inbox rule ID to delete."
                      }
                    },
                    "required": [
                      "ruleId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_list_sites": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "list_sites",
        "operationId": "tmrw-sharepoint_list_sites",
        "description": "List SharePoint sites the current user can access. Defaults to followed sites.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_list_sites\",\"arguments\":{\"search\":\"<string>\",\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "search": {
                        "type": "string",
                        "description": "Optional search query to filter sites by name. If omitted, returns followed sites."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max sites to return (default 25)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_get_site": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "get_site",
        "operationId": "tmrw-sharepoint_get_site",
        "description": "Get SharePoint site metadata by site ID or by hostname + path (e.g. \"contoso.sharepoint.com:/sites/Marketing\").\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_get_site\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "Either a site ID (from list_sites) or \"hostname:/sites/path\" form."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_list_document_libraries": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "list_document_libraries",
        "operationId": "tmrw-sharepoint_list_document_libraries",
        "description": "List the document libraries (drives) inside a SharePoint site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_list_document_libraries\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_list_files": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "list_files",
        "operationId": "tmrw-sharepoint_list_files",
        "description": "List files and folders in a SharePoint document library. Defaults to the library root.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_list_files\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "folderPath": {
                        "type": "string",
                        "description": "Folder path inside the library (e.g. \"Reports/2026\"). Omit for the library root."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_search_files": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "search_files",
        "operationId": "tmrw-sharepoint_search_files",
        "description": "Search SharePoint for files matching a query. Searches across all sites the user can access.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_search_files\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max results (default 25)."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_get_file_metadata": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "get_file_metadata",
        "operationId": "tmrw-sharepoint_get_file_metadata",
        "description": "Get metadata for a file or folder inside a SharePoint document library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_get_file_metadata\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File or folder path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_download_file": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "download_file",
        "operationId": "tmrw-sharepoint_download_file",
        "description": "Download a file from a SharePoint document library. Returns text content for text files, base64-encoded otherwise. Best for files under 4 MB.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_download_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_upload_file": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "upload_file",
        "operationId": "tmrw-sharepoint_upload_file",
        "description": "Upload a small file (under 4 MB) into a SharePoint document library. Pass either text content directly or base64-encoded binary content.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_upload_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Destination path inside the library."
                      },
                      "content": {
                        "type": "string",
                        "description": "File content (text or base64)."
                      },
                      "encoding": {
                        "type": "string",
                        "description": "\"utf8\" (default) or \"base64\"."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "MIME type (default \"application/octet-stream\")."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_list_pages": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "list_pages",
        "operationId": "tmrw-sharepoint_list_pages",
        "description": "List SharePoint pages (modern site pages) in a site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_list_pages\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max pages to return (default 25)."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_list_lists": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "list_lists",
        "operationId": "tmrw-sharepoint_list_lists",
        "description": "List SharePoint lists in a site (e.g. tasks, contacts, custom lists).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_list_lists\",\"arguments\":{\"siteId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      }
                    },
                    "required": [
                      "siteId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_get_list_items": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "get_list_items",
        "operationId": "tmrw-sharepoint_get_list_items",
        "description": "Get items from a SharePoint list, including their fields.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_get_list_items\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID (from list_lists)."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max items to return (default 50)."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_create_list_item": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "create_list_item",
        "operationId": "tmrw-sharepoint_create_list_item",
        "description": "Create a new item in a SharePoint list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_create_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"fields\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "fields": {
                        "type": "object",
                        "description": "Field values for the new item (e.g. { \"Title\": \"My Item\" })."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "fields"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_update_list_item": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "update_list_item",
        "operationId": "tmrw-sharepoint_update_list_item",
        "description": "Update fields on an existing SharePoint list item.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_update_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"itemId\":\"<string>\",\"fields\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "itemId": {
                        "type": "string",
                        "description": "The list item ID to update."
                      },
                      "fields": {
                        "type": "object",
                        "description": "Field values to update."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "itemId",
                      "fields"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_delete_list_item": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "delete_list_item",
        "operationId": "tmrw-sharepoint_delete_list_item",
        "description": "Delete a SharePoint list item by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_delete_list_item\",\"arguments\":{\"siteId\":\"<string>\",\"listId\":\"<string>\",\"itemId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "listId": {
                        "type": "string",
                        "description": "The list ID."
                      },
                      "itemId": {
                        "type": "string",
                        "description": "The list item ID to delete."
                      }
                    },
                    "required": [
                      "siteId",
                      "listId",
                      "itemId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_delete_file": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "delete_file",
        "operationId": "tmrw-sharepoint_delete_file",
        "description": "Delete a file or folder from a SharePoint document library. Moves to recycle bin.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_delete_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "File or folder path inside the library."
                      }
                    },
                    "required": [
                      "siteId",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_move_file": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "move_file",
        "operationId": "tmrw-sharepoint_move_file",
        "description": "Move a file or folder to a different location in a SharePoint document library.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_move_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"destinationFolderPath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Source file/folder path."
                      },
                      "destinationFolderPath": {
                        "type": "string",
                        "description": "Target parent folder path (e.g. \"Reports/Archive\"). Root if empty."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name after move."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "destinationFolderPath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-sharepoint_copy_file": {
      "post": {
        "tags": [
          "tmrw-sharepoint"
        ],
        "summary": "copy_file",
        "operationId": "tmrw-sharepoint_copy_file",
        "description": "Copy a file or folder to a different location in a SharePoint document library. Returns a monitor URL; copy runs asynchronously.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-sharepoint_copy_file\",\"arguments\":{\"siteId\":\"<string>\",\"path\":\"<string>\",\"destinationFolderPath\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "siteId": {
                        "type": "string",
                        "description": "The SharePoint site ID."
                      },
                      "driveId": {
                        "type": "string",
                        "description": "Document library (drive) ID. Omit to use the default document library."
                      },
                      "path": {
                        "type": "string",
                        "description": "Source file/folder path."
                      },
                      "destinationFolderPath": {
                        "type": "string",
                        "description": "Target parent folder path."
                      },
                      "newName": {
                        "type": "string",
                        "description": "Optional new name for the copy."
                      }
                    },
                    "required": [
                      "siteId",
                      "path",
                      "destinationFolderPath"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_list_teams": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "list_teams",
        "operationId": "tmrw-teams_list_teams",
        "description": "List all Microsoft Teams the current user is a member of.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_list_teams\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_list_channels": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "list_channels",
        "operationId": "tmrw-teams_list_channels",
        "description": "List channels in a specific team.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_list_channels\",\"arguments\":{\"teamId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID (from list_teams)."
                      }
                    },
                    "required": [
                      "teamId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_list_channel_messages": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "list_channel_messages",
        "operationId": "tmrw-teams_list_channel_messages",
        "description": "List recent messages in a Teams channel.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_list_channel_messages\",\"arguments\":{\"teamId\":\"<string>\",\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID."
                      },
                      "channelId": {
                        "type": "string",
                        "description": "The channel ID."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25)."
                      }
                    },
                    "required": [
                      "teamId",
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_send_channel_message": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "send_channel_message",
        "operationId": "tmrw-teams_send_channel_message",
        "description": "Post a message to a Teams channel. NOTE: this is visible to all channel members — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_send_channel_message\",\"arguments\":{\"teamId\":\"<string>\",\"channelId\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "teamId": {
                        "type": "string",
                        "description": "The team ID."
                      },
                      "channelId": {
                        "type": "string",
                        "description": "The channel ID."
                      },
                      "message": {
                        "type": "string",
                        "description": "Message content (HTML supported)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "\"html\" (default) or \"text\"."
                      }
                    },
                    "required": [
                      "teamId",
                      "channelId",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_list_chats": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "list_chats",
        "operationId": "tmrw-teams_list_chats",
        "description": "List 1:1 and group chats the current user is part of.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_list_chats\",\"arguments\":{\"top\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "top": {
                        "type": "number",
                        "description": "Max chats to return (default 25)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_get_chat_messages": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "get_chat_messages",
        "operationId": "tmrw-teams_get_chat_messages",
        "description": "Get recent messages from a specific Teams chat (1:1 or group).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_get_chat_messages\",\"arguments\":{\"chatId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "chatId": {
                        "type": "string",
                        "description": "The chat ID (from list_chats)."
                      },
                      "top": {
                        "type": "number",
                        "description": "Max messages to return (default 25)."
                      }
                    },
                    "required": [
                      "chatId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_send_chat_message": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "send_chat_message",
        "operationId": "tmrw-teams_send_chat_message",
        "description": "Send a message to a Teams chat (1:1 or group). NOTE: this notifies recipients — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_send_chat_message\",\"arguments\":{\"chatId\":\"<string>\",\"message\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "chatId": {
                        "type": "string",
                        "description": "The chat ID."
                      },
                      "message": {
                        "type": "string",
                        "description": "Message content (HTML supported)."
                      },
                      "contentType": {
                        "type": "string",
                        "description": "\"html\" (default) or \"text\"."
                      }
                    },
                    "required": [
                      "chatId",
                      "message"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=tmrw-teams_create_online_meeting": {
      "post": {
        "tags": [
          "tmrw-teams"
        ],
        "summary": "create_online_meeting",
        "operationId": "tmrw-teams_create_online_meeting",
        "description": "Create a Teams online meeting. NOTE: this sends calendar invites to participants — caller must confirm with the user before invoking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"tmrw-teams_create_online_meeting\",\"arguments\":{\"subject\":\"<string>\",\"startDateTime\":\"<string>\",\"endDateTime\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Meeting subject."
                      },
                      "startDateTime": {
                        "type": "string",
                        "description": "Start time in ISO 8601 format (e.g. \"2026-04-15T09:00:00Z\")."
                      },
                      "endDateTime": {
                        "type": "string",
                        "description": "End time in ISO 8601 format (e.g. \"2026-04-15T10:00:00Z\")."
                      },
                      "participants": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Optional array of participant email addresses."
                      }
                    },
                    "required": [
                      "subject",
                      "startDateTime",
                      "endDateTime"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_send_sms": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "send_sms",
        "operationId": "twilio_send_sms",
        "description": "Send a plain-text SMS. Pass either `from` (E.164 number on your Twilio account) or `messagingServiceSid` — if neither is given, the connection's defaultMessagingServiceSid / defaultFrom is used. Refuses to send to numbers in the user's sms_opt_outs registry (TCPA compliance). For US destinations, the sending number must be associated with an approved A2P 10DLC campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_send_sms\",\"arguments\":{\"to\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "Destination phone in E.164, e.g. \"+14155550123\"."
                      },
                      "body": {
                        "type": "string",
                        "description": "Message text (≤ 1600 chars; carriers segment over 160)."
                      },
                      "from": {
                        "type": "string",
                        "description": "Sender E.164 phone you own on Twilio."
                      },
                      "messagingServiceSid": {
                        "type": "string",
                        "description": "Messaging Service SID (\"MGxxx\") — used instead of `from` to enable Copilot routing, sender pool, sticky sender."
                      },
                      "statusCallback": {
                        "type": "string",
                        "description": "HTTPS URL Twilio POSTs delivery-status updates to."
                      },
                      "mediaUrl": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "For MMS, list of media URLs. Prefer send_mms for clarity."
                      },
                      "shortenUrls": {
                        "type": "boolean",
                        "description": "Enable click-tracking URL shortening (Messaging Service must have it enabled)."
                      },
                      "forceBypass": {
                        "type": "boolean",
                        "description": "Bypass the opt-out check. Reserved for transactional / customer-care messages where consent is otherwise documented. Logged."
                      }
                    },
                    "required": [
                      "to",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_send_mms": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "send_mms",
        "operationId": "twilio_send_mms",
        "description": "Send a multimedia (MMS) message — same as send_sms but always carries one or more media URLs. Media must be publicly accessible HTTPS URLs; Twilio fetches and re-hosts. Carrier size/format limits apply (typically ≤ 5 MB, JPG/PNG/GIF).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_send_mms\",\"arguments\":{\"to\":\"<string>\",\"mediaUrl\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "Destination phone in E.164."
                      },
                      "body": {
                        "type": "string",
                        "description": "Optional caption text."
                      },
                      "mediaUrl": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "One or more public HTTPS media URLs (Twilio fetches and re-hosts)."
                      },
                      "from": {
                        "type": "string"
                      },
                      "messagingServiceSid": {
                        "type": "string"
                      },
                      "statusCallback": {
                        "type": "string"
                      },
                      "forceBypass": {
                        "type": "boolean",
                        "description": "Bypass opt-out check. Logged."
                      }
                    },
                    "required": [
                      "to",
                      "mediaUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_list_messages": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "list_messages",
        "operationId": "twilio_list_messages",
        "description": "List Messages on the account. Filter by To, From, DateSent. Returns latest 50 by default. Each message has a status (queued, sending, sent, delivered, failed, undelivered).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_list_messages\",\"arguments\":{\"to\":\"<string>\",\"from\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "to": {
                        "type": "string",
                        "description": "Filter messages by To (destination) phone."
                      },
                      "from": {
                        "type": "string",
                        "description": "Filter messages by From (sender) phone."
                      },
                      "dateSent": {
                        "type": "string",
                        "description": "ISO date — messages sent on this day."
                      },
                      "dateSentAfter": {
                        "type": "string",
                        "description": "ISO datetime — messages sent on/after."
                      },
                      "dateSentBefore": {
                        "type": "string",
                        "description": "ISO datetime — messages sent on/before."
                      },
                      "pageSize": {
                        "type": "number",
                        "description": "Results per page (max 1000, default 50)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_get_delivery_status": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "get_delivery_status",
        "operationId": "twilio_get_delivery_status",
        "description": "Fetch the current Twilio Message resource by SID — includes status, error code/message, price, segment count, mediaUrls. Use this to poll an outbound message after sending.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_get_delivery_status\",\"arguments\":{\"messageSid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messageSid": {
                        "type": "string",
                        "description": "Message SID (\"SMxxx\" or \"MMxxx\")."
                      }
                    },
                    "required": [
                      "messageSid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_list_phone_numbers": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "list_phone_numbers",
        "operationId": "twilio_list_phone_numbers",
        "description": "List phone numbers currently owned by your Twilio account (IncomingPhoneNumbers). Returns capabilities (SMS, MMS, voice), per-number config (smsUrl, voiceUrl), and friendly name.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_list_phone_numbers\",\"arguments\":{\"phoneNumber\":\"<string>\",\"friendlyName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "phoneNumber": {
                        "type": "string",
                        "description": "Exact-match filter on the phone number."
                      },
                      "friendlyName": {
                        "type": "string",
                        "description": "Substring filter on friendly name."
                      },
                      "pageSize": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_buy_number": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "buy_number",
        "operationId": "twilio_buy_number",
        "description": "Provision a new phone number on your account. Pass either `phoneNumber` (exact) from a prior AvailablePhoneNumbers search, or `areaCode` for a random match. US local numbers and toll-free have different ToS — toll-free requires a verification submission for SMS use.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_buy_number\",\"arguments\":{\"phoneNumber\":\"<string>\",\"areaCode\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "phoneNumber": {
                        "type": "string",
                        "description": "Exact E.164 number to buy (must be available)."
                      },
                      "areaCode": {
                        "type": "string",
                        "description": "US 3-digit area code — Twilio picks a random number in it."
                      },
                      "country": {
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 (e.g. \"US\"). Defaults to US."
                      },
                      "friendlyName": {
                        "type": "string",
                        "description": "Human label for the new number."
                      },
                      "smsUrl": {
                        "type": "string",
                        "description": "Inbound SMS webhook URL — Twilio POSTs to this on receipt."
                      },
                      "voiceUrl": {
                        "type": "string",
                        "description": "Inbound voice webhook URL."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_configure_number": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "configure_number",
        "operationId": "twilio_configure_number",
        "description": "Update an existing phone number's webhooks / friendly name / messaging-service membership. Used to point a number at your inbound-SMS endpoint.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_configure_number\",\"arguments\":{\"phoneNumberSid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "phoneNumberSid": {
                        "type": "string",
                        "description": "IncomingPhoneNumber SID (\"PNxxx\")."
                      },
                      "friendlyName": {
                        "type": "string"
                      },
                      "smsUrl": {
                        "type": "string",
                        "description": "Inbound SMS webhook URL."
                      },
                      "smsMethod": {
                        "type": "string",
                        "description": "POST or GET — default POST."
                      },
                      "smsFallbackUrl": {
                        "type": "string"
                      },
                      "voiceUrl": {
                        "type": "string"
                      },
                      "voiceMethod": {
                        "type": "string"
                      },
                      "statusCallback": {
                        "type": "string",
                        "description": "Webhook for outbound-message status updates on this number."
                      }
                    },
                    "required": [
                      "phoneNumberSid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_create_short_link": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "create_short_link",
        "operationId": "twilio_create_short_link",
        "description": "Create a click-tracked short link for embedding in SMS. Backed by the router's own /r/:code link shortener (Twilio has no standalone shortener REST endpoint — link shortening at Twilio is only available as automatic URL wrapping inside Messaging Services when shorten_urls=true). The returned shortUrl is the riks-cave domain; clicks are tracked in the user's Link analytics. Pair with `send_sms({ body: 'Hi — see your offer: <shortUrl>' })`.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_create_short_link\",\"arguments\":{\"longUrl\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "longUrl": {
                        "type": "string",
                        "description": "Destination URL (http/https, ≤ 2048 chars)."
                      },
                      "title": {
                        "type": "string",
                        "description": "Optional internal label for the link."
                      },
                      "expiresAt": {
                        "type": "string",
                        "description": "Optional ISO 8601 expiry — link returns 410 after this."
                      }
                    },
                    "required": [
                      "longUrl"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_handle_inbound_reply": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "handle_inbound_reply",
        "operationId": "twilio_handle_inbound_reply",
        "description": "Process an inbound SMS body for compliance keywords (STOP / UNSUBSCRIBE / HELP / START etc.). If STOP-family detected, adds the From number to the user's sms_opt_outs registry and (optionally) sends the carrier-required confirmation back via Twilio. If HELP detected, sends the configured help reply. If START detected, removes the number from the opt-out registry. Idempotent — safe to call from a webhook that may retry. Call this from your Twilio inbound-SMS webhook handler.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_handle_inbound_reply\",\"arguments\":{\"from\":\"<string>\",\"body\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "from": {
                        "type": "string",
                        "description": "Inbound From number (E.164)."
                      },
                      "to": {
                        "type": "string",
                        "description": "Inbound To number — your Twilio number."
                      },
                      "body": {
                        "type": "string",
                        "description": "Inbound message body verbatim."
                      },
                      "sendConfirmation": {
                        "type": "boolean",
                        "description": "If true, sends the carrier-required reply (default true). Disable if your messaging service auto-handles keywords."
                      },
                      "helpText": {
                        "type": "string",
                        "description": "Override the default HELP reply. Default: 'Reply STOP to unsubscribe. Msg & data rates may apply.'"
                      },
                      "stopText": {
                        "type": "string",
                        "description": "Override the default STOP confirmation. Default: 'You have been unsubscribed and will receive no further messages.'"
                      }
                    },
                    "required": [
                      "from",
                      "body"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_list_opt_outs": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "list_opt_outs",
        "operationId": "twilio_list_opt_outs",
        "description": "List all phone numbers currently in the user's sms_opt_outs registry, newest first.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_list_opt_outs\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max rows to return (1-1000, default 100)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_remove_opt_out": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "remove_opt_out",
        "operationId": "twilio_remove_opt_out",
        "description": "Manually remove a phone number from the opt-out registry — for support / re-consent flows where the user has confirmed re-opt-in via another channel. Logs reason.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_remove_opt_out\",\"arguments\":{\"phone\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "phone": {
                        "type": "string",
                        "description": "Phone in E.164 (will be normalized)."
                      },
                      "reason": {
                        "type": "string",
                        "description": "Audit note for why this was cleared."
                      }
                    },
                    "required": [
                      "phone"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_register_a2p_brand": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "register_a2p_brand",
        "operationId": "twilio_register_a2p_brand",
        "description": "Register a Trust Hub Customer Profile + A2P Brand for US 10DLC SMS compliance. Required since 2023 for high-volume long-code SMS to US numbers. Submission is async — Twilio reviews in 1-7 business days. Returns the BrandRegistration SID; poll `get_a2p_brand` for status. You need a valid EIN, business address, and authorised contact before calling this.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_register_a2p_brand\",\"arguments\":{\"customerProfileBundleSid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "customerProfileBundleSid": {
                        "type": "string",
                        "description": "BU-prefixed SID of an APPROVED Trust Hub Customer Profile bundle. Create via Twilio Console → Trust Hub before calling."
                      },
                      "a2pProfileBundleSid": {
                        "type": "string",
                        "description": "BU-prefixed SID of the secondary A2P Trust Profile bundle (required for STANDARD brands)."
                      },
                      "brandType": {
                        "type": "string",
                        "description": "STANDARD (full review, sole-prop allowed) or STARTER (lower TPS, no review). Defaults to STANDARD."
                      },
                      "skipAutomaticSecVet": {
                        "type": "boolean",
                        "description": "Skip the $40 automatic vetting score lookup. Defaults to false."
                      }
                    },
                    "required": [
                      "customerProfileBundleSid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_get_a2p_brand": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "get_a2p_brand",
        "operationId": "twilio_get_a2p_brand",
        "description": "Fetch a BrandRegistration by SID to check approval status (PENDING / APPROVED / FAILED / IN_REVIEW). Poll after register_a2p_brand.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_get_a2p_brand\",\"arguments\":{\"brandSid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "brandSid": {
                        "type": "string",
                        "description": "BN-prefixed BrandRegistration SID."
                      }
                    },
                    "required": [
                      "brandSid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twilio_register_a2p_campaign": {
      "post": {
        "tags": [
          "twilio"
        ],
        "summary": "register_a2p_campaign",
        "operationId": "twilio_register_a2p_campaign",
        "description": "Register an A2P 10DLC campaign use case against an APPROVED brand. Required before US long-code SMS volume scales beyond demo limits. Use cases: MARKETING, ACCOUNT_NOTIFICATION, CUSTOMER_CARE, 2FA, MIXED, etc. Returns the US_APP_TO_PERSON campaign SID — attach it to a Messaging Service to send under the campaign.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twilio_register_a2p_campaign\",\"arguments\":{\"messagingServiceSid\":\"<string>\",\"brandRegistrationSid\":\"<string>\",\"usAppToPersonUsecase\":\"<string>\",\"description\":\"<string>\",\"messageSamples\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "messagingServiceSid": {
                        "type": "string",
                        "description": "MG-prefixed Messaging Service SID that will own this campaign."
                      },
                      "brandRegistrationSid": {
                        "type": "string",
                        "description": "BN-prefixed brand SID (must be APPROVED)."
                      },
                      "usAppToPersonUsecase": {
                        "type": "string",
                        "description": "Campaign use case, e.g. MARKETING, CUSTOMER_CARE, 2FA, MIXED."
                      },
                      "description": {
                        "type": "string",
                        "description": "Plain-English description of what messages you send (carriers review this)."
                      },
                      "messageSamples": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "2-5 sample messages a recipient could receive."
                      },
                      "helpKeywords": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "optInKeywords": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "optOutKeywords": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "helpMessage": {
                        "type": "string"
                      },
                      "optInMessage": {
                        "type": "string"
                      },
                      "optOutMessage": {
                        "type": "string"
                      },
                      "hasEmbeddedLinks": {
                        "type": "boolean"
                      },
                      "hasEmbeddedPhone": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "messagingServiceSid",
                      "brandRegistrationSid",
                      "usAppToPersonUsecase",
                      "description",
                      "messageSamples"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twitter_twitter_get_me": {
      "post": {
        "tags": [
          "twitter"
        ],
        "summary": "twitter_get_me",
        "operationId": "twitter_twitter_get_me",
        "description": "Get the authenticated Twitter/X user's profile (id, username, name).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twitter_twitter_get_me\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twitter_twitter_tweet": {
      "post": {
        "tags": [
          "twitter"
        ],
        "summary": "twitter_tweet",
        "operationId": "twitter_twitter_tweet",
        "description": "Post a single tweet. Max 280 chars. Returns { id, text }. Optionally reply to another tweet with replyToTweetId.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twitter_twitter_tweet\",\"arguments\":{\"text\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "description": "Tweet text, max 280 chars."
                      },
                      "replyToTweetId": {
                        "type": "string",
                        "description": "Tweet ID to reply to."
                      }
                    },
                    "required": [
                      "text"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twitter_twitter_thread": {
      "post": {
        "tags": [
          "twitter"
        ],
        "summary": "twitter_thread",
        "operationId": "twitter_twitter_thread",
        "description": "Post a thread of N tweets. Each subsequent tweet replies to the previous. Returns array of { id, text } in order.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twitter_twitter_thread\",\"arguments\":{\"tweets\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "tweets": {
                        "type": "array",
                        "description": "Array of tweet texts in thread order.",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "tweets"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twitter_twitter_list_recent": {
      "post": {
        "tags": [
          "twitter"
        ],
        "summary": "twitter_list_recent",
        "operationId": "twitter_twitter_list_recent",
        "description": "List the authenticated user's recent tweets (default 10, max 100).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twitter_twitter_list_recent\",\"arguments\":{\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=twitter_twitter_post_campaign": {
      "post": {
        "tags": [
          "twitter"
        ],
        "summary": "twitter_post_campaign",
        "operationId": "twitter_twitter_post_campaign",
        "description": "Publish a scheduled CampaignChannel (channel=TWITTER). Content payload shape: { text } for single tweet, or { tweets: [...] } for a thread. Updates the CampaignChannel with publishedAt + providerRef.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"twitter_twitter_post_campaign\",\"arguments\":{\"channelId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "channelId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "channelId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=video_video_generate": {
      "post": {
        "tags": [
          "video"
        ],
        "summary": "video_generate",
        "operationId": "video_video_generate",
        "description": "Start a text-to-video generation job. Returns { jobId, status: \"QUEUED\", estimatedMs }. Poll with video_status. Supports Runway Gen-3 (5s or 10s clips). Uses credits; refunded if the provider fails.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"video_video_generate\",\"arguments\":{\"prompt\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "prompt": {
                        "type": "string",
                        "description": "Text description of the video."
                      },
                      "provider": {
                        "type": "string",
                        "enum": [
                          "runway"
                        ],
                        "description": "Provider. Default: runway."
                      },
                      "duration": {
                        "type": "number",
                        "enum": [
                          5,
                          10
                        ],
                        "description": "Clip length in seconds. Default 5."
                      },
                      "aspectRatio": {
                        "type": "string",
                        "enum": [
                          "16:9",
                          "9:16",
                          "1:1"
                        ],
                        "description": "Aspect ratio. Default 16:9."
                      }
                    },
                    "required": [
                      "prompt"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=video_video_avatar": {
      "post": {
        "tags": [
          "video"
        ],
        "summary": "video_avatar",
        "operationId": "video_video_avatar",
        "description": "Start a script-to-avatar video job (talking head). Returns { jobId }. Poll with video_status. Uses HeyGen by default. Pass avatarId + voiceId from HeyGen's asset library, or leave blank to use defaults.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"video_video_avatar\",\"arguments\":{\"script\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "script": {
                        "type": "string",
                        "description": "What the avatar should say."
                      },
                      "avatarId": {
                        "type": "string",
                        "description": "HeyGen avatar_id. Default uses a stock avatar."
                      },
                      "voiceId": {
                        "type": "string",
                        "description": "HeyGen voice_id. Default uses voice matching avatar."
                      }
                    },
                    "required": [
                      "script"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=video_video_voiceover": {
      "post": {
        "tags": [
          "video"
        ],
        "summary": "video_voiceover",
        "operationId": "video_video_voiceover",
        "description": "Synthesize a voiceover from text using ElevenLabs TTS. Stored as an audio Asset. Returns { assetId, url, sizeBytes }. This is SYNCHRONOUS — completes in seconds.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"video_video_voiceover\",\"arguments\":{\"text\":\"<string>\",\"voiceId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "description": "Text to speak (max ~5000 chars)."
                      },
                      "voiceId": {
                        "type": "string",
                        "description": "ElevenLabs voice_id. Required."
                      }
                    },
                    "required": [
                      "text",
                      "voiceId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=video_video_status": {
      "post": {
        "tags": [
          "video"
        ],
        "summary": "video_status",
        "operationId": "video_video_status",
        "description": "Check the status of a video generation job. Returns { jobId, status, progressPct, assetId?, url?, errorMessage? }.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"video_video_status\",\"arguments\":{\"jobId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "jobId": {
                        "type": "string",
                        "description": "The jobId returned by video_generate or video_avatar."
                      }
                    },
                    "required": [
                      "jobId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=video_video_list": {
      "post": {
        "tags": [
          "video"
        ],
        "summary": "video_list",
        "operationId": "video_video_list",
        "description": "List the caller's recent video jobs.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"video_video_list\",\"arguments\":{\"limit\":0,\"status\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max results (default 20, max 100)."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "QUEUED",
                          "RUNNING",
                          "COMPLETED",
                          "FAILED",
                          "CANCELLED"
                        ],
                        "description": "Filter by status."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=video_video_storyboard": {
      "post": {
        "tags": [
          "video"
        ],
        "summary": "video_storyboard",
        "operationId": "video_video_storyboard",
        "description": "Break a video concept into a scene-by-scene storyboard using Claude. Returns { scenes: [{sceneNumber, description, durationSec, prompt}] }. Useful for iterating on a video plan BEFORE paying to render — do 10 cheap iterations here, then fire one video_generate per scene with polished prompts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"video_video_storyboard\",\"arguments\":{\"concept\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "concept": {
                        "type": "string",
                        "description": "The high-level video idea."
                      },
                      "totalDurationSec": {
                        "type": "number",
                        "description": "Target total length in seconds. Default 30."
                      },
                      "sceneCount": {
                        "type": "number",
                        "description": "How many scenes. Default 6."
                      },
                      "style": {
                        "type": "string",
                        "description": "Visual style hint. E.g. \"cinematic, dusk, product-focused\"."
                      }
                    },
                    "required": [
                      "concept"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_login": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "login",
        "operationId": "winterleaf_login",
        "description": "Login to Winterleaf Portal. Returns access and refresh tokens. Usually handled automatically.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_login\",\"arguments\":{\"username\":\"<string>\",\"password\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "username": {
                        "type": "string",
                        "description": "Username (uses credential default if omitted)."
                      },
                      "password": {
                        "type": "string",
                        "description": "Password (uses credential default if omitted)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_countries": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_countries",
        "operationId": "winterleaf_get_countries",
        "description": "List all countries with id, code, name, and phone code.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_countries\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_states": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_states",
        "operationId": "winterleaf_get_states",
        "description": "List states for a country by country short code (e.g. US, IN).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_states\",\"arguments\":{\"country_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "country_code": {
                        "type": "string",
                        "description": "Country short code (e.g. US)."
                      }
                    },
                    "required": [
                      "country_code"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_signup_user": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "signup_user",
        "operationId": "winterleaf_signup_user",
        "description": "Register a new user without an enrollment package.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_signup_user\",\"arguments\":{\"sponsor\":\"<string>\",\"first_name\":\"<string>\",\"last_name\":\"<string>\",\"username\":\"<string>\",\"email\":\"<string>\",\"password\":\"<string>\",\"country_code\":\"<string>\",\"phone_number\":\"<string>\",\"agree_terms\":\"<string>\",\"user_type\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "sponsor": {
                        "type": "string"
                      },
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "username": {
                        "type": "string"
                      },
                      "email": {
                        "type": "string"
                      },
                      "password": {
                        "type": "string"
                      },
                      "country_code": {
                        "type": "string"
                      },
                      "phone_number": {
                        "type": "string"
                      },
                      "agree_terms": {
                        "type": "string",
                        "description": "Must be '1'."
                      },
                      "user_type": {
                        "type": "string"
                      },
                      "subdomain": {
                        "type": "string"
                      },
                      "date_of_birth": {
                        "type": "string"
                      },
                      "gender": {
                        "type": "string"
                      },
                      "current_assets_value": {
                        "type": "string"
                      },
                      "network_count": {
                        "type": "string"
                      },
                      "place_genealogy": {
                        "type": "boolean"
                      },
                      "position": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "sponsor",
                      "first_name",
                      "last_name",
                      "username",
                      "email",
                      "password",
                      "country_code",
                      "phone_number",
                      "agree_terms",
                      "user_type"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_signup_with_package": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "signup_with_package",
        "operationId": "winterleaf_signup_with_package",
        "description": "Register a new user with an enrollment package.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_signup_with_package\",\"arguments\":{\"sponsor\":\"<string>\",\"first_name\":\"<string>\",\"last_name\":\"<string>\",\"username\":\"<string>\",\"email\":\"<string>\",\"password\":\"<string>\",\"confirm_password\":\"<string>\",\"country_code\":\"<string>\",\"phone_number\":\"<string>\",\"agree_terms\":\"<string>\",\"user_type\":\"<string>\",\"product_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "sponsor": {
                        "type": "string"
                      },
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "username": {
                        "type": "string"
                      },
                      "email": {
                        "type": "string"
                      },
                      "password": {
                        "type": "string"
                      },
                      "confirm_password": {
                        "type": "string"
                      },
                      "country_code": {
                        "type": "string"
                      },
                      "phone_number": {
                        "type": "string"
                      },
                      "agree_terms": {
                        "type": "string"
                      },
                      "user_type": {
                        "type": "string"
                      },
                      "product_id": {
                        "type": "string"
                      },
                      "subdomain": {
                        "type": "string"
                      },
                      "address": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      },
                      "postcode": {
                        "type": "string"
                      },
                      "place_genealogy": {
                        "type": "boolean"
                      },
                      "position": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "sponsor",
                      "first_name",
                      "last_name",
                      "username",
                      "email",
                      "password",
                      "confirm_password",
                      "country_code",
                      "phone_number",
                      "agree_terms",
                      "user_type",
                      "product_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_sponsors": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_sponsors",
        "operationId": "winterleaf_get_sponsors",
        "description": "List available sponsors (paginated).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_sponsors\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_validate_sponsor": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "validate_sponsor",
        "operationId": "winterleaf_validate_sponsor",
        "description": "Validate a sponsor username.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_validate_sponsor\",\"arguments\":{\"sponsor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "sponsor": {
                        "type": "string",
                        "description": "Sponsor username to validate."
                      }
                    },
                    "required": [
                      "sponsor"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_profile": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_profile",
        "operationId": "winterleaf_get_profile",
        "description": "Get the current user's profile.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_profile\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_profile": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_profile",
        "operationId": "winterleaf_update_profile",
        "description": "Update user profile fields (first_name, last_name, email, phone_number, languages, currencies, timezones).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_profile\",\"arguments\":{\"first_name\":\"<string>\",\"last_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "email": {
                        "type": "string"
                      },
                      "phone_number": {
                        "type": "string"
                      },
                      "languages": {
                        "type": "string"
                      },
                      "currencies": {
                        "type": "string"
                      },
                      "timezones": {
                        "type": "string"
                      },
                      "token_field": {
                        "type": "string",
                        "description": "Required when changing email."
                      },
                      "token_checksum_field": {
                        "type": "string",
                        "description": "Required when changing email."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_address": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_address",
        "operationId": "winterleaf_get_address",
        "description": "Get user address details.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_address\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_address": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_address",
        "operationId": "winterleaf_update_address",
        "description": "Update user address.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_address\",\"arguments\":{\"country\":\"<string>\",\"state\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "country": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      },
                      "address": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      },
                      "postcode": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_additional_info": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_additional_info",
        "operationId": "winterleaf_get_additional_info",
        "description": "Get user about/social info (about, linkedin, facebook, instagram).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_additional_info\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_additional_info": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_additional_info",
        "operationId": "winterleaf_update_additional_info",
        "description": "Update user about/social info.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_additional_info\",\"arguments\":{\"about\":\"<string>\",\"linkedin\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "about": {
                        "type": "string"
                      },
                      "linkedin": {
                        "type": "string"
                      },
                      "facebook": {
                        "type": "string"
                      },
                      "instagram": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_change_password": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "change_password",
        "operationId": "winterleaf_change_password",
        "description": "Change user password.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_change_password\",\"arguments\":{\"old_password\":\"<string>\",\"new_password\":\"<string>\",\"confirm_password\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "old_password": {
                        "type": "string"
                      },
                      "new_password": {
                        "type": "string"
                      },
                      "confirm_password": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "old_password",
                      "new_password",
                      "confirm_password"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_forgot_password": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "forgot_password",
        "operationId": "winterleaf_forgot_password",
        "description": "Send forgot password email.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_forgot_password\",\"arguments\":{\"email\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Email or username."
                      }
                    },
                    "required": [
                      "email"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_roles": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_roles",
        "operationId": "winterleaf_get_roles",
        "description": "Get user roles.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_roles\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_upgrade_role": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "upgrade_role",
        "operationId": "winterleaf_upgrade_role",
        "description": "Upgrade a user's role (e.g. to Member or Preferred Customer).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_upgrade_role\",\"arguments\":{\"unique_id\":\"<string>\",\"upgrade_to\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "unique_id": {
                        "type": "string"
                      },
                      "upgrade_to": {
                        "type": "string",
                        "description": "Target role (Member, Preferred Customer)."
                      },
                      "api_place_genealogy": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "unique_id",
                      "upgrade_to"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_downgrade_role": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "downgrade_role",
        "operationId": "winterleaf_downgrade_role",
        "description": "Downgrade a user's role.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_downgrade_role\",\"arguments\":{\"unique_id\":\"<string>\",\"downgrade_to\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "unique_id": {
                        "type": "string"
                      },
                      "downgrade_to": {
                        "type": "string"
                      },
                      "api_block_user": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "unique_id",
                      "downgrade_to"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_block_user": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "block_user",
        "operationId": "winterleaf_block_user",
        "description": "Block a user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_block_user\",\"arguments\":{\"unique_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "unique_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "unique_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_unblock_user": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "unblock_user",
        "operationId": "winterleaf_unblock_user",
        "description": "Unblock a user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_unblock_user\",\"arguments\":{\"unique_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "unique_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "unique_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_place_user_genealogy": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "place_user_genealogy",
        "operationId": "winterleaf_place_user_genealogy",
        "description": "Place a user in the genealogy tree.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_place_user_genealogy\",\"arguments\":{\"uid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "uid": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "uid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_rank_details": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_rank_details",
        "operationId": "winterleaf_get_rank_details",
        "description": "Get user rank details.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_rank_details\",\"arguments\":{\"uid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "uid": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "uid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_referral_links": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_referral_links",
        "operationId": "winterleaf_get_referral_links",
        "description": "Get referral links for the current user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_referral_links\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_kyc_documents": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_kyc_documents",
        "operationId": "winterleaf_get_kyc_documents",
        "description": "Get KYC documents and verification status.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_kyc_documents\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_delete_kyc_document": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "delete_kyc_document",
        "operationId": "winterleaf_delete_kyc_document",
        "description": "Delete a KYC document.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_delete_kyc_document\",\"arguments\":{\"remove_doc\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "remove_doc": {
                        "type": "string",
                        "description": "document, document1, or document2."
                      }
                    },
                    "required": [
                      "remove_doc"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_referral_downline": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_referral_downline",
        "operationId": "winterleaf_get_referral_downline",
        "description": "Get referral downline list with filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_referral_downline\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "list_type": {
                        "type": "string"
                      },
                      "username": {
                        "type": "string"
                      },
                      "currency_code": {
                        "type": "string"
                      },
                      "from_date": {
                        "type": "string"
                      },
                      "to_date": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_team_downline": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_team_downline",
        "operationId": "winterleaf_get_team_downline",
        "description": "Get team downline list with filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_team_downline\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "from_date": {
                        "type": "string"
                      },
                      "to_date": {
                        "type": "string"
                      },
                      "list_type": {
                        "type": "string"
                      },
                      "username": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_my_customers": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_my_customers",
        "operationId": "winterleaf_get_my_customers",
        "description": "Get customer downline list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_my_customers\",\"arguments\":{\"list_type\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "list_type": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "offset": {
                        "type": "number"
                      },
                      "from_date": {
                        "type": "string"
                      },
                      "to_date": {
                        "type": "string"
                      },
                      "username": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_spilling_preference": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_spilling_preference",
        "operationId": "winterleaf_get_spilling_preference",
        "description": "Get current spilling/placement preference.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_spilling_preference\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_set_spilling_preference": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "set_spilling_preference",
        "operationId": "winterleaf_set_spilling_preference",
        "description": "Change spilling/placement preference.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_set_spilling_preference\",\"arguments\":{\"spiliing_prefer\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "spiliing_prefer": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "spiliing_prefer"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_dashboard": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_dashboard",
        "operationId": "winterleaf_get_dashboard",
        "description": "Get complete dashboard data (wallet, team sales, performance, rank, commissions).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_dashboard\",\"arguments\":{\"currency_code\":\"<string>\",\"wallet_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "currency_code": {
                        "type": "string"
                      },
                      "wallet_name": {
                        "type": "string"
                      },
                      "filter_val": {
                        "type": "string",
                        "description": "overall, today, this_week, this_month, this_year."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_wallet_data": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_wallet_data",
        "operationId": "winterleaf_get_wallet_data",
        "description": "Get multi-wallet summary (balances, earnings, payouts).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_wallet_data\",\"arguments\":{\"currency_code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "currency_code": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_team_sales": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_team_sales",
        "operationId": "winterleaf_get_team_sales",
        "description": "Get team sales widget data.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_team_sales\",\"arguments\":{\"filter_val\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "filter_val": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_team_performance": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_team_performance",
        "operationId": "winterleaf_get_team_performance",
        "description": "Get team performance data (rank overview, top earners, recent joiners).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_team_performance\",\"arguments\":{\"filter_val\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "filter_val": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_rank_analysis": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_rank_analysis",
        "operationId": "winterleaf_get_rank_analysis",
        "description": "Get rank analysis (current rank, next rank target, conditions).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_rank_analysis\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_commission_data": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_commission_data",
        "operationId": "winterleaf_get_commission_data",
        "description": "Get commission data by wallet and period.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_commission_data\",\"arguments\":{\"currency_code\":\"<string>\",\"wallet_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "currency_code": {
                        "type": "string"
                      },
                      "wallet_name": {
                        "type": "string"
                      },
                      "filter_val": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_rank_history": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_rank_history",
        "operationId": "winterleaf_get_rank_history",
        "description": "Get rank history.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_rank_history\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      },
                      "offset": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_package_history": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_package_history",
        "operationId": "winterleaf_get_package_history",
        "description": "Get package history.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_package_history\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      },
                      "offset": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_products": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_products",
        "operationId": "winterleaf_list_products",
        "description": "List products with optional filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_products\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_product_details": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_product_details",
        "operationId": "winterleaf_get_product_details",
        "description": "Get detailed product information.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_product_details\",\"arguments\":{\"bundle_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "bundle_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "bundle_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_product": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_product",
        "operationId": "winterleaf_create_product",
        "description": "Create a new product.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_product\",\"arguments\":{\"bundle_id\":\"<string>\",\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "bundle_id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "bundle_name_translations": {
                        "type": "object"
                      },
                      "description_translations": {
                        "type": "object"
                      },
                      "short_description_translations": {
                        "type": "object"
                      },
                      "varients": {
                        "type": "array"
                      },
                      "attributes": {
                        "type": "object"
                      }
                    },
                    "required": [
                      "bundle_id",
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_product": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_product",
        "operationId": "winterleaf_update_product",
        "description": "Update an existing product.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_product\",\"arguments\":{\"bundle_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "bundle_id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "bundle_name_translations": {
                        "type": "object"
                      },
                      "description_translations": {
                        "type": "object"
                      },
                      "short_description_translations": {
                        "type": "object"
                      },
                      "varients": {
                        "type": "array"
                      },
                      "attributes": {
                        "type": "object"
                      }
                    },
                    "required": [
                      "bundle_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_delete_product": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "delete_product",
        "operationId": "winterleaf_delete_product",
        "description": "Delete a product bundle.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_delete_product\",\"arguments\":{\"bundle_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "bundle_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "bundle_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_enrollment_packages": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_enrollment_packages",
        "operationId": "winterleaf_list_enrollment_packages",
        "description": "List active enrollment packages.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_enrollment_packages\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_banners": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_banners",
        "operationId": "winterleaf_list_banners",
        "description": "List commerce banners.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_banners\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_categories": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_categories",
        "operationId": "winterleaf_list_categories",
        "description": "List product categories.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_categories\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_category": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_category",
        "operationId": "winterleaf_create_category",
        "description": "Create a product category.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_category\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "translations": {
                        "type": "object"
                      },
                      "method": {
                        "type": "array"
                      },
                      "catalogue_ids": {
                        "type": "array"
                      },
                      "attr_grp_ids": {
                        "type": "array"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_catalogues": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_catalogues",
        "operationId": "winterleaf_list_catalogues",
        "description": "List product catalogues.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_catalogues\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_catalogue": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_catalogue",
        "operationId": "winterleaf_create_catalogue",
        "description": "Create a product catalogue.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_catalogue\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "parent_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_attributes": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_attributes",
        "operationId": "winterleaf_list_attributes",
        "description": "List product attributes.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_attributes\",\"arguments\":{\"en_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "en_name": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_attribute_groups": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_attribute_groups",
        "operationId": "winterleaf_list_attribute_groups",
        "description": "List attribute groups.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_attribute_groups\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "group_name": {
                        "type": "string"
                      },
                      "attr_name": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_write_review": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "write_review",
        "operationId": "winterleaf_write_review",
        "description": "Write a product review.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_write_review\",\"arguments\":{\"comment\":\"<string>\",\"bundle\":\"<string>\",\"stars\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "comment": {
                        "type": "string"
                      },
                      "bundle": {
                        "type": "string"
                      },
                      "stars": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "comment",
                      "bundle",
                      "stars"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_order": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_order",
        "operationId": "winterleaf_create_order",
        "description": "Create an order.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_order\",\"arguments\":{\"uid\":\"<string>\",\"total_amount\":0,\"address\":{},\"products\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "uid": {
                        "type": "string"
                      },
                      "total_amount": {
                        "type": "number"
                      },
                      "address": {
                        "type": "object"
                      },
                      "products": {
                        "type": "array"
                      }
                    },
                    "required": [
                      "uid",
                      "total_amount",
                      "address",
                      "products"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_upgrade_renewal_package": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "upgrade_renewal_package",
        "operationId": "winterleaf_upgrade_renewal_package",
        "description": "Process a renewal or upgrade order.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_upgrade_renewal_package\",\"arguments\":{\"order_type\":\"<string>\",\"uid\":\"<string>\",\"product_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "order_type": {
                        "type": "string"
                      },
                      "uid": {
                        "type": "string"
                      },
                      "product_id": {
                        "type": "string"
                      },
                      "discount": {
                        "type": "number"
                      },
                      "unit_price": {
                        "type": "number"
                      },
                      "order_total": {
                        "type": "number"
                      },
                      "country": {
                        "type": "string"
                      },
                      "state": {
                        "type": "string"
                      },
                      "address": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      },
                      "postcode": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "order_type",
                      "uid",
                      "product_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_orders": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_orders",
        "operationId": "winterleaf_list_orders",
        "description": "List all orders with optional filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_orders\",\"arguments\":{\"order_number\":\"<string>\",\"period\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "order_number": {
                        "type": "string"
                      },
                      "period": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_order_details": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_order_details",
        "operationId": "winterleaf_get_order_details",
        "description": "Get details of a specific order.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_order_details\",\"arguments\":{\"order_number\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "order_number": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "order_number"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_cart": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_cart",
        "operationId": "winterleaf_get_cart",
        "description": "Get cart items.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_cart\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_cart": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_cart",
        "operationId": "winterleaf_update_cart",
        "description": "Update cart item quantity.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_cart\",\"arguments\":{\"quantity\":0,\"line_item_id\":\"<string>\",\"cart_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "quantity": {
                        "type": "number"
                      },
                      "line_item_id": {
                        "type": "string"
                      },
                      "cart_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "quantity",
                      "line_item_id",
                      "cart_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_remove_cart_item": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "remove_cart_item",
        "operationId": "winterleaf_remove_cart_item",
        "description": "Remove an item from cart.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_remove_cart_item\",\"arguments\":{\"pk\":\"<string>\",\"order_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pk": {
                        "type": "string"
                      },
                      "order_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "pk",
                      "order_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_wishlist": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_wishlist",
        "operationId": "winterleaf_get_wishlist",
        "description": "Get wishlist items.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_wishlist\",\"arguments\":{\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_add_to_wishlist": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "add_to_wishlist",
        "operationId": "winterleaf_add_to_wishlist",
        "description": "Add product to wishlist.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_add_to_wishlist\",\"arguments\":{\"product_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "product_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "product_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_remove_from_wishlist": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "remove_from_wishlist",
        "operationId": "winterleaf_remove_from_wishlist",
        "description": "Remove product from wishlist.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_remove_from_wishlist\",\"arguments\":{\"product_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "product_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "product_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_active_emi": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_active_emi",
        "operationId": "winterleaf_get_active_emi",
        "description": "List active EMI records.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_active_emi\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_completed_emi": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_completed_emi",
        "operationId": "winterleaf_get_completed_emi",
        "description": "List completed EMI records.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_completed_emi\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_emi_transactions": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_emi_transactions",
        "operationId": "winterleaf_get_emi_transactions",
        "description": "List all EMI transactions.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_emi_transactions\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_wallets": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_wallets",
        "operationId": "winterleaf_get_wallets",
        "description": "Get enabled wallets list.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_wallets\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_form_key": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_form_key",
        "operationId": "winterleaf_get_form_key",
        "description": "Get form key for multi-wallet operations.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_form_key\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_checksum_token": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_checksum_token",
        "operationId": "winterleaf_get_checksum_token",
        "description": "Get checksum token (sends verification to email).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_checksum_token\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_wallet_transactions": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_wallet_transactions",
        "operationId": "winterleaf_get_wallet_transactions",
        "description": "Get multi-wallet transactions.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_wallet_transactions\",\"arguments\":{\"wallet\":\"<string>\",\"category\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "wallet": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      },
                      "period": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_wallet_summary": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_wallet_summary",
        "operationId": "winterleaf_get_wallet_summary",
        "description": "Get multi-wallet summary (balances, earnings, payouts).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_wallet_summary\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_p2p_transfer_data": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_p2p_transfer_data",
        "operationId": "winterleaf_get_p2p_transfer_data",
        "description": "Get P2P transfer data (charges, recipient info, balance).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_p2p_transfer_data\",\"arguments\":{\"wallet\":\"<string>\",\"reciever\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "wallet": {
                        "type": "string"
                      },
                      "reciever": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "wallet",
                      "reciever"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_execute_p2p_transfer": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "execute_p2p_transfer",
        "operationId": "winterleaf_execute_p2p_transfer",
        "description": "Execute a P2P wallet transfer.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_execute_p2p_transfer\",\"arguments\":{\"wallet\":\"<string>\",\"transfer_amount\":0,\"reciever\":\"<string>\",\"form_key\":\"<string>\",\"token_checksum_field\":\"<string>\",\"token_field\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "wallet": {
                        "type": "string"
                      },
                      "transfer_amount": {
                        "type": "number"
                      },
                      "reciever": {
                        "type": "string"
                      },
                      "form_key": {
                        "type": "string"
                      },
                      "token_checksum_field": {
                        "type": "string"
                      },
                      "token_field": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "wallet",
                      "transfer_amount",
                      "reciever",
                      "form_key",
                      "token_checksum_field",
                      "token_field"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_internal_transfer_data": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_internal_transfer_data",
        "operationId": "winterleaf_get_internal_transfer_data",
        "description": "Get destination wallets and charges for internal transfer.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_internal_transfer_data\",\"arguments\":{\"source_wallet\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "source_wallet": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "source_wallet"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_execute_internal_transfer": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "execute_internal_transfer",
        "operationId": "winterleaf_execute_internal_transfer",
        "description": "Execute an internal wallet transfer.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_execute_internal_transfer\",\"arguments\":{\"source_wallet\":\"<string>\",\"destination_wallet\":\"<string>\",\"transfer_amount\":0,\"form_key\":\"<string>\",\"token_checksum_field\":\"<string>\",\"token_field\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "source_wallet": {
                        "type": "string"
                      },
                      "destination_wallet": {
                        "type": "string"
                      },
                      "transfer_amount": {
                        "type": "number"
                      },
                      "form_key": {
                        "type": "string"
                      },
                      "token_checksum_field": {
                        "type": "string"
                      },
                      "token_field": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "source_wallet",
                      "destination_wallet",
                      "transfer_amount",
                      "form_key",
                      "token_checksum_field",
                      "token_field"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_active_epins": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_active_epins",
        "operationId": "winterleaf_get_active_epins",
        "description": "Get active prepaid coupons/ePins.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_active_epins\",\"arguments\":{\"wallet\":\"<string>\",\"code\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "wallet": {
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_generate_epin": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "generate_epin",
        "operationId": "winterleaf_generate_epin",
        "description": "Generate prepaid coupons/ePins.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_generate_epin\",\"arguments\":{\"wallet_type\":\"<string>\",\"epin_amount\":0,\"number_of_pins\":0,\"form_key\":\"<string>\",\"token_field\":\"<string>\",\"token_checksum_field\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "wallet_type": {
                        "type": "string"
                      },
                      "epin_amount": {
                        "type": "number"
                      },
                      "number_of_pins": {
                        "type": "number"
                      },
                      "transferable": {
                        "type": "boolean"
                      },
                      "reusable": {
                        "type": "boolean"
                      },
                      "token_field": {
                        "type": "string"
                      },
                      "token_checksum_field": {
                        "type": "string"
                      },
                      "form_key": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "wallet_type",
                      "epin_amount",
                      "number_of_pins",
                      "form_key",
                      "token_field",
                      "token_checksum_field"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_transfer_epin": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "transfer_epin",
        "operationId": "winterleaf_transfer_epin",
        "description": "Transfer a coupon to another user.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_transfer_epin\",\"arguments\":{\"user\":\"<string>\",\"epin\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "user": {
                        "type": "string"
                      },
                      "epin": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "user",
                      "epin"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_epin_history": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_epin_history",
        "operationId": "winterleaf_get_epin_history",
        "description": "Get coupon/ePin history.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_epin_history\",\"arguments\":{\"wallet\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "wallet": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_payment_methods": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_payment_methods",
        "operationId": "winterleaf_get_payment_methods",
        "description": "Get available payment methods.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_payment_methods\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_change_payment_method": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "change_payment_method",
        "operationId": "winterleaf_change_payment_method",
        "description": "Enable or disable a payment method.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_change_payment_method\",\"arguments\":{\"method_key\":\"<string>\",\"status\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "method_key": {
                        "type": "string"
                      },
                      "status": {
                        "type": "number",
                        "description": "0 to disable, 1 to enable."
                      }
                    },
                    "required": [
                      "method_key",
                      "status"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_payment_method_settings": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_payment_method_settings",
        "operationId": "winterleaf_get_payment_method_settings",
        "description": "Get settings for a specific payment method.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_payment_method_settings\",\"arguments\":{\"method\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "method": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "method"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_payment_method_settings": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_payment_method_settings",
        "operationId": "winterleaf_update_payment_method_settings",
        "description": "Update payment method settings.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_payment_method_settings\",\"arguments\":{\"method\":\"<string>\",\"token_field\":\"<string>\",\"token_checksum_field\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "method": {
                        "type": "string"
                      },
                      "token_field": {
                        "type": "string"
                      },
                      "token_checksum_field": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "method",
                      "token_field",
                      "token_checksum_field"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_payout_history": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_payout_history",
        "operationId": "winterleaf_get_payout_history",
        "description": "Get payout history with filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_payout_history\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "currency_code": {
                        "type": "string"
                      },
                      "wallet": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "from_date": {
                        "type": "string"
                      },
                      "to_date": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_payout_wallets": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_payout_wallets",
        "operationId": "winterleaf_get_payout_wallets",
        "description": "Get payout-enabled wallets.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_payout_wallets\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_request_payout": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "request_payout",
        "operationId": "winterleaf_request_payout",
        "description": "Request a payout/withdrawal.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_request_payout\",\"arguments\":{\"form_key\":\"<string>\",\"currency_code\":\"<string>\",\"wallet\":\"<string>\",\"method\":\"<string>\",\"amount\":0,\"token_field\":\"<string>\",\"token_checksum_field\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "form_key": {
                        "type": "string"
                      },
                      "currency_code": {
                        "type": "string"
                      },
                      "wallet": {
                        "type": "string"
                      },
                      "method": {
                        "type": "string"
                      },
                      "amount": {
                        "type": "number"
                      },
                      "token_field": {
                        "type": "string"
                      },
                      "token_checksum_field": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "form_key",
                      "currency_code",
                      "wallet",
                      "method",
                      "amount",
                      "token_field",
                      "token_checksum_field"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_cancel_payout": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "cancel_payout",
        "operationId": "winterleaf_cancel_payout",
        "description": "Cancel a payout request.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_cancel_payout\",\"arguments\":{\"wallet\":\"<string>\",\"payout_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "wallet": {
                        "type": "string"
                      },
                      "payout_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "wallet",
                      "payout_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_leads_overview": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "leads_overview",
        "operationId": "winterleaf_leads_overview",
        "description": "Get leads overview dashboard.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_leads_overview\",\"arguments\":{\"appointment\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "appointment": {
                        "type": "string",
                        "description": "upcoming, today, week, month."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_leads": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_leads",
        "operationId": "winterleaf_list_leads",
        "description": "List leads with filters.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_leads\",\"arguments\":{\"campaign_slug\":\"<string>\",\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaign_slug": {
                        "type": "string"
                      },
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "list_type": {
                        "type": "string"
                      },
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "email": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "owner": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_lead": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_lead",
        "operationId": "winterleaf_get_lead",
        "description": "Get lead details by slug.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_lead\",\"arguments\":{\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_lead": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_lead",
        "operationId": "winterleaf_create_lead",
        "description": "Create a new lead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_lead\",\"arguments\":{\"first_name\":\"<string>\",\"last_name\":\"<string>\",\"email\":\"<string>\",\"phone\":\"<string>\",\"location\":\"<string>\",\"message\":\"<string>\",\"assignee\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "email": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "assignee": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "source": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "first_name",
                      "last_name",
                      "email",
                      "phone",
                      "location",
                      "message",
                      "assignee"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_lead": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_lead",
        "operationId": "winterleaf_update_lead",
        "description": "Update an existing lead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_lead\",\"arguments\":{\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      },
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "email": {
                        "type": "string"
                      },
                      "phone": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "assignee": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "source": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_delete_lead": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "delete_lead",
        "operationId": "winterleaf_delete_lead",
        "description": "Delete a lead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_delete_lead\",\"arguments\":{\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_appointments": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_appointments",
        "operationId": "winterleaf_list_appointments",
        "description": "List appointments.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_appointments\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "datesetting": {
                        "type": "string"
                      },
                      "ondate": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string"
                      },
                      "lead": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_appointment": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_appointment",
        "operationId": "winterleaf_create_appointment",
        "description": "Create an appointment for a lead.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_appointment\",\"arguments\":{\"slug\":\"<string>\",\"appointment_date\":\"<string>\",\"appointment_to\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      },
                      "appointment_date": {
                        "type": "string"
                      },
                      "appointment_to": {
                        "type": "string"
                      },
                      "appointment_note": {
                        "type": "string"
                      },
                      "appointment_status": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug",
                      "appointment_date",
                      "appointment_to"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_appointment": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_appointment",
        "operationId": "winterleaf_update_appointment",
        "description": "Update an appointment.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_appointment\",\"arguments\":{\"appointment_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "appointment_id": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "appointment_date": {
                        "type": "string"
                      },
                      "appointment_to": {
                        "type": "string"
                      },
                      "appointment_note": {
                        "type": "string"
                      },
                      "appointment_status": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "appointment_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_delete_appointment": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "delete_appointment",
        "operationId": "winterleaf_delete_appointment",
        "description": "Delete an appointment.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_delete_appointment\",\"arguments\":{\"appointment_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "appointment_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "appointment_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_lead_note": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_lead_note",
        "operationId": "winterleaf_create_lead_note",
        "description": "Create a note on a lead (max 499 chars).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_lead_note\",\"arguments\":{\"note\":\"<string>\",\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "note": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "note",
                      "slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_delete_lead_note": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "delete_lead_note",
        "operationId": "winterleaf_delete_lead_note",
        "description": "Delete a lead note.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_delete_lead_note\",\"arguments\":{\"note_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "note_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "note_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_campaign_categories": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_campaign_categories",
        "operationId": "winterleaf_list_campaign_categories",
        "description": "List lead campaign categories.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_campaign_categories\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_campaigns": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_campaigns",
        "operationId": "winterleaf_list_campaigns",
        "description": "List campaigns.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_campaigns\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "title": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      },
                      "user": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_campaign_pages": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_campaign_pages",
        "operationId": "winterleaf_list_campaign_pages",
        "description": "List campaign pages.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_campaign_pages\",\"arguments\":{\"campaign_slug\":\"<string>\",\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "campaign_slug": {
                        "type": "string"
                      },
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "title": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_ticket_categories": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_ticket_categories",
        "operationId": "winterleaf_list_ticket_categories",
        "description": "List support ticket categories.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_ticket_categories\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_create_ticket": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "create_ticket",
        "operationId": "winterleaf_create_ticket",
        "description": "Create a support ticket.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_create_ticket\",\"arguments\":{\"subject\":\"<string>\",\"comment\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string"
                      },
                      "comment": {
                        "type": "string"
                      },
                      "priority": {
                        "type": "number",
                        "description": "1, 2, or 3."
                      },
                      "category": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "subject",
                      "comment"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_tickets": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_tickets",
        "operationId": "winterleaf_list_tickets",
        "description": "Get ticket history.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_tickets\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "subject": {
                        "type": "string"
                      },
                      "category": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string",
                        "description": "1=New, 2=Open, 3=Closed."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_ticket_detail": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_ticket_detail",
        "operationId": "winterleaf_get_ticket_detail",
        "description": "Get ticket detailed view.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_ticket_detail\",\"arguments\":{\"ticket_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ticket_id": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "ticket_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_ticket": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_ticket",
        "operationId": "winterleaf_update_ticket",
        "description": "Update a ticket (tags, priority).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_ticket\",\"arguments\":{\"ticket_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ticket_id": {
                        "type": "string"
                      },
                      "tags": {
                        "type": "string"
                      },
                      "priority": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "ticket_id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_ticket_conversation": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "ticket_conversation",
        "operationId": "winterleaf_ticket_conversation",
        "description": "Add a conversation/reply to a ticket.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_ticket_conversation\",\"arguments\":{\"ticket_id\":\"<string>\",\"comment\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ticket_id": {
                        "type": "string"
                      },
                      "comment": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "ticket_id",
                      "comment"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_change_ticket_status": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "change_ticket_status",
        "operationId": "winterleaf_change_ticket_status",
        "description": "Change ticket status (2=Open, 3=Close).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_change_ticket_status\",\"arguments\":{\"ticket_id\":\"<string>\",\"status\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "ticket_id": {
                        "type": "string"
                      },
                      "status": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "ticket_id",
                      "status"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_ticket_tags": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_ticket_tags",
        "operationId": "winterleaf_get_ticket_tags",
        "description": "List available ticket tags.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_ticket_tags\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_faqs": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_faqs",
        "operationId": "winterleaf_list_faqs",
        "description": "List FAQs.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_faqs\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      },
                      "offset": {
                        "type": "number"
                      },
                      "question": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_announcements": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_announcements",
        "operationId": "winterleaf_list_announcements",
        "description": "List announcements.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_announcements\",\"arguments\":{\"offset\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "read_status": {
                        "type": "string",
                        "description": "0=unread, 1=read."
                      },
                      "subject": {
                        "type": "string"
                      },
                      "start_date": {
                        "type": "string"
                      },
                      "end_date": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_close_announcement": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "close_announcement",
        "operationId": "winterleaf_close_announcement",
        "description": "Close/dismiss an announcement.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_close_announcement\",\"arguments\":{\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_courses": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_courses",
        "operationId": "winterleaf_list_courses",
        "description": "List available courses.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_courses\",\"arguments\":{\"page\":0,\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "page": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      },
                      "sort": {
                        "type": "string"
                      },
                      "filter_name": {
                        "type": "string"
                      },
                      "filter_category": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_my_courses": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_my_courses",
        "operationId": "winterleaf_get_my_courses",
        "description": "List subscribed courses.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_my_courses\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_internal_courses": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_internal_courses",
        "operationId": "winterleaf_get_internal_courses",
        "description": "List internal courses.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_internal_courses\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_subscribe_free_course": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "subscribe_free_course",
        "operationId": "winterleaf_subscribe_free_course",
        "description": "Subscribe to a free course.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_subscribe_free_course\",\"arguments\":{\"course_slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "course_slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "course_slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_unsubscribe_course": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "unsubscribe_course",
        "operationId": "winterleaf_unsubscribe_course",
        "description": "Unsubscribe from a course.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_unsubscribe_course\",\"arguments\":{\"course_slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "course_slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "course_slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_course_details": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_course_details",
        "operationId": "winterleaf_get_course_details",
        "description": "Get detailed course view.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_course_details\",\"arguments\":{\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      },
                      "subscribed": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_course_progress": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_course_progress",
        "operationId": "winterleaf_update_course_progress",
        "description": "Update course progress (mark chapter completed).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_course_progress\",\"arguments\":{\"course_slug\":\"<string>\",\"chapter_slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "course_slug": {
                        "type": "string"
                      },
                      "chapter_slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "course_slug",
                      "chapter_slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_quizzes": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_quizzes",
        "operationId": "winterleaf_list_quizzes",
        "description": "List quizzes.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_quizzes\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number"
                      },
                      "offset": {
                        "type": "number"
                      },
                      "name": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_quiz_results": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_quiz_results",
        "operationId": "winterleaf_get_quiz_results",
        "description": "List quiz results/summary.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_quiz_results\",\"arguments\":{\"name\":\"<string>\",\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "offset": {
                        "type": "number"
                      },
                      "limit": {
                        "type": "number"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_start_quiz": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "start_quiz",
        "operationId": "winterleaf_start_quiz",
        "description": "Start a quiz and get all questions.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_start_quiz\",\"arguments\":{\"slug\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "slug"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_submit_quiz": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "submit_quiz",
        "operationId": "winterleaf_submit_quiz",
        "description": "Submit quiz answers.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_submit_quiz\",\"arguments\":{\"slug\":\"<string>\",\"options\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "slug": {
                        "type": "string"
                      },
                      "options": {
                        "type": "array"
                      }
                    },
                    "required": [
                      "slug",
                      "options"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_goals_overview": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_goals_overview",
        "operationId": "winterleaf_get_goals_overview",
        "description": "Get goals overview dashboard.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_goals_overview\",\"arguments\":{\"profile_id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "profile_id": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_goals_leaderboard": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_goals_leaderboard",
        "operationId": "winterleaf_get_goals_leaderboard",
        "description": "Get goals leaderboard.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_goals_leaderboard\",\"arguments\":{\"profile\":\"<string>\",\"goal\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "profile": {
                        "type": "string"
                      },
                      "goal": {
                        "type": "string"
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_webhook_events": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_webhook_events",
        "operationId": "winterleaf_list_webhook_events",
        "description": "List available webhook events.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_webhook_events\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_subscribe_webhook": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "subscribe_webhook",
        "operationId": "winterleaf_subscribe_webhook",
        "description": "Subscribe to webhook events.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_subscribe_webhook\",\"arguments\":{\"events\":[],\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "events": {
                        "type": "array",
                        "description": "Event names (e.g. user-registration, order-creation)."
                      },
                      "url": {
                        "type": "string",
                        "description": "HTTPS callback URL."
                      }
                    },
                    "required": [
                      "events",
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_list_webhooks": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "list_webhooks",
        "operationId": "winterleaf_list_webhooks",
        "description": "List all webhook subscriptions.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_list_webhooks\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_get_webhook_info": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "get_webhook_info",
        "operationId": "winterleaf_get_webhook_info",
        "description": "Get webhook subscription details.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_get_webhook_info\",\"arguments\":{\"uuid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "uuid": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "uuid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_update_webhook": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "update_webhook",
        "operationId": "winterleaf_update_webhook",
        "description": "Update a webhook subscription.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_update_webhook\",\"arguments\":{\"uuid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "uuid": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string"
                      },
                      "events": {
                        "type": "array"
                      },
                      "is_disabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "uuid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=winterleaf_unsubscribe_webhook": {
      "post": {
        "tags": [
          "winterleaf"
        ],
        "summary": "unsubscribe_webhook",
        "operationId": "winterleaf_unsubscribe_webhook",
        "description": "Unsubscribe from a webhook.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"winterleaf_unsubscribe_webhook\",\"arguments\":{\"uuid\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "uuid": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "uuid"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_site_properties": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_site_properties",
        "operationId": "wix_get_site_properties",
        "description": "Get Wix site properties: display name, locale, language, currency, timezone, business config, and other site-level settings.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_site_properties\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_update_site_properties": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "update_site_properties",
        "operationId": "wix_update_site_properties",
        "description": "Update Wix site properties. Pass a `properties` object with any subset of: siteDisplayName, locale {languageCode, country}, language, paymentCurrency, timeZone, businessConfig. Also pass a `fields` array naming the top-level keys you are updating (Wix uses field-mask semantics).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_update_site_properties\",\"arguments\":{\"properties\":{},\"fields\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "properties": {
                        "type": "object",
                        "description": "Partial site properties object to merge."
                      },
                      "fields": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Field-mask paths to update, e.g. [\"siteDisplayName\", \"paymentCurrency\"]. Required by Wix."
                      }
                    },
                    "required": [
                      "properties",
                      "fields"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_blog_posts": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_blog_posts",
        "operationId": "wix_list_blog_posts",
        "description": "List published Wix blog posts.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_blog_posts\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max posts (default 20)."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset (default 0)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_blog_post": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_blog_post",
        "operationId": "wix_get_blog_post",
        "description": "Get a single blog post by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_blog_post\",\"arguments\":{\"postId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "postId": {
                        "type": "string",
                        "description": "Blog post ID."
                      }
                    },
                    "required": [
                      "postId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_create_blog_post": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "create_blog_post",
        "operationId": "wix_create_blog_post",
        "description": "Create a new Wix blog post (as a draft). After creating, call publish_blog_post to publish.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_create_blog_post\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Post title."
                      },
                      "content": {
                        "type": "object",
                        "description": "Ricos rich-content object. If you pass a plain string as \"plainContent\", the adapter converts it to a minimal Ricos doc."
                      },
                      "plainContent": {
                        "type": "string",
                        "description": "Plain text body; converted to Ricos paragraphs automatically."
                      },
                      "excerpt": {
                        "type": "string",
                        "description": "Short excerpt/summary."
                      },
                      "memberId": {
                        "type": "string",
                        "description": "Author member ID."
                      },
                      "categoryIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Category IDs to attach."
                      },
                      "tagIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Tag IDs to attach."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_update_blog_post": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "update_blog_post",
        "operationId": "wix_update_blog_post",
        "description": "Update an existing Wix draft blog post.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_update_blog_post\",\"arguments\":{\"postId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "postId": {
                        "type": "string",
                        "description": "Draft post ID to update."
                      },
                      "title": {
                        "type": "string",
                        "description": "New title (optional)."
                      },
                      "content": {
                        "type": "object",
                        "description": "New Ricos content (optional)."
                      },
                      "plainContent": {
                        "type": "string",
                        "description": "Plain text body; converted to Ricos paragraphs."
                      },
                      "excerpt": {
                        "type": "string",
                        "description": "New excerpt (optional)."
                      }
                    },
                    "required": [
                      "postId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_publish_blog_post": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "publish_blog_post",
        "operationId": "wix_publish_blog_post",
        "description": "Publish a Wix draft blog post.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_publish_blog_post\",\"arguments\":{\"postId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "postId": {
                        "type": "string",
                        "description": "Draft post ID to publish."
                      }
                    },
                    "required": [
                      "postId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_media": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_media",
        "operationId": "wix_list_media",
        "description": "List media library files on the Wix site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_media\",\"arguments\":{\"mediaType\":\"<string>\",\"limit\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "mediaType": {
                        "type": "string",
                        "description": "Optional filter: IMAGE, VIDEO, AUDIO, DOCUMENT, VECTOR, ARCHIVE, MODEL_3D."
                      },
                      "limit": {
                        "type": "number",
                        "description": "Max files (default 50)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_upload_media_url": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "upload_media_url",
        "operationId": "wix_upload_media_url",
        "description": "Import a media file into the Wix site media library from a public URL.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_upload_media_url\",\"arguments\":{\"url\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "Publicly accessible source URL."
                      },
                      "displayName": {
                        "type": "string",
                        "description": "File display name."
                      },
                      "mimeType": {
                        "type": "string",
                        "description": "MIME type (e.g. image/jpeg)."
                      },
                      "mediaType": {
                        "type": "string",
                        "description": "IMAGE, VIDEO, AUDIO, DOCUMENT, VECTOR, ARCHIVE, MODEL_3D. Defaults to IMAGE."
                      },
                      "parentFolderId": {
                        "type": "string",
                        "description": "Target folder ID (optional)."
                      }
                    },
                    "required": [
                      "url"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_products": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_products",
        "operationId": "wix_list_products",
        "description": "List Wix Stores products with optional pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_products\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max products (default 100)."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset (default 0)."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_product": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_product",
        "operationId": "wix_get_product",
        "description": "Get a single Wix Stores product by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_product\",\"arguments\":{\"productId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "productId": {
                        "type": "string",
                        "description": "Product ID."
                      }
                    },
                    "required": [
                      "productId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_create_product": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "create_product",
        "operationId": "wix_create_product",
        "description": "Create a new Wix Stores product.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_create_product\",\"arguments\":{\"name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "Product name."
                      },
                      "productType": {
                        "type": "string",
                        "description": "physical or digital. Defaults to physical."
                      },
                      "priceData": {
                        "type": "object",
                        "description": "Price object: { currency, price, discountedPrice? }."
                      },
                      "description": {
                        "type": "string",
                        "description": "Product description (HTML)."
                      },
                      "sku": {
                        "type": "string",
                        "description": "SKU."
                      },
                      "weight": {
                        "type": "number",
                        "description": "Weight (for physical products)."
                      },
                      "visible": {
                        "type": "boolean",
                        "description": "Whether product is visible in storefront."
                      }
                    },
                    "required": [
                      "name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_update_product": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "update_product",
        "operationId": "wix_update_product",
        "description": "Update an existing Wix Stores product by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_update_product\",\"arguments\":{\"productId\":\"<string>\",\"product\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "productId": {
                        "type": "string",
                        "description": "Product ID."
                      },
                      "product": {
                        "type": "object",
                        "description": "Partial product object. Common fields: name, description, priceData, sku, visible, weight."
                      }
                    },
                    "required": [
                      "productId",
                      "product"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_orders": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_orders",
        "operationId": "wix_list_orders",
        "description": "List Wix Stores orders.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_orders\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max orders (default 50)."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset (default 0)."
                      },
                      "paymentStatus": {
                        "type": "string",
                        "description": "Filter: PAID, NOT_PAID, PARTIALLY_REFUNDED, REFUNDED, PENDING."
                      },
                      "fulfillmentStatus": {
                        "type": "string",
                        "description": "Filter: NOT_FULFILLED, FULFILLED, PARTIALLY_FULFILLED, CANCELED."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_order": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_order",
        "operationId": "wix_get_order",
        "description": "Get a single Wix Stores order by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_order\",\"arguments\":{\"orderId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "orderId": {
                        "type": "string",
                        "description": "Order ID."
                      }
                    },
                    "required": [
                      "orderId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_update_inventory": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "update_inventory",
        "operationId": "wix_update_inventory",
        "description": "Update stock quantity for a product variant. Use trackQuantity=true to enable inventory tracking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_update_inventory\",\"arguments\":{\"inventoryItemId\":\"<string>\",\"variantId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "inventoryItemId": {
                        "type": "string",
                        "description": "Inventory item ID."
                      },
                      "variantId": {
                        "type": "string",
                        "description": "Variant ID. Use the product ID for products with no variants."
                      },
                      "quantity": {
                        "type": "number",
                        "description": "Absolute new stock quantity."
                      },
                      "trackQuantity": {
                        "type": "boolean",
                        "description": "If provided, toggles inventory tracking for this variant."
                      },
                      "inStock": {
                        "type": "boolean",
                        "description": "If trackQuantity is false, mark variant as in or out of stock."
                      }
                    },
                    "required": [
                      "inventoryItemId",
                      "variantId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_contacts": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_contacts",
        "operationId": "wix_list_contacts",
        "description": "List Wix contacts via the Contacts query API.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_contacts\",\"arguments\":{\"limit\":0,\"cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max contacts (default 50, max 1000)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor from previous response."
                      },
                      "filter": {
                        "type": "object",
                        "description": "Wix query filter object. Example: { \"info.emails.email\": { \"$eq\": \"a@b.com\" } }."
                      },
                      "sort": {
                        "type": "array",
                        "description": "Array of sort specs: [{ fieldName, order: \"ASC\"|\"DESC\" }].",
                        "items": {
                          "type": "object"
                        }
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_contact": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_contact",
        "operationId": "wix_get_contact",
        "description": "Get a single Wix contact by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_contact\",\"arguments\":{\"contactId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID."
                      }
                    },
                    "required": [
                      "contactId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_create_contact": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "create_contact",
        "operationId": "wix_create_contact",
        "description": "Create a Wix contact.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_create_contact\",\"arguments\":{\"email\":\"<string>\",\"firstName\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "description": "Primary email address."
                      },
                      "firstName": {
                        "type": "string",
                        "description": "First name."
                      },
                      "lastName": {
                        "type": "string",
                        "description": "Last name."
                      },
                      "phone": {
                        "type": "string",
                        "description": "Primary phone number."
                      },
                      "company": {
                        "type": "string",
                        "description": "Company name."
                      },
                      "jobTitle": {
                        "type": "string",
                        "description": "Job title."
                      },
                      "info": {
                        "type": "object",
                        "description": "Full Wix contact info object. If provided, other named fields are merged into this."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_update_contact": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "update_contact",
        "operationId": "wix_update_contact",
        "description": "Update a Wix contact. Wix uses optimistic concurrency — the contact's current revision number is REQUIRED and must match the server. Fetch the contact first with get_contact to read the revision.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_update_contact\",\"arguments\":{\"contactId\":\"<string>\",\"revision\":0,\"info\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID."
                      },
                      "revision": {
                        "type": "number",
                        "description": "Current revision number of the contact. Required for optimistic concurrency."
                      },
                      "info": {
                        "type": "object",
                        "description": "Partial contact info object to merge. See Wix Contacts v4 schema."
                      }
                    },
                    "required": [
                      "contactId",
                      "revision",
                      "info"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_delete_contact": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "delete_contact",
        "operationId": "wix_delete_contact",
        "description": "Delete a Wix contact by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_delete_contact\",\"arguments\":{\"contactId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID to delete."
                      }
                    },
                    "required": [
                      "contactId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_label_contact": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "label_contact",
        "operationId": "wix_label_contact",
        "description": "Add labels (tags) to a Wix contact.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_label_contact\",\"arguments\":{\"contactId\":\"<string>\",\"labelKeys\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "contactId": {
                        "type": "string",
                        "description": "Contact ID."
                      },
                      "labelKeys": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Array of label keys to apply."
                      }
                    },
                    "required": [
                      "contactId",
                      "labelKeys"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_services": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_services",
        "operationId": "wix_list_services",
        "description": "List Wix Bookings services offered on the site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_services\",\"arguments\":{\"limit\":0,\"cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max services (default 50)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_service": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_service",
        "operationId": "wix_get_service",
        "description": "Get a single Wix Bookings service by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_service\",\"arguments\":{\"serviceId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "serviceId": {
                        "type": "string",
                        "description": "Service ID."
                      }
                    },
                    "required": [
                      "serviceId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_bookings": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_bookings",
        "operationId": "wix_list_bookings",
        "description": "List Wix bookings.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_bookings\",\"arguments\":{\"limit\":0,\"cursor\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max bookings (default 50)."
                      },
                      "cursor": {
                        "type": "string",
                        "description": "Pagination cursor."
                      },
                      "contactId": {
                        "type": "string",
                        "description": "Filter bookings for a specific contact."
                      },
                      "serviceId": {
                        "type": "string",
                        "description": "Filter bookings for a specific service."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_booking": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_booking",
        "operationId": "wix_get_booking",
        "description": "Get a single Wix booking by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_booking\",\"arguments\":{\"bookingId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "bookingId": {
                        "type": "string",
                        "description": "Booking ID."
                      }
                    },
                    "required": [
                      "bookingId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_cancel_booking": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "cancel_booking",
        "operationId": "wix_cancel_booking",
        "description": "Cancel a Wix booking.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_cancel_booking\",\"arguments\":{\"bookingId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "bookingId": {
                        "type": "string",
                        "description": "Booking ID to cancel."
                      },
                      "flowControlSettings": {
                        "type": "object",
                        "description": "Optional flow-control settings: { skipSelectedParticipantsNotifications?, skipBusinessNotifications?, skipRefund?, skipCancellationPolicyCheck? }."
                      },
                      "revision": {
                        "type": "number",
                        "description": "Booking revision number (required by some Wix API versions)."
                      }
                    },
                    "required": [
                      "bookingId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_list_events": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "list_events",
        "operationId": "wix_list_events",
        "description": "List Wix Events (ticketed events) on the site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_list_events\",\"arguments\":{\"limit\":0,\"offset\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "limit": {
                        "type": "number",
                        "description": "Max events (default 50)."
                      },
                      "offset": {
                        "type": "number",
                        "description": "Pagination offset (default 0)."
                      },
                      "status": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Filter by status: SCHEDULED, STARTED, ENDED, CANCELED, DRAFT."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_get_event": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "get_event",
        "operationId": "wix_get_event",
        "description": "Get a single Wix Event by ID.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_get_event\",\"arguments\":{\"eventId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "eventId": {
                        "type": "string",
                        "description": "Event ID."
                      }
                    },
                    "required": [
                      "eventId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_create_page": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "create_page",
        "operationId": "wix_create_page",
        "description": "Create a new page on the Wix site. Provide at minimum a title and a slug. Additional page properties can be passed via the page object.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_create_page\",\"arguments\":{\"title\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Page title shown in menus and SEO."
                      },
                      "slug": {
                        "type": "string",
                        "description": "URL slug (path segment), e.g. \"about-us\"."
                      },
                      "hidden": {
                        "type": "boolean",
                        "description": "If true, page is hidden from menus. Defaults to false."
                      },
                      "seoData": {
                        "type": "object",
                        "description": "Optional SEO metadata: { title, description, keywords }."
                      },
                      "page": {
                        "type": "object",
                        "description": "Full page object to merge. Any of the named fields above override keys on this object."
                      }
                    },
                    "required": [
                      "title"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_update_page": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "update_page",
        "operationId": "wix_update_page",
        "description": "Update an existing Wix site page by ID. Supports partial updates via the page object (title, slug, hidden, seoData, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_update_page\",\"arguments\":{\"pageId\":\"<string>\",\"page\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageId": {
                        "type": "string",
                        "description": "Wix page ID to update."
                      },
                      "page": {
                        "type": "object",
                        "description": "Partial page object with fields to change. Common fields: title, slug, hidden, seoData."
                      }
                    },
                    "required": [
                      "pageId",
                      "page"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_delete_page": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "delete_page",
        "operationId": "wix_delete_page",
        "description": "Delete a Wix site page by ID. DESTRUCTIVE — cannot be undone via API.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_delete_page\",\"arguments\":{\"pageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageId": {
                        "type": "string",
                        "description": "Wix page ID to delete."
                      }
                    },
                    "required": [
                      "pageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_publish_page": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "publish_page",
        "operationId": "wix_publish_page",
        "description": "Publish (or unpublish) a Wix site page. Sets the page state. Publishing applies changes to the live site.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_publish_page\",\"arguments\":{\"pageId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "pageId": {
                        "type": "string",
                        "description": "Wix page ID."
                      },
                      "publish": {
                        "type": "boolean",
                        "description": "true to publish, false to unpublish. Defaults to true."
                      }
                    },
                    "required": [
                      "pageId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=wix_call_api": {
      "post": {
        "tags": [
          "wix"
        ],
        "summary": "call_api",
        "operationId": "wix_call_api",
        "description": "Call any Wix REST API endpoint directly using the current site credentials. Use this for operations not covered by the named tools — for example, advanced page editing, site properties, menus, members, forms, pricing plans, or any Wix business solution API. Consult Wix API docs at https://dev.wix.com/docs/rest for endpoint paths and request bodies.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"wix_call_api\",\"arguments\":{\"method\":\"<string>\",\"path\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "method": {
                        "type": "string",
                        "description": "HTTP method: GET, POST, PATCH, PUT, or DELETE."
                      },
                      "path": {
                        "type": "string",
                        "description": "API path starting with a forward slash. Example: \"/site-pages/v2/pages\" or \"/menus/v1/menus\"."
                      },
                      "body": {
                        "type": "object",
                        "description": "Request JSON body (for POST/PATCH/PUT). Omit for GET/DELETE."
                      },
                      "params": {
                        "type": "object",
                        "description": "Query-string parameters as a flat object, e.g. { \"paging.limit\": 10 }."
                      }
                    },
                    "required": [
                      "method",
                      "path"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_search_records": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "search_records",
        "operationId": "zoho_search_records",
        "description": "Search records in any Zoho CRM module using a criteria string. Example criteria: \"(Last_Name:equals:Burns)\" or \"((Email:starts_with:john)and(Company:equals:Acme))\".\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_search_records\",\"arguments\":{\"module\":\"<string>\",\"criteria\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module to search (e.g. Leads, Contacts, Deals, Accounts, Tasks)."
                      },
                      "criteria": {
                        "type": "string",
                        "description": "Zoho CRM search criteria expression, e.g. \"(Email:equals:john@example.com)\"."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number for pagination (default 1)."
                      }
                    },
                    "required": [
                      "module",
                      "criteria"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_get_record": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "get_record",
        "operationId": "zoho_get_record",
        "description": "Get a single record by its ID from any Zoho CRM module.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_get_record\",\"arguments\":{\"module\":\"<string>\",\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Contacts, Deals, Accounts)."
                      },
                      "id": {
                        "type": "string",
                        "description": "The record ID."
                      }
                    },
                    "required": [
                      "module",
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_create_record": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "create_record",
        "operationId": "zoho_create_record",
        "description": "Create a new record in any Zoho CRM module. Pass the field data as an object.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_create_record\",\"arguments\":{\"module\":\"<string>\",\"data\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module to create the record in (e.g. Leads, Contacts, Deals)."
                      },
                      "data": {
                        "type": "object",
                        "description": "Record field data, e.g. { \"Last_Name\": \"Smith\", \"Email\": \"smith@example.com\" }."
                      }
                    },
                    "required": [
                      "module",
                      "data"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_update_record": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "update_record",
        "operationId": "zoho_update_record",
        "description": "Update an existing record in any Zoho CRM module.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_update_record\",\"arguments\":{\"module\":\"<string>\",\"id\":\"<string>\",\"data\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Contacts, Deals)."
                      },
                      "id": {
                        "type": "string",
                        "description": "The record ID to update."
                      },
                      "data": {
                        "type": "object",
                        "description": "Fields to update, e.g. { \"Phone\": \"+1-555-0199\" }."
                      }
                    },
                    "required": [
                      "module",
                      "id",
                      "data"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_list_records": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "list_records",
        "operationId": "zoho_list_records",
        "description": "List records from any Zoho CRM module with optional pagination and sorting.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_list_records\",\"arguments\":{\"module\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Contacts, Deals, Accounts)."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number (default 1)."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Records per page, max 200 (default 20)."
                      },
                      "sort_by": {
                        "type": "string",
                        "description": "Field API name to sort by (e.g. Created_Time, Modified_Time)."
                      }
                    },
                    "required": [
                      "module"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_search_contacts": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "search_contacts",
        "operationId": "zoho_search_contacts",
        "description": "Search Zoho CRM Contacts by email address or name. Convenience wrapper around the Contacts module.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_search_contacts\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "Search term — an email address or contact name to look up."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_create_lead": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "create_lead",
        "operationId": "zoho_create_lead",
        "description": "Create a new lead in Zoho CRM with common fields.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_create_lead\",\"arguments\":{\"last_name\":\"<string>\",\"company\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "first_name": {
                        "type": "string",
                        "description": "Lead first name."
                      },
                      "last_name": {
                        "type": "string",
                        "description": "Lead last name (required)."
                      },
                      "email": {
                        "type": "string",
                        "description": "Lead email address."
                      },
                      "company": {
                        "type": "string",
                        "description": "Company name (required)."
                      },
                      "phone": {
                        "type": "string",
                        "description": "Lead phone number."
                      }
                    },
                    "required": [
                      "last_name",
                      "company"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_list_deals": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "list_deals",
        "operationId": "zoho_list_deals",
        "description": "List deals (potentials) from Zoho CRM, optionally filtered by stage. Supports pagination via page + per_page, sorting, and custom field selection.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_list_deals\",\"arguments\":{\"stage\":\"<string>\",\"page\":0}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "stage": {
                        "type": "string",
                        "description": "Filter deals by stage name (e.g. \"Qualification\", \"Closed Won\")."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number (default 1)."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Records per page (default 20, max 200)."
                      },
                      "sort_by": {
                        "type": "string",
                        "description": "Field to sort by (e.g. \"Modified_Time\", \"Amount\", \"Closing_Date\")."
                      },
                      "sort_order": {
                        "type": "string",
                        "description": "Sort direction: \"asc\" or \"desc\"."
                      },
                      "fields": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Specific fields to return. If omitted, returns default deal fields."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_create_task": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "create_task",
        "operationId": "zoho_create_task",
        "description": "Create a new task in Zoho CRM.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_create_task\",\"arguments\":{\"subject\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string",
                        "description": "Task subject / title."
                      },
                      "due_date": {
                        "type": "string",
                        "description": "Due date in YYYY-MM-DD format."
                      },
                      "priority": {
                        "type": "string",
                        "description": "Task priority: High, Highest, Low, Lowest, Normal."
                      },
                      "related_to": {
                        "type": "string",
                        "description": "Record ID this task is related to (contact, deal, etc.). Must be paired with related_module."
                      },
                      "related_module": {
                        "type": "string",
                        "description": "Module API name for related_to — one of 'Contacts', 'Leads', 'Deals', 'Accounts', 'Campaigns', 'Cases', or any valid Zoho module. Required when related_to is set."
                      }
                    },
                    "required": [
                      "subject"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_get_modules": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "get_modules",
        "operationId": "zoho_get_modules",
        "description": "List all available CRM modules in the Zoho CRM org (Leads, Contacts, Deals, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_get_modules\",\"arguments\":{}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {}
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_delete_record": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "delete_record",
        "operationId": "zoho_delete_record",
        "description": "Delete a record by ID from any Zoho CRM module. Destructive — confirm with the user before calling.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_delete_record\",\"arguments\":{\"module\":\"<string>\",\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Contacts, Deals)."
                      },
                      "id": {
                        "type": "string",
                        "description": "The record ID to delete."
                      }
                    },
                    "required": [
                      "module",
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_upsert_record": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "upsert_record",
        "operationId": "zoho_upsert_record",
        "description": "Upsert a record in a Zoho CRM module — updates if a matching record exists (based on duplicate_check_fields), otherwise creates.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_upsert_record\",\"arguments\":{\"module\":\"<string>\",\"data\":{}}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Contacts, Deals)."
                      },
                      "data": {
                        "type": "object",
                        "description": "Record data, same shape as create_record."
                      },
                      "duplicate_check_fields": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Field API names to use for duplicate detection (e.g. [\"Email\"] for contacts)."
                      }
                    },
                    "required": [
                      "module",
                      "data"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_get_fields": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "get_fields",
        "operationId": "zoho_get_fields",
        "description": "Get the field schema (field definitions, data types, required flags, picklist values) for a Zoho CRM module. Use this before writing/updating records so you know the valid field names and picklist values.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_get_fields\",\"arguments\":{\"module\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Contacts, Deals, Accounts)."
                      }
                    },
                    "required": [
                      "module"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_list_users": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "list_users",
        "operationId": "zoho_list_users",
        "description": "List Zoho CRM users (owners/reps). Use this to resolve a user name → user ID before assigning records.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_list_users\",\"arguments\":{\"type\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "description": "User filter: AllUsers, ActiveUsers, DeactiveUsers, ConfirmedUsers, NotConfirmedUsers, DeletedUsers, ActiveConfirmedUsers, AdminUsers, ActiveConfirmedAdmins, CurrentUser. Default: ActiveUsers."
                      }
                    }
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_convert_lead": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "convert_lead",
        "operationId": "zoho_convert_lead",
        "description": "Convert a Zoho Lead into a Contact + Account, and optionally a Deal. This is the standard sales pipeline promotion step.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_convert_lead\",\"arguments\":{\"leadId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "leadId": {
                        "type": "string",
                        "description": "The Lead ID to convert."
                      },
                      "overwrite": {
                        "type": "boolean",
                        "description": "Overwrite existing matching data. Default false."
                      },
                      "notify_lead_owner": {
                        "type": "boolean",
                        "description": "Send email to lead owner. Default false."
                      },
                      "notify_new_entity_owner": {
                        "type": "boolean",
                        "description": "Notify new Contact/Deal owner. Default false."
                      },
                      "accounts": {
                        "type": "object",
                        "description": "Account data for the new Account record (e.g. { \"Account_Name\": \"Acme\" })."
                      },
                      "contacts": {
                        "type": "object",
                        "description": "Contact data for the new Contact record."
                      },
                      "deals": {
                        "type": "object",
                        "description": "Deal data for an optional new Deal (e.g. { \"Deal_Name\": \"Acme Q1\", \"Stage\": \"Qualification\", \"Amount\": 50000 }). Omit if not creating a deal."
                      }
                    },
                    "required": [
                      "leadId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_related_records": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "related_records",
        "operationId": "zoho_related_records",
        "description": "Get related records for a Zoho CRM record — e.g. all Deals for a Contact, all Contacts for an Account, all Notes for a Deal.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_related_records\",\"arguments\":{\"module\":\"<string>\",\"id\":\"<string>\",\"related_list_name\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "Parent module (e.g. Contacts, Accounts, Deals)."
                      },
                      "id": {
                        "type": "string",
                        "description": "Parent record ID."
                      },
                      "related_list_name": {
                        "type": "string",
                        "description": "Related list API name (e.g. \"Deals\", \"Contacts\", \"Notes\", \"Tasks\", \"Products\"). Case sensitive."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number (default 1)."
                      },
                      "per_page": {
                        "type": "number",
                        "description": "Records per page (default 20, max 200)."
                      }
                    },
                    "required": [
                      "module",
                      "id",
                      "related_list_name"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_create_note": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "create_note",
        "operationId": "zoho_create_note",
        "description": "Create a note attached to any Zoho CRM record (Contact, Deal, Account, Lead, etc.).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_create_note\",\"arguments\":{\"parentModule\":\"<string>\",\"parentId\":\"<string>\",\"content\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "parentModule": {
                        "type": "string",
                        "description": "Parent module the note attaches to (e.g. Contacts, Deals, Accounts, Leads)."
                      },
                      "parentId": {
                        "type": "string",
                        "description": "Parent record ID."
                      },
                      "title": {
                        "type": "string",
                        "description": "Note title."
                      },
                      "content": {
                        "type": "string",
                        "description": "Note body content."
                      }
                    },
                    "required": [
                      "parentModule",
                      "parentId",
                      "content"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_list_notes": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "list_notes",
        "operationId": "zoho_list_notes",
        "description": "List notes attached to a Zoho CRM record.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_list_notes\",\"arguments\":{\"module\":\"<string>\",\"id\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "Parent module."
                      },
                      "id": {
                        "type": "string",
                        "description": "Parent record ID."
                      }
                    },
                    "required": [
                      "module",
                      "id"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_add_tag": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "add_tag",
        "operationId": "zoho_add_tag",
        "description": "Add one or more tags to a Zoho CRM record.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_add_tag\",\"arguments\":{\"module\":\"<string>\",\"id\":\"<string>\",\"tags\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "Module (e.g. Contacts, Deals)."
                      },
                      "id": {
                        "type": "string",
                        "description": "Record ID."
                      },
                      "tags": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Tag names to add."
                      }
                    },
                    "required": [
                      "module",
                      "id",
                      "tags"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_remove_tag": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "remove_tag",
        "operationId": "zoho_remove_tag",
        "description": "Remove one or more tags from a Zoho CRM record.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_remove_tag\",\"arguments\":{\"module\":\"<string>\",\"id\":\"<string>\",\"tags\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "Module (e.g. Contacts, Deals)."
                      },
                      "id": {
                        "type": "string",
                        "description": "Record ID."
                      },
                      "tags": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Tag names to remove."
                      }
                    },
                    "required": [
                      "module",
                      "id",
                      "tags"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_batch_create": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "batch_create",
        "operationId": "zoho_batch_create",
        "description": "Create multiple records in a Zoho CRM module in one API call (up to 100).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_batch_create\",\"arguments\":{\"module\":\"<string>\",\"records\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module to create records in (e.g. Leads, Contacts, Deals)."
                      },
                      "records": {
                        "type": "array",
                        "items": {
                          "type": "object"
                        },
                        "description": "Array of record objects with field values (up to 100). E.g. [{ \"Last_Name\": \"Smith\", \"Email\": \"smith@example.com\" }]."
                      }
                    },
                    "required": [
                      "module",
                      "records"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_batch_update": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "batch_update",
        "operationId": "zoho_batch_update",
        "description": "Update multiple records in a Zoho CRM module in one API call.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_batch_update\",\"arguments\":{\"module\":\"<string>\",\"records\":[]}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module to update records in (e.g. Leads, Contacts, Deals)."
                      },
                      "records": {
                        "type": "array",
                        "items": {
                          "type": "object"
                        },
                        "description": "Array of record objects each containing an \"id\" field and the fields to update. E.g. [{ \"id\": \"123\", \"Phone\": \"+1-555-0199\" }]."
                      }
                    },
                    "required": [
                      "module",
                      "records"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_get_blueprint": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "get_blueprint",
        "operationId": "zoho_get_blueprint",
        "description": "Get the blueprint (workflow transitions) for a specific record in a Zoho CRM module.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_get_blueprint\",\"arguments\":{\"module\":\"<string>\",\"recordId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Deals)."
                      },
                      "recordId": {
                        "type": "string",
                        "description": "The record ID to get the blueprint for."
                      }
                    },
                    "required": [
                      "module",
                      "recordId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_transition_record": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "transition_record",
        "operationId": "zoho_transition_record",
        "description": "Execute a blueprint transition on a record (move through workflow stages).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_transition_record\",\"arguments\":{\"module\":\"<string>\",\"recordId\":\"<string>\",\"transitionId\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Deals)."
                      },
                      "recordId": {
                        "type": "string",
                        "description": "The record ID to transition."
                      },
                      "transitionId": {
                        "type": "string",
                        "description": "The transition ID from the blueprint response."
                      },
                      "data": {
                        "type": "object",
                        "description": "Optional field values required by the transition (e.g. { \"Stage\": \"Closed Won\" })."
                      }
                    },
                    "required": [
                      "module",
                      "recordId",
                      "transitionId"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_get_analytics": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "get_analytics",
        "operationId": "zoho_get_analytics",
        "description": "Get analytics/dashboard data from Zoho CRM using COQL (CRM Object Query Language).\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_get_analytics\",\"arguments\":{\"query\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "query": {
                        "type": "string",
                        "description": "COQL select query, e.g. \"select Last_Name, Email from Contacts where Lead_Source = 'Web'\"."
                      }
                    },
                    "required": [
                      "query"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_list_layouts": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "list_layouts",
        "operationId": "zoho_list_layouts",
        "description": "List all layouts for a Zoho CRM module.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_list_layouts\",\"arguments\":{\"module\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "CRM module (e.g. Leads, Contacts, Deals)."
                      }
                    },
                    "required": [
                      "module"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/mcp#tool=zoho_get_related_records_v2": {
      "post": {
        "tags": [
          "zoho"
        ],
        "summary": "get_related_records_v2",
        "operationId": "zoho_get_related_records_v2",
        "description": "Get records related to a parent record with pagination.\n\nInvoke via:\n\n```bash\ncurl -X POST https://mcp-router-production-d6a7.up.railway.app/mcp \\\n  -H 'Authorization: Bearer $MCP_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"zoho_get_related_records_v2\",\"arguments\":{\"module\":\"<string>\",\"recordId\":\"<string>\",\"relatedModule\":\"<string>\"}}}'\n```",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "arguments": {
                    "type": "object",
                    "properties": {
                      "module": {
                        "type": "string",
                        "description": "Parent module (e.g. Contacts, Accounts, Deals)."
                      },
                      "recordId": {
                        "type": "string",
                        "description": "Parent record ID."
                      },
                      "relatedModule": {
                        "type": "string",
                        "description": "Related module name (e.g. Deals, Contacts, Notes, Tasks)."
                      },
                      "page": {
                        "type": "number",
                        "description": "Page number for pagination (default 1)."
                      }
                    },
                    "required": [
                      "module",
                      "recordId",
                      "relatedModule"
                    ]
                  }
                },
                "required": [
                  "arguments"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool result (MCP `tools/call` response shape)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MCPToolCallResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid arguments or missing credentials"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT or API Token"
      }
    },
    "schemas": {
      "JsonRpcRequest": {
        "type": "object",
        "required": [
          "jsonrpc",
          "method"
        ],
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "method": {
            "type": "string",
            "examples": [
              "tools/list",
              "tools/call"
            ]
          },
          "params": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "MCPToolCallResult": {
        "type": "object",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "type",
                "text"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "const": "text"
                },
                "text": {
                  "type": "string"
                }
              }
            }
          },
          "isError": {
            "type": "boolean"
          }
        }
      }
    }
  },
  "x-stats": {
    "adapters": 81,
    "tools": 1019,
    "generatedAt": "2026-05-19T16:38:19.002Z"
  }
}