MCP
An MCP server lets an MCP client, such as Claude Code, use a team's collections through Porticol: search the workspace, read requests and examples, list environments, send and run requests, with secrets resolved inside Porticol and masked before they leave. Two transports serve the one tool table: standard input and output on the machine, and streamable HTTP on a server. There are no server-sent events and no server-initiated messages.
Tools
| Tool | Scope | What it does |
|---|---|---|
search |
Read | Search collections, requests and history for a query |
read |
Read | Read a collection with its requests and examples, or one request of it |
environments |
Read | List the environments, or read one by id |
send |
Read | Send a request and return what came back |
run |
Read | Run a collection and wait for it, returning the finished run |
history |
Read | List recent sends, or read one by id |
import_openapi |
Read | Preview an OpenAPI document as a collection, without importing it |
create_request |
Write | Add a request or folder to a collection |
update_request |
Write | Replace what a request or folder holds |
import_openapi only previews; bringing the collection into the workspace stays
a person's decision. run starts the run, waits for it, and returns it finished;
when the wait runs out it returns the run still going instead.
Scopes and guardrails
Read-only by default. The two write tools stay off until the caller holds the write scope, and a call outside the scope is refused.
Secrets resolved inside Porticol never leave it in the clear: every tool result that can carry a secret is masked with the same redaction history relies on, over every secret value the workspace holds.
An environment marked protected refuses an agent's send until a person allows
it. The refused call answers needs_confirmation with the key to allow: a
person allows it the way they allow any send, and the agent calls send again.
An agent's send is recorded with the client's name.
Standard input and output
porticol-cli mcp serves the workspace on the machine:
porticol-cli mcp [--data-dir <path>] [--write]
It speaks MCP JSON-RPC over standard input and output: initialize,
notifications/initialized, tools/list, tools/call and ping. Without
--write the write tools are refused. The workspace served is --data-dir,
PORTICOL_DATA_DIR, or the desktop's data folder. Secret values live in the
machine's keychain under the desktop; a workspace served here resolves the
secrets created through it.
Streamable HTTP
POST /api/v1/mcp serves the same tools on a server, with the API token's
scope: a read-only token lists the read tools only, and collection:write
adds the two write tools. It answers initialize, tools/list and tools/call
as plain JSON responses. Every tools/call writes one audit entry named
mcp.<tool> with the token's id. A command that only runs beside the user, such
as sending, is refused over HTTP the way /api/v1/call refuses it; agents send
through the standard input transport beside the workspace.