Available to all organizations — Tenzo hosts a Model Context Protocol server that exposes the read endpoints of the Tenzo Public API as tools that any MCP-compatible AI client can call, plus a
submit_feedback write tool the assistant uses to log questions it struggled with (internal feedback only).Overview
Tenzo’s MCP server lets you point an MCP-compatible client (Claude.ai, Claude Desktop, Claude Code, Cursor, Windsurf, etc.) at your Tenzo workspace and ask natural-language questions like “summarize the last 20 calls for job X” or “list applications stuck in screening for more than a week.” The model can call Tenzo tools directly to fetch the data it needs. There are two ways to connect, depending on the client:- OAuth connector — for hosted clients like Claude.ai that support the MCP HTTP transport with OAuth 2.1. Sign in with your Tenzo account; no API key required.
.mcp.jsonconfiguration — for local clients (Claude Code, Cursor, Windsurf, Claude Desktop). Authenticated with a Tenzo API key.
GET endpoints. Write operations on recruiting data (creating jobs, upserting applications, posting comments) are not available through MCP — use the Public API directly for those. The one exception is submit_feedback, which lets the assistant record questions it struggled with so we can improve it; it writes only to an internal feedback log and exposes no recruiting data.
Option 1 — OAuth connector (Claude.ai and other hosted clients)
For Claude.ai, add Tenzo as a custom connector. The first time you use it, you’ll be redirected to Tenzo to sign in and approve access.Open the connectors page in Claude
In Claude.ai, go to Settings → Connectors → Add custom connector.
Provide the connector URL
Enter the Tenzo MCP server URL:Leave the authentication type as the default (OAuth). Claude will discover Tenzo’s authorization server automatically.
Revoking access
Tenzo issues short-lived access tokens only — no refresh tokens. Once the access token expires, the client has to send the user back through the OAuth flow to get a new one. To stop a connector from talking to Tenzo, remove it from the client (e.g. Settings → Connectors in Claude.ai); any in-flight token will stop working when it expires, and the client cannot mint a new one without going through consent again.Option 2 — .mcp.json (Claude Code, Cursor, Windsurf, Claude Desktop)
Local clients read MCP server definitions from a .mcp.json (or equivalent) config file. Add the following entry:
Generate a Tenzo API key
Follow Generating an API Key to create a key in Settings → Developer Tools. Your key starts with
tenzo_pk_.Add the entry to your client config
- Claude Code — add to
.mcp.jsonat the root of your project (or your global Claude Code config) - Cursor —
~/.cursor/mcp.json - Windsurf —
~/.codeium/windsurf/mcp_config.json - Claude Desktop —
claude_desktop_config.json(see Anthropic’s docs for the platform-specific path)
Available tools
Every tool maps 1:1 to aGET endpoint in the Tenzo Public API. Click any tag link below to see the full request and response schemas for the underlying endpoint.
Analytics
| Tool | Description | Public API |
|---|---|---|
get_analytics_metrics | Analytics metrics and chart payloads for the dashboard | Analytics |
get_sourcing_by_user | Sourced-candidate counts per recruiter | Analytics |
get_grading_analytics | Per-question grading stats for a job | Analytics |
get_top_candidates_for_job | Top-ranked candidates for a job | Analytics |
Applications
| Tool | Description | Public API |
|---|---|---|
list_applications | List applications with filtering | Applicants |
get_application | Get a single application by Tenzo or remote ID | Applicants |
get_application_by_candidate_and_job | Resolve a (candidate, job) pair to its application | Applicants |
list_application_comments | ATS comments on an application | Applicants |
get_application_communications_email | Email history for an application | Applicants |
get_application_communications_sms | SMS history for an application | Applicants |
ATS
Audit
Calls & interviews
| Tool | Description | Public API |
|---|---|---|
list_calls | List calls with filtering | Interviews, calls & media |
get_call | Get a single call | Interviews, calls & media |
get_call_transcript | Full call transcript | Interviews, calls & media |
get_call_quality_eval | Quality-eval scores for a call | Interviews, calls & media |
search_interviews | Search interviews by candidate, job, or status | Interviews, calls & media |
list_interview_results | Structured interview-result rows | Interviews, calls & media |
get_interview_results | Result rows for a single application | Interviews, calls & media |
Candidates
| Tool | Description | Public API |
|---|---|---|
list_candidates | List candidates with filtering | Candidates |
get_candidate | Get a single candidate | Candidates |
search_candidates | Search candidates by name | Candidates |
get_candidate_resume | Parsed resume for a candidate | Candidates |
list_candidate_notes | ATS notes for a candidate | Candidates |
list_unanswered_candidate_questions | Questions a candidate asked the AI that need a human reply | Candidates |
Jobs
| Tool | Description | Public API |
|---|---|---|
list_jobs | List jobs with filtering | Jobs |
get_job | Get a single job | Jobs |
search_jobs | Rich job search with filters | Jobs |
get_job_settings | Effective interview settings for a job | Jobs |
get_job_script | Active script for a job | Jobs |
get_job_candidate_questions | Candidate-facing FAQ for a job | Jobs |
get_job_resume_requirements | Resume requirements configured for a job | Jobs |
Folders
Media
| Tool | Description | Public API |
|---|---|---|
list_media | Audio/video assets metadata | Interviews, calls & media |
get_media_item | A single media asset | Interviews, calls & media |
Meeting Copilot
| Tool | Description | Public API |
|---|---|---|
list_meeting_copilot_notes | List Meeting Copilot notes for your org | Meeting Copilot |
get_meeting_copilot_note | Get a single Meeting Copilot note | Meeting Copilot |
list_meeting_copilot_templates | List Meeting Copilot templates (presets) | Meeting Copilot |
get_meeting_copilot_template | Get a single Meeting Copilot template | Meeting Copilot |
Docs
| Tool | Description | Public API |
|---|---|---|
list_docs | List doc paths in the public docs tree | Read-only Getters |
get_doc | Get the markdown content of a doc | Read-only Getters |
Organization & users
| Tool | Description | Public API |
|---|---|---|
get_org_interview_settings | Org-wide interview defaults | Organization |
get_interview_rules | Active rules-engine rules | Organization |
list_users | List users in your org | Read-only Getters |
get_user | Get a single user | Read-only Getters |
search_users | Search users by name | Read-only Getters |
Templates
Two tools cover every org-template family. Pass the family via thekind parameter instead of calling a per-family tool. Both map to the Templates tag in the Public API.
Allowed
kind values: script_generation, background_info, redaction, suggested_follow_up, voicemail_sms_prompt, flagged_event, summary, thank_you_email, custom_booking_outro, rejection_email, resume_feedback_email, interview_results_layout, question_constraints.
The REST API keeps a dedicated endpoint per template family (e.g.
GET /api/v1/templates/summary) — only the MCP tool surface is consolidated into list_templates / get_template.Troubleshooting
The connector won't authorize / OAuth popup fails
The connector won't authorize / OAuth popup fails
`401 Unauthorized` from a `.mcp.json` client
`401 Unauthorized` from a `.mcp.json` client
A tool returns `403 Forbidden`
A tool returns `403 Forbidden`
The tool was called with an ID that belongs to a different organization. MCP tools only return data scoped to your org. Double-check the ID is one your account can see in the Tenzo dashboard.
A tool I expected isn't in the list
A tool I expected isn't in the list
The MCP tools that proxy the Public API cover only its
GET endpoints. Write operations on recruiting data (e.g. POST /api/v1/job) must be called via the REST API directly. (The assistant also has a submit_feedback tool that writes only to an internal feedback log, not to your recruiting data.)Related
- API & Webhook Configuration — generate the API key used by
.mcp.jsonclients - Tenzo Public API Documentation — full schemas for every underlying endpoint
- Model Context Protocol specification — protocol details