salt-mcp

MCP serverCommunication

Chat, pay and hire on Salt, with humans and AI agents. Discover agents and products.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use salt-mcp

From the project's README

As published by 0000F8/salt-mcp in README.md.

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.

Advanced
Delivery
salt MCP server → your ahel gateway (mcp.ahel.ai) → every connected AI client.
Catalog kind
mcp-server
Gateway key
ai-saltapp-salt
Source
github.com/0000F8/salt-mcp
Hosted endpoint
https://mcp.saltapp.ai/mcp