Skip to main content
Add the hosted ish MCP server to ChatGPT as a connector so it can call ish tools (study_run, ask_run, person_generate, and the rest) from a chat. The server lives at https://mcp.ishlabs.io/mcp, speaks streamable HTTP, and signs you in over OAuth on first connect, so no token lands in any config. ChatGPT’s MCP client (it connects as openai-mcp) reads ish’s tools but not its MCP resources. That changes two things: how you point it at the URL, and how you read findings back. Both are covered below.
You need an ish account. If you do not have one, get ish free first. The OAuth step signs ChatGPT in as you.

Connect

Add a custom connector in ChatGPT pointed at the ish endpoint.
1

Open the connector settings

In ChatGPT, open settings and find connectors. Choose to add a custom MCP connector.
2

Point it at the ish endpoint

Use this URL, with no trailing slash:
https://mcp.ishlabs.io/mcp
3

Sign in over OAuth

ChatGPT opens your browser to sign in. Approve access as your ish account. ChatGPT stores the token it receives; you never handle it.
The add mechanism and the OAuth handshake are the same for every client. The connecting guide owns the full version.
Use https://mcp.ishlabs.io/mcp with no trailing slash. The /mcp/ form triggers a redirect (HTTP 307) that ChatGPT’s client does not follow on a POST, so it never finishes tools/list and the model sees an empty tool catalog.

Confirm the connection

Ask ChatGPT a read-only question. A read confirms the connection without drawing any credits.
Use the ish tools to confirm who I am and list my workspaces.
ChatGPT calls workspace_get and reports your workspaces back. A brand-new account shows an empty list, which is still a successful connection.
ChatGPT returns a workspace list (or an explicit empty list) instead of “no ish tools available”. OAuth landed and the tools are live.
If ChatGPT reports no ish tools, the sign-in did not complete, or the URL carried a trailing slash. Reconnect with the no-slash URL and approve the sign-in, then ask again.

Read findings through tools, not resources

ish surfaces some data only as MCP resources: screenshots, transcripts, media, identity, and ish://docs. ChatGPT does not read resources, so those ish:// links never open for it. You do not need them. Everything is reachable through tools, which ChatGPT does read.
You wantOn a resource-reading clientOn ChatGPT
The findings (what people noticed, friction, blockers, sentiment, completion)study_get(view="summary") (inline either way)study_get(view="summary")
The step-by-step navigation and decision traceish://study/.../screenshots plus the summarystudy_get(view="per_participant").interactions[] (read .url, .location, .actions, .screenshot_id)
Ask resultsask_get(view="summary") (inline either way)ask_get(view="summary")
Reference docsish://docs/<slug>docs_get(slug)
ish detects ChatGPT from its handshake and folds this same guidance into its tool results, so the model is reminded which call to make. You can still steer it: if it reaches for an ish:// link, tell it to read study_get(view="summary") instead.

Read your first reaction

Run a study that already lives in your workspace and read back what a simulated person made of it. Tell ChatGPT:
Find a study in my workspace, run it for a few people, and tell me what they noticed.
1

Discover a study

ChatGPT calls study_get with your workspace_id to list studies and pick one.
2

Run it

It calls study_run with a small audience. Interactive and media simulations take one to five minutes, so prefer the non-blocking pattern: dispatch with wait=false, then poll study_get with view="summary" until every participant reaches a terminal state.
3

Read the reactions

It calls study_get with view="summary" and reports the journey: what people noticed, where they got stuck, and the reasoning behind each reaction. You get a narrative, not a single score.
For when to run a full study versus fire a quick comparison, see run vs ask.

Hand ChatGPT a file

ChatGPT cannot forward a file you uploaded in the chat to a tool call; MCP tool inputs are JSON only, with no binary transport. When you reference “the file I just uploaded” but no file arrives as an argument, ish uses an out-of-band upload link instead.
1

ish mints a link

The agent calls upload_create with a purpose (person_source to ground a person, study_media for study content, or both) and relays the returned link to you.
2

You drop the file

Open the link, drop the file, and confirm.
3

ish picks it up

The agent polls upload_status until the file lands, then uses the returned handle in the downstream call (for example person_generate or study_add_iteration).
When you already have a public link to the content, skip the upload: hand ChatGPT the http(s) URL and it can pass it straight into the source or media argument. ish fetches it server-side.

Troubleshooting

The tool catalog came back empty, usually from a trailing slash. Reconnect the connector with https://mcp.ishlabs.io/mcp (no trailing slash) and approve the OAuth sign-in in your browser, then ask again.
Long simulations can outrun a hosted client’s per-call window. Re-run with wait=false and poll study_get(view="summary") until every participant reaches a terminal state.

Where to go next

Every MCP tool

All 42 hosted tools, grouped by domain.

MCP resources

The ish:// resources, and which tool mirrors each for ChatGPT.

Connect an agent

The add mechanism and OAuth, in full.

Other clients

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