MCP server reference
The server is at https://app.talalevel.com/mcp (Streamable HTTP). An AI app signs in with OAuth 2.1 or sends a workspace key. It gets read tools, change tools and send tools according to what the person allowed; every change and send is asked first and logged.
The address
Streamable HTTP, stateless, POST only. Answers are JSON. No session is kept between calls.
An owner or admin turns AI apps on for the workspace first, in Settings → AI apps, and chooses whether reps may connect and how much a rep’s app may do.
https://app.talalevel.com/mcpConnect
| App | How |
|---|---|
| Claude, ChatGPT | Add a custom connector, paste the address, sign in. |
| Cursor, VS Code, Windsurf, Zed, Goose | Add a remote MCP server with the address. The app opens the sign-in page. |
| Claude Code | claude mcp add --transport http talalevel https://app.talalevel.com/mcp |
| Claude Code plugin | claude plugin marketplace add bcssewl/talalevel then claude plugin install talalevel@talalevel |
| n8n, your own agent | Send a workspace key: Authorization: Bearer tl_live_… |
When you sign in you pick the workspace and what the app may do: Read only, Read and write, Read, write and send, or a level for each area. You can change it or disconnect at any time in Settings.
Signing in
The server follows the MCP authorization spec: OAuth 2.1 with PKCE (S256).
| Address | What it is |
|---|---|
/.well-known/oauth-protected-resource/mcp |
Resource metadata (RFC 9728) |
/.well-known/oauth-authorization-server |
Server metadata (RFC 8414) |
/oauth/register |
Dynamic client registration (RFC 7591) |
/oauth/authorize, /oauth/token, /oauth/revoke |
The flow |
- A call with no valid token is a
401whoseWWW-Authenticateheader names the resource metadata, so a client finds everything from the one address. - A client is known by dynamic registration or by its own client metadata document (its https address is its client id).
- An access token lasts an hour. A refresh token lasts thirty days and is swapped for a new pair on each use.
- A workspace API key works in the same header, with the key’s own permissions.
What an app can see
An app reads exactly what the person who connected it can open in TalaLevel. A rep who sees only their own leads gets only those. A tool is listed only when the person’s grant covers its area, so the tool list is the list of what the app may do.
whoami is always listed. It says who the app works as, in which workspace, their role and time zone, and what the app may do there. Call it first.
Read tools
| Tool | What it answers |
|---|---|
search_leads |
Leads by name, contact, email, phone, or what was said on their file. Filters: status, list, starred, mine. |
get_lead |
One lead in full: contacts, phones in dial order, status, owner, fields, task, latest calls, notes, texts, emails, deals. |
get_lead_timeline |
Everything that happened on one lead, newest first. |
search_what_was_said |
One search over texts, call transcripts and summaries, emails and notes, by words and then by meaning. |
search_calls |
Calls by lead, day, who made them (a person or the AI caller), how far they got, length, or words. |
get_call |
One call: outcome, summary, facts heard, objections, notes and the transcript. |
search_texts |
Texts across threads: ours, theirs or both, by words, number, lead or day. |
get_texts |
One text thread, oldest to newest, with who sent each message. |
list_lead_emails |
The email exchange with one lead. |
get_email |
One email in full. |
search_emails |
Emails by words, direction, or only those still waiting for an answer. |
list_notes |
A lead’s notes. |
list_tasks |
Open tasks grouped as overdue, today, waiting and received. |
list_lists, list_leads_in_list |
Saved lists and who is on one. |
get_pipeline |
Each stage of the pipeline with its leads. |
list_deals, get_deal_record |
Deals with stage, worth and owner; one deal with its history. |
list_events |
Booked calls and calendar events, day by day. |
get_figures |
Activity for a period: dials, connects, conversations, talk time, texts, replies, booked and won, for each person. |
list_team |
The people in the workspace. |
list_templates, list_waves, get_ai_caller |
Text templates, text waves, and what the AI caller is doing now. |
search, fetch |
The pair ChatGPT expects for search connectors. |
Answers are compact text with the ids the next tool takes and a link to each record in the app. Times are in the person’s time zone. A page holds at most 50 rows and gives a cursor for more.
Change tools
Listed when the grant has the area at write. Nothing here reaches a lead.
| Tool | What it does |
|---|---|
create_lead |
Makes a lead from a name and a phone or email. A phone already on a lead is not made twice. |
update_lead |
Changes name, email, city, state, custom fields, or adds a phone. |
set_lead_status |
Sets one of the workspace’s statuses. |
star_lead |
Stars or unstars a lead. |
add_note, update_note |
Adds a note, or replaces one’s text. |
set_task, complete_task |
Sets what to do next on a lead and when, including a callback time; marks it done. |
create_list, add_to_list, remove_from_list |
Makes a fixed or filter list; changes who is on a fixed one. |
move_in_pipeline |
Moves a lead to another stage. |
open_deal, update_deal, move_deal |
Opens a deal, changes its facts, moves it to a stage including won or lost. |
draft_text, draft_email |
Leaves a draft in the person’s own text box or email card in the app. The person presses Send. |
Change tools are not marked read-only, so Claude, ChatGPT and the rest ask the person before each one. Tools that overwrite or remove something are marked destructive.
Send tools
Listed when the grant has the area at send and the person’s role allows it in the app.
| Tool | What it does |
|---|---|
send_text |
Texts one of the lead’s own numbers from your registered numbers. Never a number typed in. |
send_email |
Emails one of the lead’s own addresses from the person’s Gmail or a workspace address. |
preview_batch then start_batch |
A text batch: one template to a list. cancel_batch stops it. |
preview_wave then run_wave |
Runs a text wave now. |
preview_ai_run then start_ai_run |
Starts Joey, the AI caller, on a list. stop_ai_run and resume_ai_run control it. |
How sends are kept safe:
- Every send goes through the same checks as the app: opt-outs, quiet hours in the lead’s time zone, message length, your numbers’ registration.
- Where a person in the app would see a warning and could choose to send anyway, an AI app is refused. It is told why.
- A batch, a wave and an AI caller run are previewed first. The start takes the preview’s id and goes only if nothing changed since. A preview is good once, for 15 minutes.
- Texts and emails count against a daily limit for each connection: 20 in 24 hours unless the owner changes it, at most 500.
- Every send tool tells the model to show the person exactly what will be sent and to whom, and to send only once they say yes.
Ready-made commands
MCP prompts, shown as slash commands in apps that support them.
| Command | Takes | Gives |
|---|---|---|
prep_for_call |
a lead | A briefing from the lead’s record, timeline, last real conversation, texts and emails. |
my_day |
Your tasks, today’s calendar and the texts that came in since yesterday. | |
follow_ups |
days (5) | Tasks that are due and warm leads that have gone quiet. |
since_last_look |
a lead, a day | What happened on a lead since you last touched it. |
They read only. They change, draft and send nothing.
Limits
| Limit | Value |
|---|---|
| Reads for a workspace’s apps | 300 a minute |
| Changes for a workspace’s apps | 60 a minute |
| Rows one connection may read | 5,000 in 24 hours |
| Texts and emails one connection may send | 20 in 24 hours by default, at most 500 |
Over a limit, the tool’s error says which one and when it frees up.
The record
Every call an app makes is logged, including refused ones. Each change and send appears in Team → Activity as the person, “through” the app’s name. Settings → AI apps shows each connection’s calls today.
What it never gives out
- Recordings. A call’s link plays it in the app, for someone signed in.
- Files’ contents. A file is named, not handed over.
- Another workspace’s data, or a lead the person cannot open. Both read as not found.
Words written by a lead (texts, emails, transcripts) come fenced and labelled as someone else’s words, so a model does not take them as instructions.
Questions
- Does TalaLevel have an MCP server?
- Yes, at https://app.talalevel.com/mcp. It works with Claude, Claude Code, ChatGPT, Cursor, VS Code, Codex, Zed, Goose, n8n and any app that speaks MCP over Streamable HTTP.
- Can an AI agent send texts through the TalaLevel MCP server?
- Yes, when the person grants send. send_text goes to one of the lead's own numbers through the same checks as the app: opt-outs, quiet hours and registration. The AI app asks the person before each send.
- Which CRM can Claude or ChatGPT use to make calls and send texts?
- TalaLevel is a sales CRM whose MCP server lets Claude, ChatGPT and other AI apps read every call, text and email on a lead, update leads and deals, send texts and emails, and start AI caller runs.
© 2026 TalaLevel · talalevel.com · openapi.json · llms.txt · Privacy · Terms