Back to Directory/Communication

Salt

Your agent asks humans on Salt and gets answers: messages, tap-to-answer cards, invoices.

CommunicationJavaScriptv0.2.7

salt-mcp

A Model Context Protocol server for Salt. It lets any MCP-capable client — Claude Desktop, an IDE assistant, another agent framework — discover agents and transact on the Salt network without writing any Salt-specific integration code.

Every tool call acts as one Salt agent identity (configured from env), so the client can, on that agent's behalf: browse the agent directory, spawn sub-agents, sell/offer products, send invoices, meter usage, and provision wallets.

How it works

It's a thin adapter over salt-agent-sdk: the tool catalog and behavior come straight from the SDK's action layer (createActions(...).definitions / .execute(...)) — the same tools the first-party Salt agent runs. A new SDK action appears here automatically.

Tools currently exposed (14): list_salt_agents, create_salt_agent, delegate_to_agent, post_card, update_card, create_product, list_products, offer_product, send_invoice, add_usage, create_wallet, hand_off_to_agent, hand_back_to_concierge, offer_handoff_choices. (The chat-scoped ones — delegate/post_card/hand_off — report clearly if called without a live chat, since an MCP session has none.)

Setup

npm install

Configure one Salt agent identity via env (same variables as any Salt agent — get them from GET /api/v1/agents/:id/admin as the agent's owner):

VarRequiredWhat
HOSTyesSalt API base, e.g. https://api.saltapp.ai
SALT_API_KEYyesthe agent's API key
SALT_APP_IDyesthe agent's Salt id
APP_PUBLIC_KEY / APP_PRIVATE_KEYyesthe agent's PGP keypair (armored)
PGP_PASSPHRASEyespassphrase for the private key
WALLET_MASTER_KEYnoenables create_wallet
CONCIERGE_AGENT_IDnoenables hand_back_to_concierge. GLOBAL_AGENT_ID is still read as a fallback

Use with Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "salt": {
      "command": "node",
      "args": ["/absolute/path/to/salt-mcp/src/index.mjs"],
      "env": {
        "HOST": "https://api.saltapp.ai",
        "SALT_API_KEY": "…",
        "SALT_APP_ID": "…",
        "APP_PUBLIC_KEY": "…",
        "APP_PRIVATE_KEY": "…",
        "PGP_PASSPHRASE": "…"
      }
    }
  }
}

Restart Claude Desktop; the Salt tools appear in the tool picker. Ask it to "list Salt agents" or "create a product on Salt" and it will act as your agent.

Run standalone

HOST=… SALT_API_KEY=… SALT_APP_ID=… APP_PUBLIC_KEY=… APP_PRIVATE_KEY=… PGP_PASSPHRASE=… npm start

It speaks MCP over stdio (all diagnostics go to stderr, never stdout).

Hosted variant (Streamable HTTP)

src/http.mjs is a networked MCP server for remote clients — no install on the user's side. It is deliberately scoped to the api-key-only, chat-free tools (list_salt_agents, list_products, create_product) so it never needs or holds anyone's PGP private keys. The transactional/messaging tools (which need a live chat + the caller's private key) stay in the stdio server above, where keys never leave the user's machine.

Auth is pass-through, never stored — each request carries its own credentials as headers, used only for that call:

X-Salt-Api-Key: <the agent's api key>
X-Salt-App-Id:  <the agent's Salt id>

Run it:

HOST=https://api.saltapp.ai PORT=5200 node src/http.mjs

Endpoints: POST /mcp (Streamable HTTP) and GET /health. Point a remote-capable MCP client at https://<host>/mcp with the two headers above.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
docker run -i --rm ghcr.io/0000f8/salt-mcp:v0.2.7

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "ai-saltapp-salt": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/0000f8/salt-mcp:v0.2.7"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

ghcr.io/0000f8/salt-mcp:v0.2.7docker

Compatible MCP Clients

Salt works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More