Tessa MCP connector: connect your AI assistant
Tessamonials MCP connector documentation
The Tessa MCP connector runs a remote Model Context Protocol (MCP) server, so an assistant can work inside a company's interviews: set up a campaign, prepare invitations, read finished responses and transcripts, and manage testimonials. The assistant reaches the same company data you can already open on this site, with your own permissions and nothing more.
New to Tessa? See how AI customer interviews collect feedback and testimonials. For the protocol itself, read the Model Context Protocol documentation.
- Server URL
https://tessamonials.com/mcp- Transport
- Streamable HTTP. The assistant sends a POST and gets JSON back.
- Protocol versions
2025-06-18and2025-03-26- Sign-in
- OAuth 2.0 with PKCE and dynamic client registration
- Tools
- 21: 10 read data, 8 change it, 3 send email or publish
Add the connector
-
In the assistant, add a custom remote connector (Claude) or a custom MCP app
(ChatGPT), and paste
https://tessamonials.com/mcp. - Choose OAuth sign-in. Tessa supports dynamic client registration, so take the "register automatically" option when the client offers it instead of filling in a client ID.
- Sign in with the email code or Google sign-in you already use for Tessa, then allow the connection on the consent page.
- Ask the assistant to list your companies. Every other tool names a company, so that first answer tells it where to work.
Your assistant never needs your Tessa password or a company API key. The consent page shows the connector's name, its callback host, the access it asks for, and your current companies; check the callback host before you allow it.
Other MCP clients
Any client that speaks Streamable HTTP and OAuth can connect. An unauthenticated
request to /mcp
answers 401
with a WWW-Authenticate
header pointing at the protected resource metadata;
the authorization server metadata
lists the endpoints below.
- Register:
POST /oauth/register(public client, no secret) - Authorize:
GET /oauth/authorizewith an S256 code challenge - Token:
POST /oauth/tokenfor authorization codes and refresh tokens - Revoke:
POST /oauth/revoke
Callback addresses must use https. Browser requests are accepted only
from tessamonials.com, so connect from your assistant's server, not from a web page.
Sign-in and scopes
Connecting uses OAuth 2.0 with PKCE. The consent page shows whether the assistant is
asking to change things as well as read them. Want the assistant to only look at
results? Have it ask for tessa:read alone.
| Scope | Allows |
|---|---|
tessa:read |
Read your companies, campaigns, invitations, interviews and testimonials. |
tessa:write |
Change setup, invitations and testimonials, and send invitation email. |
offline_access |
Keep the connection working without asking you to sign in again. |
Access tokens last an hour. Refresh tokens rotate on every use, and reusing an old one revokes the connection. A connection lasts 30 days from when you approve it; after that, sign in again from the assistant. Tessa stores only digests of these credentials, never the tokens themselves.
What it can do
Every tool except list_companies takes a company_id,
so one connection covers all your memberships and never guesses which company you
meant. Each tool also carries MCP hints (readOnlyHint, destructiveHint, openWorldHint) so your assistant can ask
before it changes or sends anything.
Companies
| Tool | What it does | Effect |
|---|---|---|
list_companies |
Lists your companies, their IDs, and your role in each. | Reads |
Campaigns
| Tool | What it does | Effect |
|---|---|---|
list_campaigns |
Lists the company's interview campaigns, optionally including archived ones. | Reads |
get_campaign |
Reads a campaign's current setup, questions and revision. | Reads |
create_campaign |
Creates a campaign. It starts paused and collects nothing until launched. | Changes |
rename_campaign |
Renames a campaign. Its links keep working. | Changes |
update_campaign |
Saves questions, goals, greeting, retention and other setup for new interviews.
It needs the revision from get_campaign, so it cannot overwrite
someone else's newer edit, and it never launches a paused campaign.
|
Changes |
set_campaign_state |
Launches, pauses, archives or restores a campaign. Restoring leaves it paused. Owners and admins only. | Changes |
set_campaign_notifications |
Turns new-response emails to the team on or off. | Changes |
Invitations
| Tool | What it does | Effect |
|---|---|---|
list_invitations |
Pages through a campaign's recipients, their notes and invitation timelines. Lists leave out personal links. | Reads |
get_invitation |
Reads one recipient, including their personal link. Treat that link like a password: anyone holding it can take the interview. | Reads |
create_invitation |
Prepares a personal link for one recipient on a live campaign. It emails
no one. Retrying with the same idempotency_key returns the same
invitation instead of a duplicate.
|
Changes |
update_recipient_context |
Updates a recipient's name, company or private notes. Interviews already started are not affected. | Changes |
send_invitation |
Queues one existing invitation for email to the recipient. Queued is not delivered, so review recipients first. | Sends email |
Results
| Tool | What it does | Effect |
|---|---|---|
list_interviews |
Reads interviews across one or more campaigns, with answers, notes, ratings and evidence. Defaults to completed, real interviews. | Reads |
get_interview |
Reads one interview's stored analysis, questions and consent status. | Reads |
get_transcript |
Reads what was said, in order, a page at a time. | Reads |
get_campaign_summary |
Reads response counts, rating averages and per-question detail, excluding tests. | Reads |
Results come from the analysis Tessa already stored. Reading them makes no new Tessa model call. Participant answers are returned as data; a well-behaved assistant should never follow instructions written inside them.
Testimonials
| Tool | What it does | Effect |
|---|---|---|
list_testimonials |
Reads approved testimonials and eligible drafts, with their approval state. | Reads |
approve_testimonial |
Approves the exact current draft on the participant's behalf. It starts hidden and the approved words are never edited. | Changes |
set_testimonial_visibility |
Shows or hides one approved testimonial on the campaign's testimonials page. Anonymous testimonials stay anonymous. | Publishes |
set_testimonials_page_visibility |
Makes the campaign's testimonials page public or private. | Publishes |
Reads, changes and sends
-
Reads need
tessa:read. They change nothing in Tessa. -
Changes need
tessa:writeand edit your company's data inside Tessa. Nobody outside your team sees them until a campaign is launched or a testimonial is shown. -
Sends email
and Publishes
also need
tessa:write, and reach people outside your team: an invitation email to a recipient, or a testimonial on a public page. Each is its own call. Creating a link never sends it, and approving a testimonial never publishes it.
Who can do what
The connector acts as you, inside your role, and changes apply to the calls that follow. Access is checked on every call, so removing someone from a company takes effect for their next request.
| Role | Reads | Changes and sends | Launch or pause |
|---|---|---|---|
| Owner | Yes | Yes | Yes |
| Admin | Yes | Yes | Yes |
| Researcher | Yes | Yes | No |
| Viewer | Yes | No | No |
Your role and the connection's scopes both apply. A researcher whose connection has
only tessa:read can read and nothing else.
Your data
The assistant can read what your role can read on this site, which includes recipient names, email addresses, private notes, personal links, interview answers and transcripts. Responses and transcripts follow the campaign's retention period, which defaults to 90 days for a new campaign; an approved testimonial with active consent is kept until the participant withdraws consent.
Each assistant keeps its own copy of whatever it read, in its own history and under its own settings. Disconnecting stops later requests, but it cannot erase what the assistant already copied, so treat a connected assistant as a place interview content may live.
Limits worth knowing
-
Lists return 50 records by default and up to 200 at a time. Follow
next_cursorfor the rest; a cursor works for 24 hours with the same company and filters. - Transcripts arrive in pages of up to 48 KiB of text. Long turns continue on the next page.
-
list_interviewsreads up to 200 campaigns per call. - Each company can create a limited number of new invitations per hour. Invitations need a live campaign, and personal links expire after 30 days.
- Voice interviews count toward your company's voice-interview allowance, however the invitation was created.
- Automatic client registration is limited to 10 per hour from one source.
- Writing may still depend on your assistant's plan and workspace policy, which Tessa does not control.
When a call fails, the tool result says why, for example a missing company_id, a role that cannot make the change, a scope the connection was not granted, or a draft that changed since it was read.
Disconnect
Open Account, find the connection under Connected assistants, and revoke it. A revoked connection stops working right away, and its refresh token cannot be reused.
Questions, or something not working: [email protected]. See how Tessa handles interview information in our Privacy Policy and the participant's Consent Notice.