getcargohq/cargo-skills

cargo-mcp

Drive Cargo from its hosted MCP server at https://mcp.getcargo.io/mcp — connect a client, discover and price an action, run it over one record or a batch, poll it, and read workspace models, with no CLI install.

Zobacz źródło
Oryginalny dokument Skill

Treść z repozytorium z zachowaniem nagłówków, przykładów, kodu, tabel, linków i obrazów.

Cargo — the hosted MCP server

Cargo has two surfaces. The rest of this bundle documents the CLI. This one documents https://mcp.getcargo.io/mcp, and, more usefully, when to reach for which.

Three different things here are called MCP. This skill is the hosted server Cargo runs, which you point a client at. Publishing a curated server out of your own workspace (ai mcp-server create, then cargo-ai mcp over stdio) and attaching somebody else's server to a Cargo agent (release update-draft --mcp-clients) are both `cargo-ai`. Check which one the user means before answering: the words are identical and the answers share nothing.

Which surface

The jobSurface
Run one action, or one action over many recordseither; MCP if it is already connected
Find what Cargo can do, and what it costseither (search_actions is the MCP half)
Read records off a modeleither
Warehouse SQL, aggregates, joinsCLI (`cargo-storage`)
Build or edit a multi-step workflow, tool, or playCLI (`cargo-orchestration`)
Workspace as code, plan and deployCLI (`cargo-cdk`)
Provision mailboxes, warm up, sendCLI (`cargo-mailbox-management`)
Segments, connectors, content libraries, alerts, hosting, billing adminCLI
No shell at all (ChatGPT, Claude Desktop, claude.ai, n8n)MCP, and say plainly what is out of reach

The rule underneath the table: MCP is the runtime, the CLI is the platform. Thirteen tools cover discovering an action, running it, watching it finish, and reading data back. Everything that builds something reusable is CLI only. An agent holding both should prefer the CLI for anything the user will want to re-run or version, and MCP for one-shot execution inside a conversation.

When the job routes to the CLI, this is the whole bootstrap:

bash
npm install -g @cargo-ai/cli
cargo-ai login --email you@company.com   # emailed code, no browser; creates the account on first use
cargo-ai whoami                          # confirm the workspace before anything that spends

Connect

The endpoint is https://mcp.getcargo.io/mcp, Streamable HTTP. An unauthenticated request returns 401 with a WWW-Authenticate challenge carrying resource_metadata, so an OAuth-capable client discovers the authorization server, registers, and prompts the user with no configuration beyond the URL. A 401 on first connect is the handshake, not a fault.

bash
claude mcp add --transport http cargo https://mcp.getcargo.io/mcp

Any client taking a JSON block (Claude Desktop, Cursor, a project .mcp.json):

json
{
  "mcpServers": {
    "cargo": {
      "type": "http",
      "url": "https://mcp.getcargo.io/mcp"
    }
  }
}

For CI, a headless agent, or a client with no OAuth, pass a workspace-scoped API token from Settings > API instead. Read it from the environment; never inline the value:

json
{
  "mcpServers": {
    "cargo": {
      "type": "http",
      "url": "https://mcp.getcargo.io/mcp",
      "headers": { "Authorization": "Bearer ${CARGO_API_TOKEN}" }
    }
  }
}

The tool list is not fixed. The endpoint serves the platform tools below plus whatever that workspace published with defineMcpServer, so two tokens can see two different lists. Read the list you actually got rather than the one documented here.

The spine

whoami                 → which workspace am I in, how many credits
search_actions         → find the action, and read its cost
get_action_schema      → what inputs it takes
autocomplete_action    → resolve a field needing a picked id (HubSpot object type, Slack channel)
execute_action         │ one record
execute_action_batch   │ many records
get_run / get_batch    → poll while outcome is "executing"

For data: list_modelsdescribe_modelquery_models. Alongside, list_runs lists recent ad-hoc runs, and get_usage breaks the last 7 days of credit spend down by integration.

Open every session with `whoami`. The token binds the session to exactly one workspace and there is no flag to override it. A session pointed at the wrong workspace returns plausible, confidently wrong reads: the models are real and the records are real, they just belong to somebody else. Name the workspace back to the user before acting on anything.

`search_actions` prices the work before you do it. Each result carries credits[].cost beside the action object you pass verbatim to everything downstream:

json
{
  "name": "Enrich person & find email",
  "credits": [{ "cost": 0.1, "type": "fixed" }],
  "action": {
    "kind": "connector",
    "integrationSlug": "aiArk",
    "actionSlug": "enrichPerson",
    "connectorUuid": "7bb944ec-0254-44bc-b0e4-8a56378e80cf"
  }
}

Pass that `action` object exactly as it comes, with no `config` key. Inputs belong in data (single) or records (batch) — never in a config, which is a node's configuration and has no meaning on a top-level action. Inputs misplaced there are silently dropped and the action runs with none, so an unexplained empty result is worth checking against this first.

get_action_schema takes the same pair: the action, plus an optional data for the actions whose output depends on their inputs — a HubSpot object type or a target sheet decides which fields come back. The CLI's orchestration action get-output-schema behaves identically.

Four kind values come back: connector (a third-party integration), native (a built-in platform operation), tool (a saved workflow in this workspace), and agent (an AI agent in this workspace). Narrow a noisy catalog with the kind and integrationSlug filters.

Three ways this goes wrong

Fanning out `execute_action`. One call per record is slower, bills more, and leaves nothing to inspect afterwards. execute_action_batch takes the same action plus a records array, produces one batch object, and a finished batch carries a download for its output CSV. The tool description says never to loop it: take that literally.

Spending before quoting. Run 10–20 records first, report the observed cost and hit rate, then quote the full record count and credit estimate and let the user approve. Hit rates on people data run 40 to 70 percent, so cost per usable row is not the sticker price and is not knowable without the sample. Full discipline: `../cargo-gtm/references/cost-discipline.md`.

`query_models` mistaken for SQL. It lists records off one model with a limit and an offset. It does not aggregate, join, or filter by expression. Any question shaped like "how many", "grouped by", or "joined to" is a CLI question (`cargo-storage`). Say so, rather than pulling rows and counting them yourself, which silently truncates at the limit.

Anything that touches a person

The consent rules do not relax because the surface changed. A lawful basis, a suppression check, and relevance to that person's job gate every step that sources, enriches, or contacts someone. Bulk unsolicited messaging, purchased or scraped lists, and consumer targeting are refused. The full text is `../cargo-gtm/references/acceptable-use.md`; where no sibling skill is installed, the paragraph above binds on its own.

Reporting back

Narrate and summarize; never paste raw JSON at a user. After a batch, give the record count, the hit rate, the credits actually spent, and the download, in that order.

z tego samego repozytorium

Więcej Skills

Wszystkie Skills
getcargohq
Społeczność

cargo

Router for the Cargo CLI skill bundle — load first for anything Cargo, and whenever a task spans two Cargo domains. Explains what each skill owns, declarative workspace-as-code (cargo-cdk) vs the imperative CLI, the UUID and slug flow between skills, async polling of runs and batches, end-to-end use cases, and the gotchas that fail silently (conjonction spelling, run vs batch, model-uuid vs segment-uuid). Triggers: \"set up Cargo\", \"what can Cargo do\", \"which Cargo skill\", \"bootstrap my workspace\", \"I have a Cargo account\", \"cargo-ai …\", or any cargo-ai command whose domain you are unsure of. Skip when: the task obviously belongs to one skill — load that skill directly.

instalacje
3
GitHub Stars
17
Aktualizacja
5 wrz
getcargohq
Społeczność

cargo-ai

Build and configure AI agents inside Cargo — create an agent, choose its model and temperature, write its prompt, attach knowledge for retrieval (RAG), connect MCP tool servers, manage memories, and deploy releases. Triggers: \"create an agent\", \"make an agent that\", \"give the agent our docs\", \"attach this knowledge base\", \"attach this library to the agent\", \"add resources to the agent release\", \"connect an MCP server\", \"expose our tools as an MCP server\", \"use Cargo from Claude Desktop or ChatGPT\", \"change the agent model\", \"what does the agent remember\", \"deploy the agent\", \"the agent is answering wrong\". Skip when: uploading the knowledge files themselves — use cargo-content; sending the agent a message or running it over records — use cargo-orchestration.

instalacje
3
GitHub Stars
17
Aktualizacja
5 wrz
getcargohq
Społeczność

cargo-analytics

Get data out of Cargo and measure what ran — download a run output, export a segment or model to CSV or JSON, and pull run and batch success and error counts. Triggers: \"download the results\", \"export this to CSV\", \"give me the file\", \"how many succeeded\", \"what is my error rate\", \"send me the enriched list\", \"get the output of that run\", \"how many records did it write\". Skip when: asking why something failed or where credits went — use cargo-diagnostics; asking about credits, plans, or invoices — use cargo-billing.

instalacje
3
GitHub Stars
17
Aktualizacja
5 wrz
getcargohq
Społeczność

cargo-billing

Understand what Cargo is costing — remaining credits, usage broken down by workflow, connector, or agent, subscription state, and invoice history. Triggers: \"how many credits do I have left\", \"what did that cost\", \"why is my bill so high\", \"am I about to run out\", \"will this fit in our budget\", \"show me my invoices\", \"how much have I spent this month\", \"what plan am I on\", \"what do I get for free\", \"how many free credits\", \"can I afford this run\", \"add a card\", \"update my payment method\", \"why was my card declined\". Needs a token with admin access. Skip when: attributing spend to specific nodes or cutting a play cost — use cargo-diagnostics.

instalacje
3
GitHub Stars
17
Aktualizacja
5 wrz