Skip to main content

Tools and integrations

MCP server

Finn agents and the CRM from Claude, ChatGPT, Cursor or any MCP client.

What the MCP server does

Finn runs a remote MCP server. Connect an AI assistant to it, such as Claude, ChatGPT, Cursor or Claude Code, and the assistant can work in your Finn workspace on your behalf:

  • Finn agents: list and read your voice and chat agents, create new ones as drafts, edit drafts, and read aggregate call stats.
  • CRM: search and read records, timelines, follow-ups, documents and forms; ask the CRM questions in plain English; add notes and follow-ups, create records and edit fields; move stages, submit forms, attach files, import sheets and create outside-party links.

What a key can do is set by its scopes, chosen when you generate it. A key never does more than its owner can do in the dashboard.

It's deliberately limited. No tool can place a call, send an email or message, start or stop a deployment, delete or merge anything, export data in bulk, read transcripts or recordings, touch billing, or take a Finn out of draft. Stage moves, form submits, file attaches, imports and outside-party links show you a preview and ask before they happen.

Server

URLhttps://mcp.hirefinn.ai/mcp
TransportStreamable HTTP. There's no package to install and nothing to run locally.
AuthA personal MCP key: finn_mcp_ followed by 48 hex characters

If you connected with the older finn-mcp-73965536364.asia-southeast1.run.app address, it still works for now. Switch to the address above when you next reconnect.

The key belongs to the person who generated it. Everything the assistant does happens as that person, in their organization. You can't pass an organization or creator ID to change that.

Get a key

  1. In the dashboard, go to Settings → Integrations and find AI Assistants (MCP).
  2. Click Generate key.
  3. Enter a Key name, for example "work laptop". In Claude, the connector shows up under this name.
  4. Under What this key can do, pick its scopes (see Scopes below). Finn agents is on by default.
  5. Under Organizations, keep All my organizations or pick Only these organizations.
  6. Set Expires. Keys that see sensitive fields or make CRM changes must expire; they default to 90 days and can last up to 365.
  7. Click Generate.

The key is shown once. The dialog that shows it also gives you a ready-made connector link and Claude Code command. Copy what you need before you click Done, I've copied it.

The key list shows each key's scopes, when it was created, when it was last used and when it expires. Revoke stops a key on its next request. Finns already created with it aren't affected. There's no public API for creating or revoking keys. To change a key's scopes, generate a new key and revoke the old one.

Scopes

ScopeIn the dashboardWhat it adds
finnFinn agentsThe Finn agent tools: list, read, create and edit draft voice and chat agents, and read call stats. Every key made before scopes existed has this one.
crm:readRead CRMSearch and read records, stages, timelines, follow-ups, documents, forms and pipeline stats; Ask the CRM. Added automatically with any other crm: scope.
crm:writeMake changesAdd notes and follow-ups, create records, edit fields and tags, tick stage checks, set document status, assign reference numbers, save form drafts and views, start AI document drafts. Can't move stages, delete or send.
crm:stageMove stages and submit formsMove a record to another stage (its checks must be met) and submit forms. Asks you to confirm each one. Submitting forms also needs crm:sensitive:read.
crm:docs:writeAttach filesUpload a file (up to 5 MB) to a record. Adds files, never replaces or removes them.
crm:sensitive:readSee sensitive fieldsShows the fields your organization marks sensitive (for example ID numbers) and form answers. Without it they come back redacted.
crm:importImport sheetsImport up to 500 rows of a CSV into the CRM. Admins only. Shows a preview and asks first.
crm:shareCreate outside linksMake a form or upload link for someone outside your team, valid up to 30 days. Asks first. Doesn't send it.

The server only lists the tools a key's scopes allow, and the backend checks the scope again on every request.

Connect a client

Claude (web or desktop)

The dialog's Claude app tab shows Your connector link:

https://mcp.hirefinn.ai/mcp/finn_mcp_...
  1. In Claude, open Customize → Connectors, click + and choose Add custom connector.
  2. Paste the link as the remote MCP server URL and click Add.
  3. In a new chat, open + → Connectors and switch Finn on.

The link contains your key, so anyone who has it can act as you. Treat it like a password, and revoke the key if it leaks.

On Claude's Free plan you can add one custom connector. On Team and Enterprise plans, only an Owner can add one, under Organization settings → Connectors, and everyone else then clicks Connect.

Claude Code

The dialog's Claude Code tab shows the command with your key filled in:

claude mcp add --transport http finn https://mcp.hirefinn.ai/mcp --header "Authorization: Bearer finn_mcp_..."

Run it in a terminal, then start claude.

Cursor

Add Finn to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json in a project:

{
  "mcpServers": {
    "finn": {
      "url": "https://mcp.hirefinn.ai/mcp",
      "headers": { "Authorization": "Bearer finn_mcp_..." }
    }
  }
}

Then open Cursor Settings → MCP and check that Finn is listed and switched on. Don't commit a project file that contains your key.

ChatGPT

ChatGPT connects to remote MCP servers in developer mode (Plus, Pro, Business, Enterprise and Edu plans, on the web). On Business and Enterprise an admin may need to allow custom connectors first.

  1. In ChatGPT, open Settings → Apps & Connectors → Advanced settings and turn on Developer mode.
  2. Back in Apps & Connectors, click Create.
  3. Give it a name, such as "Finn", and paste your connector link (https://mcp.hirefinn.ai/mcp/finn_mcp_...) as the MCP server URL.
  4. Set authentication to No authentication: the key is in the link.
  5. Confirm that you trust the server, and click Create.
  6. In a new chat, turn Finn on from the tools menu.

The link contains your key, as with Claude. Menu names in ChatGPT change between releases; if yours differ, look for developer mode and custom connectors.

Other clients

Any MCP client that supports streamable HTTP works. Point it at https://mcp.hirefinn.ai/mcp and send Authorization: Bearer finn_mcp_.... If the client only takes a URL, use the connector link with the key in it.

To check the connection, ask the assistant to list your Finns. It should call list_finns. With only CRM scopes, ask for your follow-ups instead: it should call crm_list_follow_ups.

Tools

There are 50: 18 Finn agent tools with the finn scope and 32 CRM tools across the crm: scopes. A key sees only the tools its scopes allow.

Finn agent tools (finn)

ToolChanges anythingWhat it does
list_finnsNoYour Finns, newest first: id, name, status, channel (voice or chat), use case. Can list only voice or only chat agents.
get_finnNoOne Finn's persona and settings, including its channel, time zone and call handling
get_finn_settingsNoWhat get_finn doesn't show: agent handbook toggles, speech settings, whether the call flow canvas is on, per-task settings and attached knowledge-base documents
get_finn_flowNoThe call flow canvas: its steps, how they connect, and whether it's on
get_finn_variablesNoThe Finn's {placeholders}, {{variables}}, their CSV column mapping, and its post-call fields
get_finn_statsNoCall totals, answer and success rates, minutes, cost and breakdowns for a date range. Defaults to the last 30 days. Aggregates only.
summarize_finn_outcomesNoTotals for each post-call field over a date range: choice counts, number averages, common text answers. Aggregates only.
list_orgsNoThe organizations your key belongs to, and your role
list_voicesNoVoice IDs, filterable by provider and a search term
get_share_linkCreates a link if there isn't oneThe Finn's public share link
create_finnCreates a draftA new voice or chat agent from a name, identity, style and response guidelines, plus optional use case, language, voice and opening line
generate_finnCreates a draftA complete draft voice or chat agent from a plain-language brief, using the dashboard's AI Copilot. Takes up to a minute.
duplicate_finnCreates a draftA copy of a Finn. The call flow canvas, agent handbook, speech settings and share link aren't copied.
update_finn_draftEdits a draftChanges a draft's persona fields, time zone and, for voice agents, call handling. Fields you don't name keep their values.
update_finn_variablesEdits a draftMaps {placeholders} to audience CSV columns, turns mapping on or off, and sets post-call fields
update_finn_handbookEdits a draftTurns agent handbook guidelines on or off: tone, fillers, empathy, read-back, NATO spelling, spoken numbers, smart matching, AI disclosure, scope
update_finn_speech_settingsEdits a draftVoicemail, ending on silence, ring time, noise filtering, response speed, speaking speed, interruptions, background volume, words to listen for, pronunciations
set_finn_flow_enabledEdits a draftWhether a voice draft follows its call flow canvas or its workflow prompt. The canvas itself isn't changed.

Tools that create or edit a Finn return a link to it in the dashboard. A dashboard tab that was already open won't list a new Finn until you reload it.

The edit tools only work on drafts. A Finn that has been deployed is edited in the dashboard.

Chat agents

Pass channel: "chat" to create_finn or generate_finn to make a text chat agent instead of a voice agent. It's the same as choosing Chat AI Agent in the dashboard, and the link the tool returns opens it in the chat agent builder. Editing or copying a chat agent keeps it a chat agent.

Connecting a chat agent to your website, WhatsApp, SMS or email inbox is done in the dashboard, under Chat AI Agents.

Call handling

update_finn_draft sets the same options as the call handling panel in the dashboard. They apply to voice agents only.

FieldValues
limitCallDuration1 min, 3 mins, 5 mins, 10 mins, 15 mins, 30 mins, 60 mins or None
maxIdleDurationHow long the caller can stay silent before the idle reminder: 10s, 20s, 30s, 45s, 60s, 90s, 120s or None
idleReminderWhat the Finn says after that silence
voicemailDetectiontrue to hang up on voicemail
timezoneAn IANA time zone such as Asia/Kolkata. Works for chat agents too.

The CSV column mapping that get_finn_variables and update_finn_variables read and write isn't applied on phone calls, and neither are single-brace {placeholders}. Calls fill {{ column }} variables in the welcome message and system prompt straight from the audience row. See variables.

get_share_link returns the existing link if there is one. If sharing was switched off or the link has expired, it says so rather than making a new one. Anyone with a share link can talk to the Finn in a browser, which uses your credits.

CRM tools

Every CRM tool takes an org_id and starts with crm_. Call crm_get_schema first: it returns the organization's record kinds, stages, custom fields (and which are sensitive), document types, and the filters search accepts.

ToolScopeWhat it does
crm_get_schemacrm:readThe CRM's setup: record kinds, stages, custom fields, document types, filter catalog
crm_search_recordscrm:readFind records by free text (name, phone, email, reference number) or by a filter
crm_count_recordscrm:readHow many records match a filter; optionally per stage
crm_get_recordcrm:readOne record in full: fields, stage, assignee, sections and links
crm_get_timelinecrm:readNotes, stage changes, field changes, and call summaries (never transcripts)
crm_get_stage_gatecrm:readWhat a record still needs before it can move to a stage
crm_list_documentscrm:readA record's documents (names, types, status; never contents) and forms checklist
crm_list_formscrm:readThe organization's form templates. Not the answers.
crm_list_follow_upscrm:readFollow-ups: yours, the team's or unassigned; open, overdue or done
crm_my_workcrm:readRecords assigned to you that need action now
crm_list_viewscrm:readSaved views (named filters)
crm_get_pipeline_statscrm:readRecords per stage, a summary, and response speed for a period
crm_find_duplicatescrm:readRecords that look like duplicates. Merging stays in the dashboard.
crm_askcrm:readAsk a question in plain English; returns the filter it understood and the count. Counts toward the daily Ask limit.
crm_get_form_submissionscrm:sensitive:readA record's submitted forms and drafts, with answers
crm_add_notecrm:writeAdd a comment to a record's timeline, optionally mentioning teammates
crm_create_follow_upcrm:writeCreate a follow-up on a record
crm_update_follow_upcrm:writeMark a follow-up done or cancelled, snooze it, or change it
crm_create_recordcrm:writeAdd a record. Refused if the number already exists.
crm_update_fieldscrm:writeChange a record's name, tags or custom fields. Not its stage or assignee.
crm_tick_stage_checkcrm:writeTick or untick a stage check. Waiving one stays in the dashboard.
crm_assign_reference_nocrm:writeGive a record its reference number, if it has none
crm_assign_case_idcrm:writeOlder name for crm_assign_reference_no
crm_set_document_statuscrm:writeMark a required document verified, rejected or missing
crm_save_form_draftcrm:write + crm:sensitive:readSave form answers as a draft for a person to check and submit
crm_save_viewcrm:writeSave a filter as one of your own views
crm_draft_documentcrm:writeStart an AI draft of a document from a published template, for a person to review. Nothing is sent.
crm_move_stagecrm:stageMove a record to another stage. Its checks must be met. Asks first.
crm_submit_formcrm:stage + crm:sensitive:readSubmit a form on a record. Asks first.
crm_attach_documentcrm:docs:writeAttach a file to a record. Asks first.
crm_import_csvcrm:importImport up to 500 CSV rows: new records, filled-in fields. Shows a preview and asks first.
crm_create_outside_party_linkcrm:shareA personal link for someone outside the team to fill a form or upload files. Asks first.

"Asks first" means the first call returns a preview and a one-time confirmation; the assistant shows it to you and repeats the call only after you say yes.

What the MCP can't do

  • Build or edit a call flow canvas, or attach tools. See workflow editor.
  • Connect a chat agent to a channel, or send emails or messages. Email from the CRM is drafts only.
  • Place calls or create deployments. Use the dashboard, or the API: see api-calls and api-deployments.
  • Delete, merge, enrich or bulk-export records, or override a stage check.
  • Read call transcripts or recordings, or file contents.
  • Start or manage Finn Operator cases. Use the dashboard.
  • Notify the assistant when something happens. For events, use webhooks.

Troubleshooting

SymptomCause and fix
Every call fails with an auth errorThe key was revoked or mistyped. Keys must be finn_mcp_ plus 48 hex characters exactly. Generate a new one.
The Finn tools don't appear in ClaudeThe connector isn't switched on for this chat. Open + → Connectors and turn Finn on.
The assistant created a Finn you can't seeIt's in the organization of the key's owner. Ask the assistant which account it used, and reload the dashboard.
An edit is refusedThe Finn isn't a draft. Edit it in the dashboard.
The CRM tools don't appearThe key has no crm: scopes. Generate a new key with the scopes you need.
Sensitive fields come back redactedThe key doesn't have crm:sensitive:read.
A CRM call is refused for an organizationThe key is limited to other organizations, or you're not a member of that one.
A voice fails on a callThe voice ID was made up. Have the assistant call list_voices and pick one from the list.