AI / MCP

Agent parity, not an AI sidebar.

The rule the project is built on: anything a human can do in the interface, ChatGPT, Claude or Cursor can do over the Model Context Protocol. Same API, same permissions, same audit trail.

Setup

Two lines to connect.

Create an API token in the user menu, then point your MCP client at the endpoint. The token can be scoped to a single workspace and to read-only.

claude mcp add --transport http salt https://your-host/mcp \
  --header "Authorization: Bearer <your-token>"

Streamable HTTP at POST /mcp. Any MCP-capable client works, not just Claude.

Interactive setup

Let your assistant install it with you.

Paste this into ChatGPT, Claude, Gemini, Copilot or whatever you already have open. It reads the machine-readable docs and then walks you through it, asking about your setup before it hands you commands.

Works in any assistant that can open a URL. If yours cannot browse, paste the contents of llms.txt after the question. llms.txt

Prompt

Read https://salt.md/llms.txt in full, then walk me through self-hosting Salt.md and connecting you to it over MCP. Ask me what operating system, hosting and domain I have before giving me any commands, and give me one step at a time. Flag the licence terms and the security pitfalls as we reach them rather than at the end.

What agents can do

Read

  • Full-text search across the workspace
  • Read pages, databases and their schemas
  • Follow backlinks and the page graph
  • Read comments and version history

Write

  • Create and update pages, append or prepend Markdown
  • Create databases, views and typed properties
  • Set row properties in batches
  • Comment, resolve, restore revisions

Move data

  • Bulk-import from any JSON API
  • Map fields to database properties
  • Import runs server-side, in the background
  • Content never passes through the agent context
The part that matters

Importing a Trello board should not cost 200,000 tokens.

Most integrations make the agent fetch every record and paste it back. Salt.md gives the agent a URL and a field mapping instead. The server fetches, maps and writes; the agent gets a job id and a count. A board with 400 cards costs the same context as one with four.

Typical integration

  • agent → GET /board
  • 400 cards → agent context
  • agent → create row × 400

Salt.md

  • agent → import_url(url, mapping)
  • server → fetch, map, write
  • agent ← job id + count
Guardrails

Tokens are scoped, actions are logged.

Workspace-scoped tokens

A token can be limited to one workspace, so an agent cannot wander into the rest.

Read-only tokens

Hand out a token that can look but not touch.

Attributed activity

The activity log records whether a change came from a person or an agent, and which token it used.

Private network protection

Bulk imports refuse to fetch from private address ranges by default, so an agent cannot use the server to reach your LAN.

One command. Then it is yours.

Install it, open the browser, create your admin account. If you do not like it, delete one directory and it is gone.

$ curl -fsSL https://raw.githubusercontent.com/salt-md/salt.md/main/install.sh | sh