Your agents, outside the app. One MCP server, same rules.

Valv runs a local MCP server that hands your workspace's databases to the agents you use in a terminal or editor. Claude Code in a shell gets the same tools, and the same column-hiding policies, as the app.

Connect agents Running
http://127.0.0.1:4319/mcp Loopback only

Claude Code

claude mcp add valv --transport http http://127.0.0.1:4319/mcp

Codex

codex mcp add valv --url http://127.0.0.1:4319/mcp

Cursor, VS Code, and other clients via JSON config.

Works where you work. Terminal, editor, any MCP client.

One command connects Claude Code or Codex. Cursor, VS Code, and everything else that speaks MCP take a short JSON config. Whatever workspace is active in the app is what your agent sees.

Claude Code claude mcp add
Codex codex mcp add
Cursor JSON config
VS Code JSON config

Policies follow the data. Not the client.

Every MCP call goes through the same access layer as the app's own agent. A hidden column stays invisible whether the question comes from Valv's chat or from Claude Code in a terminal.

claude · describe customers
id, name, plan, seats
email, phone not in the response

Loopback only. Nothing listens on your network.

The server binds to 127.0.0.1 and rejects DNS-rebinding tricks. The app's own runs authenticate with per-turn tokens, so an external client can't impersonate them.

127.0.0.1:4319 Local connections only
evil.example rebind attempt Rejected
App runs Per-turn tokens

Connect your agent.