Connect Claude, ChatGPT, Cursor or Codex
Add the Assent MCP server to Claude Code, Claude Desktop, ChatGPT, Cursor or Codex, on macOS, Windows or Linux, and check it works.
Each assistant connects to the Assent MCP server as its own agent, so its asks carry its name and your rules can treat it on its own. The server is at:
https://ordia-api.specvista.com/api/v1/mcpIt speaks Streamable HTTP and keeps no session. Claude (on the web, the desktop app and mobile), ChatGPT, Cursor and Claude Code can sign in with OAuth, so you never paste a key. Every other assistant authenticates with an agent key sent as Authorization: Bearer <key>.
Before you start
- In Assent, open Agents, choose Add agent, and name it after the assistant, for example
Claude CodeorCursor. - Copy the agent key. It starts with
oak_and Assent shows it once. Rotate it from the agent's settings if it leaks. - Keep the key out of files you commit. The examples below read it from the
ASSENT_AGENT_KEYenvironment variable or from a private config file.
Set the variable in the shell you start the assistant from:
export ASSENT_AGENT_KEY=oak_...In PowerShell, $env:ASSENT_AGENT_KEY = "oak_..." sets it for that window, and setx ASSENT_AGENT_KEY oak_... keeps it for new windows.
Claude Code
claude mcp add --transport http assent https://ordia-api.specvista.com/api/v1/mcp --header "Authorization: Bearer $ASSENT_AGENT_KEY"In PowerShell, write $env:ASSENT_AGENT_KEY in place of $ASSENT_AGENT_KEY. The shell fills in the key, so Claude Code stores it in its own MCP settings; keep those private. Run claude mcp list and check that assent is connected. To have risky tool calls wait for your answer too, add the Claude Code hook.
To sign in with OAuth instead of a key, run claude mcp add --transport http assent https://ordia-api.specvista.com/api/v1/mcp, then run /mcp in Claude Code, pick assent and choose Authenticate. Assent opens in your browser; the page warns that it returns to a program on this computer, so choose Allow only if you just started this yourself.
Claude Desktop
Claude Desktop starts local MCP servers from its config file: ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows. Add:
{
"mcpServers": {
"assent": {
"command": "npx",
"args": ["-y", "assent-cli@latest", "mcp"],
"env": { "ASSENT_AGENT_KEY": "oak_..." }
}
}
}Restart Claude Desktop. assent mcp reads MCP messages on stdin and forwards each one to the server above with the key. To skip the key, add Assent as a custom connector instead: in Claude, open Settings, then Connectors, choose Add custom connector, paste https://ordia-api.specvista.com/api/v1/mcp, leave the advanced OAuth settings empty, choose Connect and then Allow. This works in Claude on the web, the desktop app and mobile.
ChatGPT
ChatGPT adds Assent as a custom connector and signs in with OAuth, so you never paste a key. Everything it does shows up under one agent named ChatGPT (or ChatGPT connector if you already have an agent called ChatGPT).
- In a workspace, an admin first allows developer mode or custom connectors under Workspace settings, Permissions & roles. OpenAI renames these menus between rollouts, so look for the closest match.
- In ChatGPT, open Settings, Apps (or Connectors), Advanced settings, and turn on Developer mode.
- Choose Create app (or Create) and fill in:
- Name:
Assent - MCP server URL:
https://ordia-api.specvista.com/api/v1/mcp - Authentication: OAuth, leaving the client ID and secret empty. ChatGPT registers itself.
- Name:
- Tick that you trust the app and choose Create.
- ChatGPT opens Assent. Sign in if asked. The page reads Allow ChatGPT? and names the agent it will act as. Choose Allow within 10 minutes, in the same browser ChatGPT opened. You return to ChatGPT and it lists the Assent tools.
Never choose Allow on a link someone sent you: if you did not just start connecting, choose Deny. To disconnect, open the ChatGPT agent in Assent and rotate its key, which ends ChatGPT's sign-in so it has to connect again, or pause the agent to stop it for a while.
A scheduled task that cannot wait for you should call assent_answers at the start of each run, act on what it finds and mark each answer with assent_picked_up, then ask with assent_ask and leave the answer for the next run.
Cursor
Add the server to ~/.cursor/mcp.json, or .cursor/mcp.json in one project (on Windows, %USERPROFILE%\.cursor\mcp.json):
{
"mcpServers": {
"assent": {
"url": "https://ordia-api.specvista.com/api/v1/mcp",
"headers": { "Authorization": "Bearer ${env:ASSENT_AGENT_KEY}" }
}
}
}Start Cursor from a shell where ASSENT_AGENT_KEY is set, or put the key in place of ${env:ASSENT_AGENT_KEY} in a file you never commit. Open Cursor Settings, MCP and check that assent shows its tools.
Codex
Codex starts MCP servers as local commands. Save the agent key in a private config file first:
mkdir -p ~/.assent
echo '{ "agentKey": "oak_..." }' > ~/.assent/codex.json
chmod 600 ~/.assent/codex.jsonOn Windows, in PowerShell:
New-Item -ItemType Directory -Force "$HOME\.assent" | Out-Null
Set-Content -Encoding ascii -Path "$HOME\.assent\codex.json" -Value '{ "agentKey": "oak_..." }'Use -Encoding ascii. In Windows PowerShell 5, -Encoding utf8 adds a byte order mark and > writes UTF-16, and the command line rejects both. Then add to ~/.codex/config.toml (%USERPROFILE%\.codex\config.toml on Windows):
[mcp_servers.assent]
command = "npx"
args = ["-y", "assent-cli@latest", "mcp"]
env = { ASSENT_CONFIG = "/Users/you/.assent/codex.json" }On Windows, use the full path with doubled backslashes, such as "C:\\Users\\you\\.assent\\codex.json", and if Codex cannot start the server, set command = "npx.cmd". Start a new Codex session and ask it to list its Assent tools.
Check it works
Ask the assistant to call assent_ask with a small approval, for example a title of Try Assent? and a why of Checking the connection, then assent_wait_for_answer. The ask appears in your inbox; approve it and the assistant sees answer.actionId done. Then ask it to call assent_picked_up with the ask's uuid, so the answer is never delivered again.
Common problems
| What you see | What to do |
|---|---|
401 or "Agent key required" | The key is missing or not sent as a bearer token. Check the variable is set in the shell that started the assistant. |
401 after it worked before | The key was rotated or the agent removed. Copy the new key from the agent's settings. |
assent mcp exits with code 5 | It found no agent key, or the config file is not plain JSON. Set ASSENT_AGENT_KEY, or point ASSENT_CONFIG at a file holding { "agentKey": "oak_..." } saved without a byte order mark. |
invalid_redirect_uri when connecting ChatGPT | ChatGPT's return address changed. Email hello@specvista.com. |
| The consent page says the request expired | Start connecting again from ChatGPT, and finish in the same browser within 10 minutes. |
Too many waits at once for this agent or account (status 429) | Each agent can wait on 4 asks at a time and each account on 10. Wait for one to finish, then try again. |
MCP server lists every tool and its arguments.