Skip to main content
Wire Cursor to the hosted ish MCP server so the agent can call ish tools (study_run, ask_run, person_generate, and the rest) from inside your editor. The server lives at https://mcp.ishlabs.io/mcp, speaks streamable HTTP, and signs you in over OAuth on first connect, so no token ever lands in a config file. For the full add mechanism and the OAuth handshake, see connect an agent.

Connect

Pick one path. Both write the same ~/.cursor/mcp.json server block and end with the same OAuth sign-in.
Install the CLI and let it write Cursor’s config block:
npm i -g @ishlabs/cli
ish mcp add --client cursor --yes
ish mcp add writes only the server URL, never a token. Run it with no flags first for a dry-run plan, then re-run with --yes to commit. See the ish mcp reference for every flag.
Use https://mcp.ishlabs.io/mcp with no trailing slash. The /mcp/ form triggers a redirect (HTTP 307) that some clients will not follow on a POST, leaving the agent with an empty tool list.

Sign in and confirm

Reconnect or restart Cursor so it runs the OAuth flow, approve the sign-in in your browser, then ask the agent a read-only question:
Use the ish tools to confirm who I am and list my workspaces.
The agent calls workspace_get and reports your workspaces back. A brand-new account shows an empty list, which is still a successful connection.
The agent returns a workspace list (or an explicit empty list) instead of “no ish tools available”. That means the OAuth sign-in landed and the tools are live.

Run a study without hitting the tool-call cap

Cursor caps a single MCP tool call at roughly 30 seconds. Interactive and media simulations take one to five minutes, so a blocking study_run will hit that ceiling and return nothing. Prefer the non-blocking pattern: dispatch the run, then poll for the reactions.
1

Dispatch with wait=false

Call study_run with wait=false (the default). It dispatches the simulation and returns immediately with a next_action poll hint, well inside the 30-second window.
Run study s-b2c for a sample of five people. Do not wait for it to finish; just
dispatch it and give me the poll hint.
2

Poll for completion

Follow the next_action hint: call study_get with view="summary" every so often until every participant reaches a terminal state. Each poll is a fast read that stays under the cap.
3

Read the reactions

When the run is complete, study_get with view="summary" returns the journey: what people noticed, where they got stuck, and the reasoning behind each reaction. You get a narrative, not a single score.
The 30-second cap overrides timeout. Setting wait=true, timeout=300 still aborts at Cursor’s ceiling with no result. Reserve wait=true for fast jobs or clients with no short transport cap.
Full parameters and the blocking contract live in the study_run reference. For when to reach for study_run versus a quick ask_run, see run vs ask.

Troubleshooting

The OAuth step did not complete. Reconnect the server in Cursor, approve the sign-in in your browser, then ask again. Confirm the URL has no trailing slash.
You hit the 30-second tool-call cap. Re-run with wait=false and poll with study_get(view="summary"), as above. A wait that runs out of budget comes back with error_kind="wait_timeout" and the participant_ids set, so you can resume by polling those participants.
A drifted ish block is already in ~/.cursor/mcp.json, or the file is not valid JSON. Inspect it by hand, or re-run with ish mcp add --client cursor --force --yes to overwrite the ish block. Unrelated servers are preserved.

Next steps

Every MCP tool

All 42 hosted tools, grouped by domain.

Run a study

Create, iterate, run, and read studies across every modality.

Connect an agent

The add mechanism and OAuth, in full.

Other clients

Wire Claude Code, VS Code, ChatGPT, and more.