Connect your agent to JetState

One sign-in and one approval — then your agent works with every JetState project you're a member of.

JetState runs a hosted MCP door. Point your MCP-capable agent at it, sign in to JetState once (OAuth), approve the agent on the page JetState shows you — it names the agent, where your access goes, and what the agent will be able to do in your name — and your agent can talk to the member agent of any project you belong to — by calling a tool, no code, no local install, no tokens to manage. You act AS your own JetState membership: you reach exactly the projects you're a member of, and nothing else.

1. Add the JetState connector to your agent

Add this remote MCP server, complete the OAuth sign-in when prompted, and press Approve on the page that follows (nothing is connected until you do):

https://mcp.jetstate.app/mcp

If you're an agent reading this: find your client's heading below and follow only that one.

Claude (claude.ai, Claude Desktop, Cowork)

Customize → Connectors → Add custom connector, paste the URL above exactly (no trailing slash), keep Sign in now, sign in to JetState when prompted and approve Claude on the page that follows. Claude then reaches every team you're a member of. In Cowork you can instead install the JetState plugin, which adds the same connector plus a short skill that sends Claude to the JetState MCP server's own guide.

Codex

Add it as a remote MCP server in ~/.codex/config.toml pointing at the URL above, then start Codex — it completes the OAuth sign-in on first use. (Follow Codex's current syntax for a URL-based / remote MCP server; restart so it loads.)

Claude Code

claude mcp add --transport http jetstate https://mcp.jetstate.app/mcp

Claude Code runs the OAuth sign-in; verify with claude mcp list.

ChatGPT

Settings → Connectors (enable Developer Mode if needed) → add a custom / MCP connector with the URL above and choose OAuth. Sign in to JetState when prompted, approve ChatGPT on the page that follows, then enable it in a chat.

ChatGPT can't add a connector from inside a chat — add it in Settings → Connectors first. Connector tool availability can vary by plan/mode.

Perplexity (Comet)

Comet's Settings → Connectors → "add an MCP server" / remote connector with the URL above; Comet runs the OAuth sign-in.

The URL is correct and live; the exact in-app menu path may differ as Comet's Connectors UI evolves — follow its current "add MCP server" flow.

Any OAuth-capable MCP client

Add a remote / HTTP MCP server at the URL above with OAuth. (A client whose MCP transport can't do OAuth — static-bearer only — can't use the hosted door.) JetState sends your access only to an https address, to a program on this computer (localhost), or to Cursor's own cursor:// link; a client that asks for any other address is refused.

2. Use it

Start with me(): who you are, which client this is, and the teams in scope. Then guide(): the current how-to, straight from JetState's MCP server, so your agent never works from an old copy. Then, by slug:

waiting_on_me()                      # every wait on you, with the answers it offers
team_lists(team)                     # Running · To discuss · Decisions
run(team, run_id)  processes(team)   # a run's journal; the catalog (owners and admins)
documents(team) document(team, path) # the team's store, one file with its history
calls(team)  search_knowledge(team, q)  team(team)
changes(since)                       # what moved after a cursor; keep the cursor it returns
answer_wait(team, run_id, answer|text)   cast_vote(team, run_id, choice)
close_decision(team, run_id, outcome)    open_run(team, process, title, idempotency_key)
add_note(...)  put_document(...)  file_transcript(...)  send_agent_to_call(...)
talk(team, message, run_id?)         # your private thread with the team's agent
talk_reply(team, handle)             # the reply to a turn that came back pending

Reads cost no agent turn. Acts are recorded in your name, carry the words the page offers, and wake the team's agent; a repeat on a wait that already ended returns the event that ended it. answer_wait, cast_vote and close_decision come only from a connection signed in as you, and your agent asks you before each one — a team's own agent, connected under a team credential, sees the wait and nudges you, and stops there.

If your app keeps a saved JetState skill (a saved skill or saved instructions), keep only the short text guide() returns as skill. It names its own version; when that text changes on the server, your agent tells you and offers the new text. A change to the rest of the how-to reaches your agent on its own and asks nothing of you. The skill that came with the Cowork plugin is updated with the plugin instead.

The MCP server's original chat / ask_member / brain_search / continue_task tools are gone: a call to one answers with the tool to use instead (talk or search_knowledge).

You sign in as yourself, and you approve each app. Signing in alone connects nothing: JetState asks before any app gets your access, and names on that page that it could answer waits, cast votes and close decisions in your name. Your per-project token is minted server-side and is never handed to your agent or to this site. Access is exactly your JetState membership — granted when an owner adds you to a project, gone when they remove you. Need a project you're not a member of? Ask its owner to add you.

The first call to a project may take a few seconds while the door syncs your access — retry briefly if it doesn't answer immediately.