JuryTap hosts an MCP server at https://app.jurytap.com/mcp (Streamable HTTP). It exposes seven hand-designed tools over the same org-scoped API keys as the REST API, so Claude Code can set up, watch, and read out a focus group in plain English. Tool reference and the underlying REST contract: docs/API.md. Local dev serves the same endpoint at http://localhost:3000/mcp with jt_dev_ keys.
Host console > Settings > API keys (/host/settings/api-keys). Name the key for the machine or person using it. The full key is shown once; only its hash is stored. Pick the narrowest scopes for the job:
| Job | Scopes |
|---|---|
| Set up sessions and read reports (recommended default) | cases:read cases:write sessions:read sessions:write responses:read reports:read observations:write |
| Watch a live room only | sessions:read responses:read |
| Also let the agent push and close sets | add sessions:control (still gated by the session's agent control switch) |
| Also hand out juror links | add participants:links |
Do not paste a key into a chat, a commit, or a shared document. Revoke from the same page if one leaks.
claude mcp add --transport http jurytap https://app.jurytap.com/mcp \
--header "Authorization: Bearer jt_live_..."Then start a new Claude Code session and confirm:
claude mcp listjurytap should show as connected. A 401 means the key is wrong or revoked; a 403 on a tool call means the key lacks that tool's scope.
claude.ai custom connectors need OAuth sign-in, which is not available yet; use Claude Code for now.
Ask for it in one message. setup_session creates the case (or attaches to an existing case_id), the session, up to 100 jurors, and the question sets in a single call. Everything lands as draft; nothing reaches a juror until a set is pushed.
Set up a JuryTap session for a new case "Garza v. Metro Transit", titled "Panel A, Sept 24", jurors Ana, Ben, Cara, Dev, Eli. Set 1 "After plaintiff opening": likert 7 "How believable was the plaintiff?", free text "What stuck with you?". Set 2 "Damages": numeric in dollars, 0 to 5,000,000, "What would you award?"
Question kinds: single_choice and multi_choice (options), likert (scale 5 or 7), numeric (unit, min, max), free_text.
Then open the session in the control room, check the sets and their order (prompts cannot be edited after a push), and copy the juror links from there. Pushing stays with the host.
get_room: snapshot of the room, per-question summaries, optionally every raw answer.watch_room: long-poll the event log; pass back the highest event id seen so nothing is missed.draft_follow_up_set: write a follow-up set from what jurors said; the host pushes it.push_next_set: works only while the host has switched on agent control for that session, and fails safely on a stale room version.record_observation: a one-to-three-sentence cited insight that appears in the attorney report; the server rejects any citation that does not resolve.get_report: the session report, or the cross-session case report, as data with participant and question ids on every number and quote.Every call a key makes is in the audit log (audit:read), attributed to the key's name.
claude mcp remove jurytapand revoke the key in the console.