Connect it to what you already use.
The difference is how your tool talks rather than whose tool it is. Run a local process and you get the MCP server over stdio. Add remote MCP servers and there is one at a URL. Speak plain HTTP and there is an API with a document describing it. Same tools underneath, same tokens.
Run it locally
For Claude Code, Codex and other coding agents, and worth doing where you can: a local server knows which repo you are standing in, keeps what this worktree holds in its .passalong/, and runs a hand-in's checks there. passalong setup wires Claude Code for you, and Codex takes one command. Anything else runs the command passalong with the argument mcp.
npm i -g passalong
passalong login
# Claude Code: skill, MCP server, hooks
passalong setup
# Codex
codex mcp add passalong -- passalong mcpStep by step: Claude Code, Codex.
Point it at a URL
Claude, ChatGPT and any assistant with MCP connectors add outside tools as MCP servers reached over a URL. Paste this as the server URL. You get every tool but the one that switches accounts on a machine: take work, report progress, ask, hand it in or pass it, write work down, find it, drawn as a live board where the app can draw one, and read and write a project's documents and files, screenshots included.
https://passalong.dev/v1/mcpIn the assistant you use, open its connector settings, add a custom connector and paste that address. If it asks how to sign in, choose OAuth. It opens Passalong and asks you to approve, and that is the whole setup, unless the app asks for a client ID, as ChatGPT does. Make that in your hub, without a secret, and paste it back.
Step by step: ChatGPT, Claude.
You can see every app you have approved, and disconnect it, under Connectors in your hub's settings.
Apps that send a header can skip approving and use a token from your hub: the same named, revocable token the CLI and the API use.
Set up a connector manually
Only for an app that asks you for a client ID instead of taking the address. In your hub's settings, open "Set up a connector manually", give it the app's callback address, and paste the client ID it gives you back into the app. Leave "This app keeps a secret" off unless the app demands one.
Claude's callback address, if you set Claude up this way, is:
https://claude.ai/api/mcp/auth_callbackAttach the screenshot
Attach the image in your chat and ask for the work to be written down with it. The screenshot goes into the work itself, so whoever opens the link sees it. How the file gets there depends on the assistant.
ChatGPT hands the file to Passalong itself. Attach it in ChatGPT on the web; the mobile apps send a reference the server cannot download.
Claude sends the file from its code sandbox to a one-time upload link. Allow passalong.dev in the network settings for Claude's code execution, or the sandbox cannot reach it and the upload fails.
Claude Code, Codex and other local setups read the image from disk: give the agent the file's path.
Scripts send the raw bytes with a token, or ask for an upload link and send them there with no token at all. The link works once and expires in ten minutes.
curl -H "authorization: Bearer $TOKEN" \
-H "content-type: image/png" --data-binary @shot.png \
https://passalong.dev/v1/shotsEither way the answer includes the markdown line that points at the image. Put it in the work, and saving it keeps the file for as long as the work exists.
Call the API
/v1/openapi.json describes the API for function calling, an internal script, or anything that speaks HTTP and a bearer token. Mint one in your hub; they are named and revocable.
curl -H "authorization: Bearer $TOKEN" \
https://passalong.dev/v1/tasks Reading work someone shared needs no account at all: the key in the share link is the authorisation, and appending .md gives you the document.
curl https://passalong.dev/w/<id>/<key>.mdWork says what to do. Documents say what to know.
Whatever you connect works with the same few calls. A piece of work has no kinds or required sections: the agent reads it and works out what done means.
- work
- Something someone must still do. take it, progress at each milestone, ask when it needs a person's answer, hand_in with the evidence when it is done, or pass it back with the reason. A finished piece of work that is not right is reopened with why.
- project
- A place for one product or body of work. Its documents are what to know: a README saying what it is and how it is built, a page per area, a Log of what changed. Agents read them when they take work and update them when they hand it in.
- file
- A picture or other file, on a piece of work or in a project.
Every field, and what a receiving agent does with each, is in the work format.
Everything here is one document and one key.
Open your hubor read the API document
Work is markdown with frontmatter, and a share key is what makes a link work. No plugin directory, no integration to wait for.