{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_s2ph9bw5xwj2","handle":"gtm-otto","url":"https://wellknown.network/agents/gtm-otto","links":{"self":"https://wellknown.network/agents/gtm-otto/record.json","html":"https://wellknown.network/agents/gtm-otto","markdown":"https://wellknown.network/agents/gtm-otto/record.md","api":"https://wellknown.network/api/v1/agents/gtm-otto","status":"https://wellknown.network/api/v1/agents/gtm-otto/status","claim":"https://wellknown.network/agents/gtm-otto/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/gtm-otto/claim.json","badge":"https://wellknown.network/agents/gtm-otto/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/gtm-otto/history","tools":"https://wellknown.network/api/v1/agents/gtm-otto/tools"},"ard":{"identifier":"urn:air:agent.gtmotto.com:agent:gtm-otto","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"GTM Otto","summary":"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.","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.","publisher":{"name":"Otto Softwares","url":"https://gtmotto.com"},"homepage":"https://gtmotto.com/docs/mcp","repository":"https://github.com/gtmotto/mcp","version":"1.0.0","license":null,"protocols":["a2a","mcp"],"tags":["linkedin","prospecting","outbound","icp","sourcing","warm-up"],"pricing":null,"endpoints":[{"url":"https://agent.gtmotto.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":[{"id":"linkedin-prospecting","name":"Self-driving LinkedIn prospecting","tags":["linkedin","prospecting","outbound","icp","sourcing","warm-up"],"description":"Describe who you want to meet. GTM Otto estimates the audience, drafts a play (an ICP, five sourcing lanes, an autonomy level), finds people daily, warms them up from your own LinkedIn account, invites them, and drafts the messages you approve. No invite, message, comment or like verb: nothing is said without you."}],"tools":["Self-driving LinkedIn prospecting"],"extra":{"ard":{"type":"application/a2a-agent-card+json","metadata":null,"identifier":"urn:ai:gtmotto.com:agent:gtmotto","artifactUrl":"https://gtmotto.com/.well-known/agent-card.json","representativeQueries":["give claude a linkedin seat that works while you sleep"]},"updatedAt":"2026-09-22T12:15:13.628822Z","inputModes":["text/plain","application/json"],"outputModes":["application/json","text/plain"],"publishedAt":"2026-09-22T12:15:13.628822Z","capabilities":{"streaming":true,"pushNotifications":false,"stateTransitionHistory":false},"registryName":"com.gtmotto/linkedin","protocolVersion":"0.3.0"},"attribution":{"kind":"a2a_card","name":"a2a_card","repoUrl":"mcp_registry","summary":"a2a_card","version":"a2a_card","description":"a2a_card","homepageUrl":"a2a_card","publisherUrl":"a2a_card","publisherName":"a2a_card"}},"derived":{"capabilities":[{"slug":"content.social","name":"Social Media","confidence":1,"provenance":"declared"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":1,"provenance":"derived"},{"slug":"research.people-companies","name":"People & Company Research","confidence":0.583,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.525,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.525,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.525,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.525,"provenance":"derived"}],"categories":["commerce","content","dev","productivity","research"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-10T08:32:31.441Z","lastProbedAt":"2026-10-10T08:32:31.441Z","statusComputedAt":"2026-10-10T08:34:10.234Z","reliability30d":{"probes":65,"successRate":1,"p50Ms":807,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":65,"ok":65,"authBoundaryOk":0,"serviceOk":65,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T08:32:31.441Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":849,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T01:25:13.908Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":686,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T19:27:28.331Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":722,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:30:30.288Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1072,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T06:22:28.151Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":794,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T00:25:05.417Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":810,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:27:11.348Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1012,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T11:22:25.770Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":748,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:24:55.471Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":695,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T21:29:41.330Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":702,"error":null,"detail":{"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"toolCount":21,"toolsHash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","serverName":"gtmotto","capabilities":["tools","resources","prompts"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"gtm_whoami","description":"Who 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 "},{"name":"gtm_list_plays","description":"Every 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 connect"},{"name":"gtm_show_play","description":"ONE 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 o"},{"name":"gtm_play_stats","description":"The play's Stats screen: the pipeline (leads sourced → warmed → invited → new connections → conversations started) over four windows — all time, last 30 days, l"},{"name":"gtm_linkedin_status","description":"The play's LinkedIn seat and today's headroom against the LinkedIn limits. States: `no_seat` (nothing connected — the play cannot act), `seat_broken` (the accou"},{"name":"gtm_estimate_icp","description":"How 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 iter"},{"name":"gtm_create_play","description":"Create 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 IC"},{"name":"gtm_sources_reference","description":"THE REFERENCE for configuring sourcing lanes — read it before your first gtm_configure_source / gtm_set_source / gtm_run_source call. Every lane (people_search,"},{"name":"gtm_show_sources","description":"All 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"},{"name":"gtm_source_runs","description":"The run history of ONE lane, newest first — the funnel over time (scanned → dropped by fit → dropped by intent → added / duplicates / capped), the ICP facets Li"},{"name":"gtm_configure_source","description":"Write 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 fie"},{"name":"gtm_set_source","description":"Switch 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 ref"},{"name":"gtm_preview_source","description":"Dry-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"},{"name":"gtm_run_source","description":"'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 co"},{"name":"gtm_forget_harvested_posts","description":"The 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 i"},{"name":"gtm_update_icp","description":"Change 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' →"},{"name":"gtm_update_play","description":"Change 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 LinkedI"},{"name":"gtm_connect_linkedin","description":"The 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,"},{"name":"gtm_list_approvals","description":"Every 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 "},{"name":"gtm_approve","description":"Approve 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 t"},{"name":"gtm_reject","description":"Reject (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 a"}],"package":null,"toolSurface":{"id":"ts_4un9uhj4mcku","endpointId":"ep_5hh4en396urd","hash":"cd7d90a8a7fb056b1912b10a5aaf80b5a8387ba28e0b3496eee8d0450e9bced8","toolCount":21,"serverName":"gtmotto","serverVersion":"1.2.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-23T00:25:06.045Z","lastSeenAt":"2026-10-10T08:32:31.436Z","observations":65,"toolNames":["gtm_whoami","gtm_list_plays","gtm_show_play","gtm_play_stats","gtm_linkedin_status","gtm_estimate_icp","gtm_create_play","gtm_sources_reference","gtm_show_sources","gtm_source_runs","gtm_configure_source","gtm_set_source","gtm_preview_source","gtm_run_source","gtm_forget_harvested_posts","gtm_update_icp","gtm_update_play","gtm_connect_linkedin","gtm_list_approvals","gtm_approve","gtm_reject"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_5hh4en396urd","url":"https://agent.gtmotto.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T04:24:55.470Z","auth":{"observedAt":"2026-10-08T04:24:55.978Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://agent.gtmotto.com/.well-known/oauth-protected-resource/mcp","resource":"https://agent.gtmotto.com/mcp","authorizationServers":["https://clerk.gtmotto.com"],"scopesSupported":["profile","email","offline_access"]},"authorizationServer":{"url":"https://clerk.gtmotto.com/.well-known/oauth-authorization-server","issuer":"https://clerk.gtmotto.com","grantTypesSupported":["authorization_code","refresh_token","urn:ietf:params:oauth:grant-type:device_code"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["client_secret_basic","none","client_secret_post"],"dynamicClientRegistration":false,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":true},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":true,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T04:24:56.005Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"gtmotto.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-07T14:08:36.000Z","validTo":"2026-12-06T15:08:33.000Z","daysToExpiry":57,"sanCount":3,"fingerprint256":"7A:CA:58:A9:54:D8:6A:B9:AF:BC:C8:E8:2A:D3:4F:E5:B9:2C:A0:D2:AF:44:04:57:E2:CF:98:12:69:B9:28:C9"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"a2a_card","key":"https://gtmotto.com/.well-known/agent-card.json","url":"https://gtmotto.com/.well-known/agent-card.json","firstSeenAt":"2026-09-23T00:21:18.893Z","fetchedAt":"2026-10-07T04:21:21.922Z","normalizedAt":"2026-10-07T04:21:21.922Z"},{"source":"ard_catalog","key":"urn:ai:gtmotto.com:agent:gtmotto","url":"https://gtmotto.com/.well-known/ai-catalog.json","firstSeenAt":"2026-09-23T00:21:38.288Z","fetchedAt":"2026-09-23T00:21:38.288Z","normalizedAt":"2026-09-23T00:21:38.288Z"},{"source":"mcp_registry","key":"com.gtmotto/linkedin","url":"https://registry.modelcontextprotocol.io/v0/servers/com.gtmotto%2Flinkedin","firstSeenAt":"2026-09-23T00:20:39.317Z","fetchedAt":"2026-10-09T07:20:57.314Z","normalizedAt":"2026-10-09T07:20:57.314Z"}]},"firstSeenAt":"2026-09-23T00:20:39.317Z","updatedAt":"2026-10-10T08:34:57.700Z"}