{
  "serverInfo": {
    "name": "gtmotto",
    "title": "GTM Otto",
    "version": "1"
  },
  "description": "Your LinkedIn agent. Inside Claude or ChatGPT. Tell your assistant who you want to reach. Otto finds the buyers, starts LinkedIn conversations, and follows up. Connect it to the rest of your GTM workflow, with control over what it sends.",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://agent.gtmotto.com/mcp"
  },
  "capabilities": {
    "tools": true,
    "prompts": true,
    "resources": true
  },
  "documentation": "https://gtmotto.com/docs/mcp",
  "authentication": {
    "schemes": [
      {
        "type": "oauth2",
        "description": "Connect by URL. The first protected tool call returns a sign-in request; the user signs in in a popup and the client retries.",
        "registration": "https://app.gtmotto.com/connect"
      },
      {
        "type": "apiKey",
        "description": "Authorization: Bearer gtm_sk_… (for scripts and n8n; minted in the cockpit settings)"
      }
    ]
  },
  "provider": {
    "organization": "Otto Softwares",
    "url": "https://gtmotto.com"
  },
  "repository": "https://github.com/gtmotto/mcp",
  "privacyPolicy": "https://gtmotto.com/privacy",
  "support": "hello@gtmotto.com",
  "tools": [
    {
      "name": "gtm_whoami",
      "description": "Your org, plan, lead meter, and the next step to take."
    },
    {
      "name": "gtm_list_plays",
      "description": "Every play, its status, and whether a LinkedIn seat is connected."
    },
    {
      "name": "gtm_show_play",
      "description": "One play in full: ICP, lanes, caps, hours, autonomy ladder."
    },
    {
      "name": "gtm_play_stats",
      "description": "What a play did and what came back, over four windows."
    },
    {
      "name": "gtm_linkedin_status",
      "description": "Which LinkedIn account is connected and today's headroom."
    },
    {
      "name": "gtm_sources_reference",
      "description": "The five lanes: fields, caps, and what makes each runnable."
    },
    {
      "name": "gtm_show_sources",
      "description": "How each lane of a play is configured, and why one is blocked."
    },
    {
      "name": "gtm_source_runs",
      "description": "A lane's run history: scanned, dropped, added."
    },
    {
      "name": "gtm_list_approvals",
      "description": "Messages the planner drafted that wait for a human."
    },
    {
      "name": "gtm_estimate_icp",
      "description": "About how many companies match an ICP. Writes nothing."
    },
    {
      "name": "gtm_create_play",
      "description": "Create a play from an ICP. Draft by default."
    },
    {
      "name": "gtm_update_icp",
      "description": "Change the ICP a play runs on."
    },
    {
      "name": "gtm_update_play",
      "description": "Pause, resume or launch. Set the daily cap and working hours."
    },
    {
      "name": "gtm_configure_source",
      "description": "Set a lane's fields. Can switch it on in the same call."
    },
    {
      "name": "gtm_set_source",
      "description": "Switch a lane on or off."
    },
    {
      "name": "gtm_preview_source",
      "description": "Dry run of a lane: a sample of who it would keep, no leads written."
    },
    {
      "name": "gtm_run_source",
      "description": "Real run of a lane. Real leads, real quota."
    },
    {
      "name": "gtm_forget_harvested_posts",
      "description": "Clear a post lane's memory so the next run judges today's posts again."
    },
    {
      "name": "gtm_connect_linkedin",
      "description": "Returns the link to connect your LinkedIn account."
    },
    {
      "name": "gtm_approve",
      "description": "Approve one drafted message. The agent asks you before each one."
    },
    {
      "name": "gtm_reject",
      "description": "Reject one drafted message. The agent asks you before each one."
    }
  ]
}
