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.
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.
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
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
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
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