SalesMind AI MCP integration. Use when the user asks about SalesMind AI data: campaigns, leads, agents, personas, senders, lead lists, or growth automations. Guides the search + execute tool workflow.
You are connected to the SalesMind AI MCP at https://mcp.sales-mind.ai/mcp.
It exposes two tools: search and execute. Always follow this workflow.
For detailed examples, see reference.md.
actions (endpoints) and filters (query params)Never guess endpoints. Always search first.
Use these with the search tool:
| Keyword | Entity |
|---|
agent | AI sales agents (also used for teams) |
campaign | Outreach campaigns |
campaign-growth | Growth automation steps in campaigns |
lead | Individual prospects |
lead-list | Collections of leads |
persona | Buyer personas |
sender | LinkedIn accounts |
Combine with intent words: create campaign, list leads, update agent, delete persona.
Intent words: get, list, find, show, create, add, update, edit, delete, remove.
api is a global. Do NOT import or destructure it. Write an async arrow returning the result.
async () => await api.request(method, path, { path?, query?, body? })
Returns an object with .items array.
List with filters:
async () => await api.request('GET', '/v1/campaign', { query: { status: 'ACTIVE', page: 1 } })
Get by ID:
async () => await api.request('GET', '/v1/campaign/{id}', { path: { id: '123' } })
Create:
async () => await api.request('POST', '/v1/lead', { body: { firstName: 'Jane', lastName: 'Doe' } })
Multi-step:
async () => {
const campaigns = await api.request('GET', '/v1/campaign', { query: { status: 'ACTIVE' } });
const results = [];
for (const c of campaigns.items) {
const growths = await api.request('GET', '/v1/campaign-growth', {
query: { campaign: c['@id'] }
});
results.push({ name: c.name, steps: growths.items.length });
}
return results;
}
Some filters require a resource ID path, NOT a text value. In search results these show as:
"teams": "id -- GET /v1/agent to list, use IRI /teams/{id}"
Steps:
GET /v1/agent) to get the resources/teams/42NEVER pass a text name to a filter marked as "id". Always resolve the ID first.
page param to get more.{ pagination: { total, page, itemsPerPage }, data: [...] }total = items across ALL pages, not just current page.total, incrementing page.When search returns selected_fields (e.g. ["name", "status"]):
properties: selected_fields in query: { query: { properties: ["name", "status"] } }selected_fields as second argument to executeWhen empty or absent: flatten to top-level primitives only.
| Code | Meaning | Action |
|---|---|---|
| 401 | Bad or missing API key | Check key in client config |
| 404 | Wrong endpoint path | Search first to find the right path |
| 429 | Rate limit exceeded | Wait and retry |
| 500 | Server error | Retry once |