GetSales: Outreach MCP Server

io.getsales由 getsales.io 發布官方發布者v1.0.0更新於 Nov 8, 2026

Drive a GetSales workspace: tables, people, companies, enrichment, workflows, inbox, tasks, signals.

已驗證Streamable HTTP可網頁執行效率與工作流溝通與協作商業與電商

概覽

AI 產生的概覽

讓 AI 助理在 GetSales 外聯工作區中作業:建立人員與公司表格、補充資料、執行工作流程並處理收件匣回覆。

可以做什麼
  • 透過中繼工具尋找並呼叫工作區工具:搜尋工具目錄、讀取工具定義,再實際執行
  • 管理表格、已儲存檢視、補充欄位與 AI 欄位、人員與公司資料列、CRM 階段、備註與拒聯名單
  • 撰寫、驗證、發布、暫停與恢復工作流程,並追蹤每個人在流程中的進度
  • 處理收件匣:對話串、訊息、AI SDR 草稿、任務與人員時間軸,以及寄件者設定與 AI SDR 代理和訓練
  • 檢視網站訊號與訪客,並管理團隊、權限、帳單、整合、Webhook 與白標等工作區設定
適用情境
適合已使用 GetSales 的代理商與 GTM 團隊,想讓助理在聊天用戶端中建立名單、估價並執行資料補充、起草序列與分揀回覆,而不必開應用程式。
執行需求
需要 GetSales 帳號與工作區。可透過 streamable HTTP 連線託管端點並在瀏覽器完成 OAuth,或以 bearer 標頭送出 API 金鑰。只能啟動指令的用戶端可執行 npm 啟動器(Node.js 18 以上)或 Docker 映像,後者需要 GETSALES_API_KEY。GETSALES_MCP_URL 可覆寫端點。
安裝前請注意
它會變更真實工作區資料:刪除、取消、合併、發布工作流程、修改 Webhook 與 AI SDR 被標為危險操作,需以 commit_token 確認,但付費執行、批次編輯與公司合併在第一次呼叫就執行。補充與 AI 搜尋會消耗資料點數,未設定 max_budget 的執行沒有上限。API 金鑰只顯示一次且帶有權限;同一連線不要同時使用 OAuth 與固定金鑰。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 GetSales: Outreach MCP Server,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.getsales%2Foutreach-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "getsales-outreach": {
      "type": "http",
      "url": "https://mcp2.getsales.io/mcp/public"
    }
  }
}

README

GetSales: Outreach MCP Server

[Site] [Protocol] [License]

GetSales is LinkedIn and email outreach for agencies and GTM teams, in one app. Describe who you sell to, and GetSales finds the people and their work emails, scores them and writes the first lines, and every reply comes back to a team inbox.

This MCP server lets an AI agent work in your GetSales workspace. Claude, Cursor, ChatGPT or another MCP client connects to one hosted endpoint, https://mcp2.getsales.io/mcp/public, and through four meta-tools reaches the tables of people and companies, the enrichment columns, the workflows, the inbox with the AI SDR's drafts, the tasks, the website signals and the webhooks.

The server runs hosted, so this repository holds its kit and no server code: client configs for the URL, npx and Docker setups, the npm launcher and its image, the MCP Registry entry, the Claude Code and Cursor plugin manifests and an agent skill.

What is an outreach MCP server?

An outreach MCP server puts the objects of an outreach product behind Model Context Protocol tools, so an AI agent can do from a chat what a person does in the app: build a list of the right people, enrich it, put it into a sequence and keep up with the replies. MCP is the open protocol that Claude, Cursor, ChatGPT and other clients use to call tools on a server.

This one works on the objects of your own GetSales workspace. Ask for a table built from one sentence, a work email column priced before it runs, a workflow drafted for the people who qualify, or the threads that wait for you, and the agent chains the calls. The tools the server marks dangerous, such as the delete and cancel tools, show a preview and run only after you confirm. Paid work is not behind that preview, so the skill in this repository has the agent quote the estimate and wait for your yes before it starts any.

Which clients does it work with?

Any MCP client that speaks streamable HTTP or can start a command:

  • Claude: claude.ai, Claude Desktop and Claude Code
  • Cursor
  • ChatGPT, through custom connectors
  • VS Code, Codex and other agent runtimes

Not on MCP? Each tool maps to an endpoint of the GetSales REST API, documented at docs.getsales.io, and one API key works on both.

How do I connect GetSales to Claude, Cursor or ChatGPT?

SetupForSign-inNeeds
The URL https://mcp2.getsales.io/mcp/publicClients that speak streamable HTTP: claude.ai, Claude Desktop, Claude Code, Cursor, ChatGPT, VS CodeOAuth in the browser, or an API key headerNothing to install
The npm launcher @getsales/outreach-mcpClients that can only start a commandOAuth, or GETSALES_API_KEYNode.js 18 or newer
The Docker image getsalesio/outreach-mcpA host without Node.jsGETSALES_API_KEY onlyDocker

1. Get an account. Sign up for GetSales, or use the workspace you already have.

2. Add the server to your client. Claude Desktop and Cursor read the bare URL from their config file (examples/claude_desktop_config.json, examples/cursor_mcp.json):

json
{  "mcpServers": {    "getsales": { "url": "https://mcp2.getsales.io/mcp/public" }  }}

In Claude Code it takes one command:

bash
claude mcp add --transport http getsales https://mcp2.getsales.io/mcp/public

On claude.ai, open Settings, Connectors, Add custom connector, and paste the same URL.

You paste no key. The first call comes back with a WWW-Authenticate challenge, the client registers itself (dynamic client registration), and the GetSales consent screen opens in your browser. Sign in, pick the workspaces the client may act in, and click Allow.

A client with no browser at hand (CI, a server, a script) sends an API key instead, made in the app under Settings, API keys:

bash
claude mcp add --transport http getsales https://mcp2.getsales.io/mcp/public --header "Authorization: Bearer gs_live_..."

Use one way per connection. A client that runs OAuth and also sends a fixed header overwrites its OAuth token with that header on each request.

A client that can only start a command runs the launcher (examples/claude_desktop_config.npx.json). It does the same OAuth flow, or uses GETSALES_API_KEY when you put the key in its env. The key goes to the server as the bearer and never onto a command line, so a process list or the client's log of the launcher does not show it:

json
{  "mcpServers": {    "getsales": {      "command": "npx",      "args": ["-y", "@getsales/outreach-mcp"]    }  }}

The Docker image runs the same launcher and signs in with a key only (examples/claude_desktop_config.docker.json). With -e and the bare variable name, docker hands the container the key from the client's env, and the key stays off the docker command line:

json
{  "mcpServers": {    "getsales": {      "command": "docker",      "args": ["run", "-i", "--rm", "-e", "GETSALES_API_KEY", "getsalesio/outreach-mcp"],      "env": { "GETSALES_API_KEY": "gs_live_..." }    }  }}

OAuth cannot finish in the container: after the consent page your browser comes back to localhost, which is your machine, while mcp-remote waits for that answer on the container's own loopback. So without a key the container stops at once and says why. For OAuth, give the client the URL or run the npm launcher.

3. Ask in plain words.

"Build a table of heads of marketing at SEO agencies in Germany, add a work email column and tell me what it costs before anything runs."

The agent finds the tools and chains them: a table, an AI search as its source, the email column, the estimate. Then it stops and waits for your word. Every client step by step, ChatGPT, VS Code and Codex included: CONNECT.md.

Can I install it as a Claude Code or Cursor plugin?

Yes. This repository is a plugin for both (.claude-plugin/plugin.json, .cursor-plugin/plugin.json), and it brings two pieces:

  • The hosted server at https://mcp2.getsales.io/mcp/public, from .mcp.json.
  • The getsales skill and its worked flows. The skill teaches the agent to look a tool up before it calls it, to price paid work and wait for a yes, to show you the preview of a dangerous tool before it confirms, and to read an error before it calls again.

Claude Code loads the plugin from a clone of this repository for one session:

bash
claude --plugin-dir <path to the clone>

For Cursor, copy the plugin files from the clone into Cursor's local plugin folder:

bash
mkdir -p ~/.cursor/plugins/local/getsalescp -R .cursor-plugin .mcp.json skills assets ~/.cursor/plugins/local/getsales/

Then run Developer: Reload Window. The skill and the server show up under Customize.

The plugin holds no key and asks for no settings: the consent page opens on the first tool call.

What can my agent do with it?

The server keeps the tools of the workspace in toolsets, and an agent loads only what a task needs. It calls search_tools with the object and the action in plain words, reads the definition it picked (describe_tool, or search_tools with detail: "full"), then runs the tool through call_tool. list_toolsets is the map.

The toolsets of the workspace, by area:

Playtables: tables, people, enrichment and workflows

ToolsetWhat the agent works with
playtables.tablesTables, saved views and how each table is doing
playtables.columnsEnrichment and AI columns, cells, runs and cost estimates
playtables.rowsPeople, companies and the feed of what happened to each
playtables.crmPipeline stages, notes, tags and the do-not-contact list
playtables.sourcesWhere rows come from: AI search, CSV imports, webhooks
playtables.workflowsWorkflows: authoring, validation, publishing, pause and resume
playtables.workflow-recordsWhere each person stands in a workflow, and its tasks

The inbox, sender profiles and the AI SDR

ToolsetWhat the agent works with
inboxThreads, messages, the AI SDR's drafts, tasks, the person timeline, and who a thread is with
sender-profilesYour sender profiles, their variables, and what each did today and day by day
ai-sdr.agentsYour team's AI SDR agents, their scenarios, plans and runs
ai-sdr.trainingThe answers the AI SDR gives and their source documents, and what it learned: examples, hints, fixes and tests

Signals

ToolsetWhat the agent works with
signalsSessions and visitors, identified to a person or a company, and the plays that react to a table's facts

The workspace: the Settings and Admin panels

ToolsetWhat the agent works with
workspace.teamYour account, workspaces, members and invitations, the notification feed, and website reads for onboarding
workspace.accessThe API keys that stand and the apps a person connected
workspace.billingSubscription, invoices, payment methods, credit balance and spend
workspace.website-trackingTracking setup: sites, key pages, tracked events, settings
workspace.integrationsData providers and their prices, your own connections and HTTP tools, the call log
workspace.webhooksWebhook subscriptions and their deliveries
workspace.whitelabelWhite label brands, client workspaces, certificates

Things to ask once it is connected:

  • "How is the Berlin agencies table doing this month, and where do people drop out?"
  • "Which threads are waiting for me, and what did the AI SDR draft for each?"
  • "Who visited the pricing page this week and has not replied?"
  • "Draft a workflow for the Q4 view: an email, two days of waiting, a follow-up. Show it to me before you publish."
  • "How many credits do we have left, and what did last week's enrichment spend?"
  • "Subscribe our endpoint to new replies and fire a test event."

Which tools ask for a confirm first?

The ones the server marks dangerous. Their first call changes nothing and answers a preview of what would happen, with a commit_token. The same call again with that token runs it. The token works once, for that tool, those arguments and that workspace, and it expires after 300 seconds. Marked dangerous today: each tool that deletes or cancels something, a conversation merge, a thread's counterpart put on the stoplist, a site key or an ingest key rotated, a subscription change, a connected app revoked, a webhook created, changed or replayed, publishing or resuming a workflow, one person resumed, restarted or taken out of a workflow, a company taken off a table, a website visitor unlinked from a person, and an AI SDR agent changed, one of its scenarios reset or its examples forgotten.

These run on their first call, with no preview:

  • Paid work. A table run (create_playtable_run with type enrich) spends credits as it goes. estimate_credits prices it first, and its max_budget caps it, but a run sent without max_budget has no cap. An AI search source (create_data_source) spends credits on its result pages with no estimate and no cap. A column with config.auto_run: true fills each row that lands, outside any run's budget, held only by the column's own daily credit cap when one is set.
  • Bulk edits. create_playtable_run with type bulk changes many rows in one call, and its operations include deleting them and moving them to another table.
  • A company merge. merge_companies moves the leads of one company onto another, and no tool takes it back.

The skill has the agent say what such a step will do, and its cost when it has one, and wait for your yes. The server answers at most 600 calls and 120 writes a minute per workspace.

What happens when a call fails?

A refusal is a typed envelope with one of 16 codes in error.code, returned as a tool result with isError: true, never prose to parse. validation_failed names the field and the rule, forbidden names the missing permission, and payment_required means the subscription of the workspace is on hold or its plan has no room for the step.

A 429 comes in two kinds. One carries context.retry_after: too many calls, or a backend that asks for a pause. Wait the time it names (seconds at the edge, a timestamp when a backend names its own clock), then batch the work into fewer calls. The other carries context.resource and no context.retry_after: a cap of the plan or of concurrency, such as how many runs a team may have going at once. Waiting does not clear it. It clears when the resource frees, for example when a running run ends.

Each answer carries a trace id: quote it when you report a problem.

How do keys and permissions work?

  • OAuth, for interactive clients. The person signs in on the GetSales consent screen, picks the workspaces the client may act in and clicks Allow. The password never reaches the client, and the client refreshes its own token. A workspace revokes the connection under Settings, Connected apps.
  • API keys, for headless clients. A gs_live_... key made in the app under Settings, API keys, sent as Authorization: Bearer gs_live_.... The secret is shown once. A key belongs to one workspace and expires after three years unless it is made without an expiry. It rotates in place: the old secret keeps working for 24 hours by default (grace_seconds), so a config can change without downtime.
  • Permissions travel with the credential. A key holds an explicit list of permission tokens such as can_view_playtables or can_manage_workflows, always within the grant of the person who made it, and it can be narrowed to some sender profiles and tables (account_sids). A sender profile is the identity your team sends as, with its LinkedIn account and its mailboxes. A call outside the grant answers 403 forbidden with the permission it needed.

One key works on the REST API and on this server. Details: docs.getsales.io/authentication.

What does it cost?

On 2026-11-03 the pricing page lists API, webhooks, MCP and CLI on the free Playtables & Data plan, so connecting the server costs nothing. Paid work spends data credits from the balance of the workspace: enrichment columns such as email finding and verification, AI columns, the Find people column and AI search pages. The pricing page also covers bringing your own provider keys instead. estimate_credits names the cost range of a table run before it starts, and list_provider_catalog holds the price of each provider and model.

How is it different from calling the REST API?

Both are one contract: each tool maps to one REST endpoint with the same shapes. A few endpoints have no tool, such as the one that makes an API key, so that a secret never passes through a model.

MCP serverREST API
Who calls itAn AI agent, from a chat or an agent runtimeYour own code
AddressOne endpoint, https://mcp2.getsales.io/mcp/publicOne base URL per service, in the API reference
Finding a callsearch_tools over the catalog, at runtimeThe API reference
Deletes, cancels and the other dangerous toolsA preview first, then a confirm with a commit_tokenRun at once
Sign-inOAuth in the browser, or an API keyAn API key, or an OAuth access token
ErrorsThe 16-code envelope, as a tool result with isError: trueThe same envelope, with the HTTP status

What is in this repository?

PathWhat it is
server.jsonThe MCP Registry entry: the remote endpoint and the npm package
npm/@getsales/outreach-mcp, the stdio launcher over mcp-remote, with the lock of its dependencies
DockerfileThe same launcher as an image that signs in with a key only, installed from that lock
examples/Client configs for the URL, npx and Docker setups, and the Claude Code commands
.claude-plugin/, .cursor-plugin/, .mcp.json, assets/logo.pngThe Claude Code and Cursor plugin
skills/getsales/The agent skill and its worked flows
lhm.plugin.jsonThe LobeHub listing
kit.jsonThe names the files above repeat, written once
tests/, scripts/The checks of the kit. npm test runs offline

How the server treats a token, and how to report a problem: SECURITY.md.

Links


GetSales is an independent product and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn and the LinkedIn logo are trademarks of LinkedIn Corporation. Use of GetSales is at your own risk and subject to the applicable third-party platform terms.

來源:README.md,提交 a699cfc

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

1
  1. v1.0.0最新Nov 8, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分