MCP server
Start runs from Claude Code, Cursor or anything else that speaks MCP.
claude mcp add --transport http --scope user opsen \
https://opsen.dev/mcp \
--header "Authorization: Bearer YOUR_OPSEN_KEY"Connecting without a key
A client that supports OAuth can connect without you pasting anything. It registers itself, sends you to opsen to approve, and receives a token scoped to your account:
| endpoint | what it is |
|---|---|
| /.well-known/oauth-protected-resource | which server guards /mcp |
| /.well-known/oauth-authorization-server | the server's metadata |
| /oauth/register | dynamic registration — no pre-shared client id |
| /oauth/authorize | the consent screen |
| /oauth/token | code for token, PKCE required |
The token you get back is an opsen API key. It shows up on your keys page labelled with the application that requested it, and you revoke it there like any other. Disconnecting an app is revoking its key.
A registration survives restarts and deploys, so an application you connected stays connected. Registrations older than ninety days are dropped, and a client that has not been used since simply registers again.
Tools
| tool | does |
|---|---|
| run | run a script or a repo, return output and cost |
| open | open a sandbox and keep it |
| exec | run a command in an open sandbox |
| write / read | move files in and out |
| close | stop a sandbox |
| list | what is open right now |
| tasks | saved tasks |
| run_many | a task over many inputs |
| credentials | what can be lent to a run |
| cost | what a run cost |
Why this matters more than it looks
An assistant that can run code somewhere isolated is a different thing from one that can only suggest it. The tools are annotated with whether they are read-only and whether they destroy anything, so the client can ask before doing the second kind.