UserTold

Design in-product voice interviews, review source-linked evidence and push work to GitHub or Linear.

Community: Submitted by a user or imported; check the owner before granting accessDegradedNo sign-inGlobalFreeRead-only

What it can do

  • Evidence.Get: Get one bounded Evidence record with its quote, observed behavior, source interview reference, seek timestamp, page context, review state, and linked Work references. Use after evidence.
  • Evidence.List: List bounded Evidence summaries and source references captured from interviews. Use when selecting evidence to inspect, group into Work, or pass to another analysis tool. Defaults to th
  • Interviews.Get Context: Get a bounded transcript and synchronized navigation/click window around an evidence timestamp. Behavior events expose only controlled route vocabulary and element kinds, never

What data it sees

Do you need an account

No: the server works without sign-in

Design in-product voice interviews, review source-linked evidence and push work to GitHub or Linear.

How to connect

How to connect UserTold to Claude

The server address to paste into Claude settings:

https://usertold--krasnoperov.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect UserTold to ChatGPT

The server address to paste into ChatGPT settings:

https://usertold--krasnoperov.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect UserTold to Cursor

The server address to paste into Cursor settings:

https://usertold--krasnoperov.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (19)

Raw names from tools/list. Only developers need these.

evidence.getGet one bounded Evidence record with its quote, observed behavior, source interview reference, seek timestamp, page context, review state, and linked Work references. Use after evidence.list when inspecting or handing evidence to another analysis tool.
evidence.listList bounded Evidence summaries and source references captured from interviews. Use when selecting evidence to inspect, group into Work, or pass to another analysis tool. Defaults to the product_under_test area; pass target_surface="all" for every area.
interviews.get_contextGet a bounded transcript and synchronized navigation/click window around an evidence timestamp. Behavior events expose only controlled route vocabulary and element kinds, never page titles, accessible labels, account or participant identity, raw payloads, recordings, DOM selectors, or URL queries. Use after evidence.list or evidence.get to understand what happened immediately before and after a quoted moment.
interviews.listList bounded recorded-interview summaries and analysis state without participant identity. Use when choosing captured voice, screen-capable desktop, or behavior interviews for evidence review or transcript context.
interviews.processing_statusGet a small privacy-safe processing and extraction summary for one captured interview. Use after an interview completes when waiting for Evidence or Work generation to finish.
interviews.retry_processingRetry generation for one captured interview only after a durable processing failure or the conservative 24-hour no-progress guard. This replaces generated Evidence, preserves manual Evidence, and must not be repeated automatically when the outcome is uncertain.
projects.createCreate a Project in an organization returned by usertold://organizations. The additive operation creates a new public projectRef for Study, Interview, Evidence, and Work tools; it does not configure billing, members, provider credentials, or delivery integrations.
projects.get_widget_setupGet the canonical install-once Project widget snippet and public setup guidance. Install it once across the product; active Studies are selected by status and Visibility, and each selected Study controls its Invitation.
projects.verify_widget_installationCheck a public HTTPS page for the canonical UserTold loader and this Project public key, then inspect CSP and Permissions-Policy for scripts, connections, microphone, and screen capture. The bounded remote check does not execute the host app, grant browser permissions, or replace a human browser smoke test.
studies.createCreate a draft UserTold Study with a complete StudyScriptV2 flow and optional canonical Invitation, Visibility, and customer origins. A direct-link Invitation provisions a revocable shareable campaign URL; retrieve it with studies.get. Use projects.get_widget_setup for the sole install-once Project snippet.
studies.getGet one Study's bounded interview script, goals, canonical Invitation, Visibility, customer origins, and shareable direct-link campaign URL. Private campaign claims, participant identity, and eligibility answers are never returned. Oversized scripts are returned as null with scriptOmitted=true and remain available in the dashboard or CLI.
studies.listList bounded Study summaries for one Project, newest first. Filter by lifecycle status and use the returned studyRef with studies.get or studies.update; full scripts and placement rules stay in studies.get.
studies.updateUpdate a Study returned by studies.list or studies.get, including its canonical Invitation, Visibility, and customer origins. Provide at least one mutable field. Set invitation to null for the built-in Invitation or allowedOrigins to [] to stop publishing its direct-link campaign URL. Set status to active to start new interview collection, paused to disable it temporarily, or closed to stop new interviews for the current collection cycle without interrupting an interview already in progress. A paused or closed Study can later return to active. Examples: use status="active" to begin collection or status="paused" for a temporary stop. The install-once Project widget selects active Studies through Visibility and Invitation, so no per-Study snippet or separate launch/stop call is needed; projects.get_widget_setup remains the sole snippet source.
studies.validate_scriptValidate a bounded StudyScriptV2 and summarize its segments, goals, and modes. Use before studies.create or studies.update when drafting or revising an interview flow.
work.create_from_evidenceCreate one source-linked UserTold Work item in backlog from selected Evidence and calculate its priority. Use after reviewing related Evidence that should become a single actionable problem; project-aware review is still required before delivery handoff.
work.get_evidenceGet a bounded, review-safe package of Evidence currently linked to one Work item, including source interview references, seek timestamps, related Work, recurrence candidates, and a decision summary that preserves resolved-history counts. Use before updating Work, designing follow-up research, writing verification criteria, or pushing to delivery.
work.listList bounded UserTold Work summaries with evidence and interview counts. Use when choosing Work to review, update, inspect for evidence, or push to a delivery provider. Closed Work is hidden by default; enriched=true adds Evidence types and study references.
work.pushCreate a GitHub or Linear issue from ready UserTold Work, sending the Work summary plus quoted Evidence and captured context to the explicitly selected provider. Use only after project-aware verification; this mutates an external system and does not determine verification itself.
work.updateUpdate one UserTold Work item after reviewing its Evidence. Provide at least one of status, title, description, or effort_estimate. This changes only UserTold data; use work.push separately for GitHub or Linear. Examples: set medium effort with effort_estimate="m"; mark delivery-ready Work with status="ready".