Index / MCP servers / GTM Otto

GTM Otto MCP server

Connect GTM Otto and your agent gets 21 tools, among them gtm_approve, gtm_configure_source, gtm_connect_linkedin. It answers at https://agent.gtmotto.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 4 of 4 times since 23 September 2026; the last check, on 7 November 2026, succeeded.

Status
Answering
Tools
21
Official
yes, served from gtmotto.com
Reliability
4 of 4 checks
Response time
303 ms
Transport
streamable HTTP
Last checked
7 November 2026

Self-driving LinkedIn prospecting: it sources, warms and invites daily. You approve every message.

Description as the publisher wrote it.

The 21 tools GTM Otto offers

ToolWhat it does
gtm_approveApprove ONE drafted action by its approvalId (from gtm_list_approvals). It then leaves on the seat's next slot, inside LinkedIn's limits — this is the human's tap, moved from the cockpit to the chat, so ONLY call it after showing them the d
Inputs: approvalId
gtm_configure_sourceWrite a lane's settings — upload an account list, set the Post-discovery intent and anchors, change the job keywords, move a gate. MERGE semantics: only the fields you send change. Lists (companies, postUrls, competitors) REPLACE by default
Inputs: playId, key, config, listMode, on
gtm_connect_linkedinThe link a human opens to connect (or reconnect) their LinkedIn account to a play — the one cockpit step the play cannot run without. Hand the URL to the human, tell them to say when it is done, then call gtm_linkedin_status: the seat reads
Inputs: playId
gtm_create_playCreate a fully-configured play in one call: the product (an existing productId, or a websiteUrl which seeds one and kicks its research), the play itself, the ICP facets, which sourcing lanes are on, the autonomy ladder and the caps. Three r
Inputs: name, productId, websiteUrl, productName, goal, voice
gtm_estimate_icpHow big an audience a CANDIDATE ICP would reach — '≈ N companies match' — before committing to it. Writes nothing: no play, no ICP row, no cache. Use it to iterate (propose facets → see 40 → widen the locations → see 900 → then create the p
Inputs: industries, locations, sizes
gtm_forget_harvested_postsThe tuning escape hatch for the post lanes. A post lane remembers every post it already paid to harvest so it never buys the same engagers twice — which makes it impossible to TUNE: change the intent or a gate, run, and the answer is 'no ne
Inputs: playId, key
gtm_linkedin_statusThe play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the account was disconnected or deleted; the queue is parked until a human reconnects), `
Inputs: playId
gtm_list_approvalsEvery drafted action that waits for the human — an invite note, a first message, a follow-up, a reply or a comment the planner wrote — with the draft, the 'why now', the lead, and a cockpit link. One play, or the whole workspace when playId
Inputs: playId
gtm_list_playsEvery play in the workspace with enough context to route on: which product it sells, whether it is active or paused, whether a LinkedIn seat is actually connected (`seatConnected: false` means the play cannot act, whatever its status says),
gtm_play_statsThe play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, last 7 days, last 24 hours — each windowed count paired with the window before it
Inputs: playId
gtm_preview_sourceDry-run ONE lane: '≈ N people match' and a 10-person sample, WITHOUT inserting a lead, spending the day's budget or moving the run clock. Same query, same gates, same scorers as a real run, on up to 50 people — so what it shows is what a ru
Inputs: playId, key
gtm_rejectReject (skip) ONE drafted action by its approvalId. Nothing is sent; the planner records the decline and re-plans around it instead of proposing the same step again. Ask the human first, as for gtm_approve.
Inputs: approvalId
gtm_run_source'Run once now' — run ONE lane immediately through the same code the sourcing tick runs, with force: an OFF lane still runs (that is what run-once means while configuring), a DRAFT play still runs (how you try a lane before launch), a PAUSED
Inputs: playId, key
gtm_set_sourceSwitch a lane on or off — the toggle on the Sources list. Switching ON a lane that has nothing to run on (no companies, no intent/anchors/posts, no role) is refused: configure it first. An empty ICP is not a refusal — people_search may go o
Inputs: playId, key, on
gtm_show_playONE play in full — everything needed to judge it or copy it into a better one: goal and voice, the account's daily cap and working hours (shared by every play on the seat), the ICP facets, the five sourcing lanes with their config and last
Inputs: playId
gtm_show_sourcesAll five sourcing lanes of a play, configured or not — the read to make before touching any of them. Per lane: `configured`, `on`, the parsed `config` (defaults filled), the cockpit's `summary` (null = needs setup), `blocked` (why it cannot
Inputs: playId
gtm_source_runsThe run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets LinkedIn could not filter on, and the provider's status and message when it refuse
Inputs: playId, key, limit
gtm_sources_referenceTHE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search, competitor_posts a.k.a. Post discovery, job_offers, account_list, and the retir
gtm_update_icpChange the ICP a play runs — the query behind people_search and the fit gate on every other lane. Seven string arrays, plain words (gtmotto normalises 'Swiss' → Switzerland, 'Fintech' → Financial Services itself): titles, seniority, languag
Inputs: playId, titles, seniority, languages, industries, sizes
gtm_update_playChange a play's own knobs — name, goal, voice — its two switches, and the ACCOUNT's pacing (daily action cap, working hours: shared by every play on the LinkedIn account, not per play). `paused: true` is the human's stop button (nothing run
Inputs: playId, name, goal, voice, dailyCap, workingHours
gtm_whoamiWho this key belongs to, and what the workspace may do: org name, plan, subscription status, how many products and plays exist, and the LEAD METER (leads added this calendar month, the plan's cap, and what is left). Start here — the remaini

Add GTM Otto to your AI client

Every block below points at https://agent.gtmotto.com/mcp. Pick your client and copy.

Claude Code: one command in your terminal
claude mcp add --transport http gtm-otto https://agent.gtmotto.com/mcp
Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "gtm-otto": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://agent.gtmotto.com/mcp"]
    }
  }
}
Cursor: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
  "mcpServers": {
    "gtm-otto": {
      "url": "https://agent.gtmotto.com/mcp"
    }
  }
}
VS Code and GitHub Copilot: .vscode/mcp.json
{
  "servers": {
    "gtm-otto": {
      "type": "http",
      "url": "https://agent.gtmotto.com/mcp"
    }
  }
}
Zed: Zed settings.json
{
  "context_servers": {
    "gtm-otto": {
      "url": "https://agent.gtmotto.com/mcp"
    }
  }
}
Windsurf: ~/.codeium/mcp_config.json
{
  "mcpServers": {
    "gtm-otto": {
      "serverUrl": "https://agent.gtmotto.com/mcp"
    }
  }
}
JetBrains AI Assistant: Settings, Tools, AI Assistant, MCP, New MCP Server, as JSON
{
  "mcpServers": {
    "gtm-otto": {
      "url": "https://agent.gtmotto.com/mcp"
    }
  }
}
Continue: .continue/mcpServers/neuronto.yaml
name: GTM Otto
version: 0.0.1
schema: v1
mcpServers:
  - name: GTM Otto
    type: streamable-http
    url: https://agent.gtmotto.com/mcp
Gemini CLI: ~/.gemini/settings.json
{
  "mcpServers": {
    "gtm-otto": {
      "httpUrl": "https://agent.gtmotto.com/mcp"
    }
  }
}
Codex CLI: MCP server config
{
  "mcpServers": {
    "gtm-otto": {
      "type": "http",
      "url": "https://agent.gtmotto.com/mcp"
    }
  }
}
Warp: MCP servers, + Add, paste JSON
{
  "mcpServers": {
    "gtm-otto": {
      "url": "https://agent.gtmotto.com/mcp"
    }
  }
}
Goose: a one-click extension link
goose://extension?url=https%3A%2F%2Fagent.gtmotto.com%2Fmcp&type=streamable_http&id=gtm-otto&name=GTM%20Otto

Is GTM Otto up right now?

It answered our last check on 7 November 2026 in 303 ms. Over 4 checks since 23 September 2026 it answered 4. Status here comes from Neuronto's own probes, not from the publisher.

MCP servers similar to GTM Otto

Questions about GTM Otto

Is there an official GTM Otto MCP server?

Yes. It is published by gtmotto.com and served from agent.gtmotto.com, the vendor's own domain: https://agent.gtmotto.com/mcp.

How many tools does GTM Otto have?

21, as returned by the server's own tools/list on 13 November 2026: gtm_approve, gtm_configure_source, gtm_connect_linkedin, gtm_create_play, gtm_estimate_icp, gtm_forget_harvested_posts, gtm_linkedin_status, gtm_list_approvals, and 13 more.

Is GTM Otto down?

It answered our last check on 7 November 2026 in 303 ms. Over 4 checks since 23 September 2026 it answered 4.

How do I add GTM Otto to Cursor?

Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://agent.gtmotto.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.

Does GTM Otto need an API key?

It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.

Where this comes from

Publisher: com.gtmotto. Endpoint host: agent.gtmotto.com. ARD identifier: urn:air:com.gtmotto:mcp:linkedin. First indexed 22 September 2026. The tools are exactly what the server returned; nothing on this page is inferred from its name. Ranking in Neuronto search is never for sale.

Is this your server? Get a message the day it stops answering or its tools change: monitoring, 14 days free. Or claim the domain to manage how it is listed.