Marketing
gtmotto.com
An MCP server for managing go-to-market sales plays and LinkedIn outreach campaigns, exposing workspace identity, play details, pipeline statistics, and LinkedIn seat status.
ENDPOINT 1
https://agent.gtmotto.com/mcp
MCP server metadata
- Name
- gtmotto
- Version
- 1.2.0
GTM Otto grows a company on LinkedIn: a PLAY sources people who match an ICP through up to five SOURCING LANES, warms them (visit → like → comment), invites them and opens a conversation — with a human gate on anything that speaks. How to work with it: 1. gtm_whoami first. Every read (gtm_whoami, gtm_list_plays, gtm_show_play) carries a `next` field — the one step to take now (choose_plan, create_play, connect_linkedin, configure_sources, activate, approve_messages, warming_up, …) with the tool or URL for it. Follow it instead of guessing. 2. Not signed in yet? gtm_whoami and gtm_sources_reference work anyway. The first protected call shows the human a Connect card (OAuth); after they sign in, retry the same call. Plan and LinkedIn are chosen from the chat too: `next` hands back the URL or gtm_connect_linkedin's link. 3. Read gtm_sources_reference BEFORE configuring a lane. Lanes are addressed by (playId, key); configuring ≠ switching on; a lane with nothing to run on is refused when switched on. 4. Nothing runs inside a write. A lane runs on the next 5-minute tick if it is ON and the play is ACTIVE and not paused, then once per 24h. To see results now: gtm_preview_source (free of side effects) or gtm_run_source (real run, real leads). 5. Never activate a play, resume a paused one, run a lane, or approve a message without the human having asked for it in this conversation. Activation acts from their own LinkedIn account; an approval sends words in their name — show the draft and ask. 6. After activation nothing visible happens for about 2 days (visits and likes first, invites after). Say so; gtm_play_stats reports it as warming up. 7. IDs echo back from other tools' output. A wrong or foreign id reads as "not found" — it is not an error to retry blindly.
Known tools 21
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).
Inferred read-onlygtm_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), and how its leads are spread across the pipeline stages.
Inferred read-onlygtm_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 run, the autonomy ladder (which rungs run alone and which wait for a human), the LinkedIn seat, and today's used/cap for the seat plus this play's share.
Inferred read-onlygtm_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 as a percentage delta.
Inferred read-onlygtm_linkedin_statusThe play's LinkedIn seat and today's headroom against the LinkedIn limits.
Inferred read-onlygtm_estimate_icpHow big an audience a CANDIDATE ICP would reach — '≈ N companies match' — before committing to it.
Inferred read-onlygtm_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.
Potential side effectsgtm_sources_referenceTHE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call.
Inferred read-onlygtm_show_sourcesAll five sourcing lanes of a play, configured or not — the read to make before touching any of them.
Inferred read-onlygtm_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 refused.
Potential side effectsgtm_configure_sourceWrite a lane's settings — upload an account list, set the Post-discovery intent and anchors, change the job keywords, move a gate.
Potential side effectsgtm_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.
Inferred read-onlygtm_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 play does not.
Inferred read-onlygtm_update_icpChange the ICP a play runs — the query behind people_search and the fit gate on every other lane.
Inferred read-onlygtm_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).
Inferred read-onlygtm_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.
Inferred read-onlygtm_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.
Potential side effectsgtm_approveApprove ONE drafted action by its approvalId (from gtm_list_approvals).
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.gtmotto]
url = "https://agent.gtmotto.com/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"gtmotto": {
"type": "http",
"url": "https://agent.gtmotto.com/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: gtmotto
Remote MCP URL: https://agent.gtmotto.com/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"gtmotto": {
"url": "https://agent.gtmotto.com/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"gtmotto": {
"type": "http",
"url": "https://agent.gtmotto.com/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "gtmotto",
"transport": "streamable-http",
"url": "https://agent.gtmotto.com/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.