The Metaview MCP connector routes your AI agent's tool calls to Metaview's own MCP server through Scalekit. Each user signs in to Metaview once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 54 tools.
- Tools
- 54
- What they doRead · write · destructive
- 35 · 14 · 535 read14 write5 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Metaview MCP connection
In AgentKit > Connections, create a Metaview MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Metaview MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'metaviewmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Metaview MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'metaviewmcp_find_candidate_in_sequences',toolInput: { rationale: 'YOUR_RATIONALE' },})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "metaviewmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Metaview MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"rationale":"YOUR_RATIONALE"},tool_name="metaviewmcp_find_candidate_in_sequences",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolmetaviewmcp_fetch_candidatesALWAYS use this tool to look up one or more people or candidates.Read-onlyFetch candidates
ALWAYS use this tool to look up one or more people or candidates. This is the ONLY way to retrieve candidate scorecards, ATS feedback, resume files, application history, and professional profile data. Do NOT try to scrape LinkedIn or other websites directly — this tool fetches richer data than any public page and includes internal ATS records. Look up candidates by LinkedIn URL, email, phone number, or participant ID. Returns per-candidate results with two sections each: profile (professional background) and ats (internal ATS data including scorecards, applications, feedback, files). ATS data access requires you are a Metaview admin, ATS admin, or the candidate appeared in a conversation you have access to. Accepts 1-10 candidates per call.
Inputs
candidatesarrayrequired- 1-10 candidate lookups. Each is a dict with at least one identifier key â these exact keys and no others: - candidate_id: Metaview candidate UUID (as returned by the application review, screening, and sourcing candidate tools). - linkedin_url: LinkedIn profile URL ("https://www.linkedin.com/in/john-doe") or bare shorthand ("john-doe"). - email: candidate email address. - phone_number: candidate phone number. - participant_id: Metaview participant ID (e.g. from the default:candidate field in conversation data). Optional scoped-access keys (each requires candidate_id and an accessible entity whose roster includes the candidate): - application_review_id: Application Review UUID authorizing ATS access. - screen_id: screen UUID authorizing ATS access.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_find_candidate_in_sequencesCheck if a candidate is enrolled in any sequences.Read-onlyFind candidate's sequences
Check if a candidate is enrolled in any sequences. Look up a candidate by ID, LinkedIn URL, email address, or phone number and return all sequences they are (or were) enrolled in, including sequences created by other users. Useful before adding someone to a new sequence to avoid duplicate outreach.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
candidate_idstring- Candidate UUID for direct lookup (preferred when known). At least one of candidate_id/linkedin_url/email/phone_number is required.
emailstring- Email address, matched against any of the candidate's emails or the to_email used in a sequence. At least one of candidate_id/linkedin_url/email/phone_number is required.
linkedin_urlstring- LinkedIn profile URL (normalized automatically). At least one of candidate_id/linkedin_url/email/phone_number is required.
phone_numberstring- Phone number, matched against the candidate's phone numbers. At least one of candidate_id/linkedin_url/email/phone_number is required.
metaviewmcp_get_application_review_detailsGet the full state of one Application Review: the ACTIVE ICP, any pending DRAFT edit, the RANKING version if a rerank is in progress, the version history, rerank status, a decision/calibration summary, and the fit-band distribution of the current ranking.Read-onlyGet application review details
Get the full state of one Application Review: the ACTIVE ICP, any pending DRAFT edit, the RANKING version if a rerank is in progress, the version history, rerank status, a decision/calibration summary, and the fit-band distribution of the current ranking. Read this before refining an ICP with update_application_review_icp, or to poll a rerank's progress.
Inputs
application_review_idstringrequired- The review to inspect (UUID from list_application_reviews).
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
detail_levelstring- 'full' (default): the ICP text, version history, rerank status, decisions, and fit distribution. 'concise': run and rerank state, display versions, pending counts, and next-step guidance â use for cheap polling after an ICP update or restore.one of
concisefulldefaultfull icp_versionstring- Return the full ICP text of a specific historical version â a display number (1, 2, 3, ...) as shown in version_history and the web app, not a raw internal id. Omit for the ACTIVE / DRAFT / RANKING texts. Only available at detail_level='full'.
metaviewmcp_get_application_review_rules<usecase> Read the workspace-wide Application Review evaluation rules â a single standing instruction the review agent applies when constructing and refining the ICP for every review in the workspace (e.g.Read-onlyGet Application Review Rules
<usecase> Read the workspace-wide Application Review evaluation rules â a single standing instruction the review agent applies when constructing and refining the ICP for every review in the workspace (e.g. company-wide disqualifiers, visa policies, location constraints). Per-review criteria live on the review's ICP instead â see get_application_review_details. </usecase> <instructions>rules is null when the workspace has not set any. To change the rules use update_application_review_rules.</instructions> <response_format>{"rules": "text or null"}</response_format> <data_model>See list_application_reviews for the Application Review data model.</data_model>
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_get_chart_dataGet chart data for aggregate time-series or scatter plots.Read-onlyBuild chart
Get chart data for aggregate time-series or scatter plots. Each chart_input is processed independently. Aggregate chart: include function AND interval. Scatter chart: omit function and interval. Use list_fields to discover valid metric_id values and their supported chart types.
Inputs
chart_inputsarrayrequired- Chart specifications, each a dict with: metric_id (str, required) â 'aggregation:...' or 'AI:<uuid>' from list_fields. function (str) â one of Average, Median, Count, Sum, Max, Min, Cumulative, Rolling Average; must be in the metric's chart_functions. interval (str) â one of day, week, month, quarter. function and interval MUST be provided together (aggregate chart) or both omitted (scatter chart; the metric must have 'scatter' in chart_types). metric_arguments (dict, optional) â check required_arguments from list_fields. For contact-scoped metrics (question_count, talk_time, minutes_late) you MUST pass {"scope": "internal"} or {"scope": "external"}. "internal" = interviewers/hiring team, "external" = non-team participants (candidates, clients, etc.). function_arguments (dict, optional) â for Rolling Average pass {"windowIntervalCount": <int>}.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
filtersstring- Filter objects, each {field_id, operation, value}, scoping which conversations are charted. Filter value formats are data, not prose: list_fields returns a filter_formats map (operations + value_format per field type; a field's type key selects its entry). IMPORTANT: date filter values are a dict, not a bare date string. Example: {"field_id": "default:start_time", "operation": "after", "value": {"scope": "relative", "value": -2592000}}
groupstring- Field ID (e.g. 'OSPT:<uuid>', 'default:interviewer') to scope the chart to conversations that have a value for this field. This is a filter, NOT a breakdown â it does not split the chart per group member; for per-group metrics use group_conversations. Must be a field ID, never a metric ('aggregation:...') ID.
min_countinteger- Minimum conversations per group when group is set (default 0).default
0 only_show_recorded_conversationsboolean- True (default): chart only recorded conversations. False: also include unrecorded ones (calls that were not captured, or upcoming).default
true report_idstring- UUID of a saved report (from search_reports) to use as the base filter set. Filters passed alongside apply on top.
timezone_offset_minutesinteger- Timezone offset in minutes for date bucketing (default 0 = UTC). Aggregate charts only.default
0
metaviewmcp_get_enrichment_statusGet the workspace's enrichment credit status, usage breakdown, and optionally list individual enrichment attempts.Read-onlyCheck enrichment status
Get the workspace's enrichment credit status, usage breakdown, and optionally list individual enrichment attempts. Always returns monthly credit allowance and remaining balance, usage breakdown by enrichment type, and active top-up credit purchases. Optionally returns per-user usage breakdown and individual enrichment attempts.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
enrichment_typestring- Filter attempts by type (email or phone). Only used when include_enrichment_attempts=true.
include_enrichment_attemptsboolean- True: append the list of individual enrichment attempts. Default false.default
false include_usage_by_userboolean- True: include the per-user usage breakdown (admin only). Default false.default
false limitinteger- Attempts per page (default 50; values above 100 are clamped to 100).default
50 monthstring- Month to report on as YYYY-MM (e.g. "2026-01"). Scopes usage, usage_by_user, and enrichment_attempts to that calendar month; omit for the current month to date. Does NOT affect 'credits', which is always the live balance. Usage comes from the workspace's current credit system, so months before a switch to shared credits show 0.
offsetinteger- Pagination offset for attempts (default 0).default
0 person_idstring- Filter usage and attempts to this person (admin only). Non-admins always see only their own data regardless of this parameter.
metaviewmcp_get_note_templateFetch a single AI Notes custom template with its full section configuration.Read-onlyGet note template
Fetch a single AI Notes custom template with its full section configuration. Use list_note_templates first if you don't have a template ID.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
template_idstringrequired- Template UUID (from list_note_templates). INTERNAL ONLY â never show this id to the user; refer to templates by name.
metaviewmcp_get_platform_credits<usecase>Get the workspace's credit position: balance, allowance, spend by product and person, runway, and per-person user limits.Read-onlyGet Platform Credits
<usecase>Get the workspace's credit position: balance, allowance, spend by product and person, runway, and per-person user limits. Read from the credit ledger, so it is what was actually charged.</usecase> <instructions>basis decides the usage window: PLAN reports the current plan cycle, USAGE_BASED the billing period, and POOLS all time since the first grant or charge (a member with a user limit gets their limit's period). Admins see the whole workspace, allowance, runway, and usage_by_cycle; members see only their own spend and limit, plus the balance when they have no limit. Set include_people for spend per person. usage_by_cycle covers up to 12 completed cycles plus the current one: plan cycles while a plan runs, calendar months otherwise. Runway fields another basis lacks are null.</instructions> <response_format> {"basis", "user_limits_reset_at", "usage_billing_until", "allowance": {"total_credits", "used_credits", "remaining_credits", "other_credits_available"} | null, "balance": {"credits", "is_unlimited", "next_expiry_at"} | null, "usage": {"starts_at", "ends_at", "credits", "actions", "by_product": [{"product", "credits", ...}]}, "by_person"?: [{"person_id", "name", "credits", "actions", "by_product", ...}], "runway": {"daily_credits", "runs_out_at", "plan_runs_out_at", "resets_at", "usage_billing_until", "warning"} | null, "user_limits": [{"person_id", "name", "monthly_credits", "spent_credits", "headroom_credits", "at_limit"}], "usage_by_cycle": [{"starts_on", "credits", "actions", "by_product"}]} </response_format>
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
include_peopleboolean- Include spend per person, highest first. Members only ever see their own row.default
false
metaviewmcp_get_screen_detailsGet the full state of one Screening screen: the live interview plan, whether the draft holds unpublished edits, the plan version history, the candidate roster by stage, and the distribution of overall fit across everyone interviewed.Read-onlyView screen details
Get the full state of one Screening screen: the live interview plan, whether the draft holds unpublished edits, the plan version history, the candidate roster by stage, and the distribution of overall fit across everyone interviewed. Read this before reasoning about a screen. Pair with list_screen_candidates and get_screen_interview.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
screen_idstringrequired- The screen to inspect (UUID from list_screens).
detail_levelstring- 'full' (default): the live interview plan with every question and rubric, version history, roster counts, and fit distribution. 'concise': active version, unpublished-edit flags, and roster counts, with no plan content.one of
concisefulldefaultfull plan_versionstring- Return the interview plan of a specific published version instead of the live one â the version number shown in version_history and the web app. Omit for the ACTIVE version. Only available at detail_level='full'.
metaviewmcp_get_screen_interviewRead the scorecard for one candidate's interview on a screen: overall fit, a summary, every planned question with the fit it earned, the evidence behind it, what it left unproven, and authenticity signals.Read-onlyView interview scorecard
Read the scorecard for one candidate's interview on a screen: overall fit, a summary, every planned question with the fit it earned, the evidence behind it, what it left unproven, and authenticity signals. Use this to justify, challenge, or compare an outcome. Find candidates with list_screen_candidates.
Inputs
candidate_idstringrequired- The candidate whose interview to read (from list_screen_candidates).
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
screen_idstringrequired- The screen the interview belongs to (UUID from list_screens).
metaviewmcp_get_search_detailsGet the full state of a sourcing search: the current ICP (Ideal Candidate Profile), ICP version history, calibration progress (feedback counts and acceptance rate), pack history, and the agent's current phase.Read-onlyGet search details
Get the full state of a sourcing search: the current ICP (Ideal Candidate Profile), ICP version history, calibration progress (feedback counts and acceptance rate), pack history, and the agent's current phase. Answers search questions instantly instead of messaging the agent with send_sourcing_message, which takes minutes to respond.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
search_idstringrequired- The search UUID to inspect.
icp_versionstring- Return a specific ICP version's content instead of the latest. Discover existing versions from icp_versions in the response.
metaviewmcp_get_sourcing_analyticsGet aggregate sourcing metrics for your workspace with flexible filtering and grouping.Read-onlyGet sourcing analytics
Get aggregate sourcing metrics for your workspace with flexible filtering and grouping. Answers questions like: how many searches/candidates/feedback events in a time period, what is the acceptance rate overall or per user/search, who created the most searches, weekly/monthly trends of sourcing activity. Metric options: acceptance_rate, accepted, candidates, searches, seat_utilization, and more.
Inputs
metricstringrequired- What to measure. Counts (searches, candidates, feedback, accepted, rejected, maybe, candidates_without_feedback, scheduled_searches, searches_with_sequences), acceptance_rate (percentage), or seat_utilization (admin-only).one of
searchescandidatesfeedbackacceptedrejectedmaybeacceptance_ratecandidates_without_feedbackscheduled_searchessearches_with_sequencesseat_utilization rationalestringrequired- Always provide a brief explanation of why you are calling this tool
end_datestring- Custom range end, ISO date (YYYY-MM-DD).
group_bystring- Break results into groups. day/week/month give time series (ungrouped totals otherwise); user/search/mode/feedback_value give per-entity breakdowns.
include_archivedboolean- Include archived searches (default false).default
false limitinteger- Max groups per page (default 20; values above 100 are clamped to 100).default
20 offsetinteger- Pagination offset for grouped results (default 0).default
0 search_idstring- Filter to a specific search (UUID). Must be accessible to the caller.
start_datestring- Custom range start, ISO date (YYYY-MM-DD). Overrides time_period.
time_periodstring- Shorthand time filter. Ignored when start_date is provided.
user_idstring- Admin only: filter to one team member's data by person ID. Ignored for non-admins (own data only).
metaviewmcp_get_sourcing_messagesRetrieve the conversation history for a sourcing search.Read-onlyGet sourcing messages
Retrieve the conversation history for a sourcing search. Returns messages between you and the sourcing agent, including text messages and structured attachments. Poll this after sending a message. The agent phase indicates progress: busy (still working), idle/waiting (finished), error (something went wrong).
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
search_idstringrequired- The search UUID to retrieve messages for.
limitinteger- Messages per page (default 50; values above 200 are clamped to 200).default
50 offsetinteger- Pagination offset (default 0). Messages are ordered chronologically.default
0
metaviewmcp_get_user_contextIMPORTANT: Call this tool FIRST, before any other tool.Read-onlyGet my info
IMPORTANT: Call this tool FIRST, before any other tool. Returns your identity, role, and what data you can access — including workspace_name, participant_id, user_id, is_admin, is_paying_plan, and data_access description. The data_access field describes exactly which conversations you can see.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_group_conversationsGroup conversations by a field and compute metrics.Read-onlyGroup conversations
Group conversations by a field and compute metrics. Returns counts and metric values per group. Use for breakdowns, distributions, rankings, or 'by X' questions. Powerful pattern: create an AI field to extract data, then group by that field to see distribution of values.
Inputs
group_bystringrequired- Field ID to group by (e.g. 'OSPT:<uuid>', 'default:interviewer', 'AI:<uuid>'). Use list_fields to find fields where groupable is true.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
filtersstring- Filter objects, each {field_id, operation, value}, scoping which conversations are grouped. Filter value formats are data, not prose: list_fields returns a filter_formats map (operations + value_format per field type; a field's type key selects its entry). IMPORTANT: date filter values are a dict, not a bare date string. Example: {"field_id": "default:start_time", "operation": "after", "value": {"scope": "relative", "value": -2592000}}
limitinteger- Groups per page (default 20; values above 100 are clamped to 100).default
20 metricsstring- Metrics to compute per group. Each dict: metric_id (required, 'aggregation:...' or 'AI:<uuid>' from list_fields), function ('mean'|'median'|'sum'|'max'|'min'; default 'mean'), metric_arguments (optional dict â check required_arguments from list_fields. For contact-scoped metrics (question_count, talk_time, minutes_late) you MUST pass {"scope": "internal"} or {"scope": "external"}. "internal" = interviewers/hiring team, "external" = non-team participants (candidates, clients, etc.).)
min_conversation_countinteger- Minimum conversations a group must have to be included (default 0).default
0 offsetinteger- Pagination offset over groups (default 0).default
0 only_show_recorded_conversationsboolean- True (default): group only recorded conversations. False: also include unrecorded ones (calls that were not captured, or upcoming).default
true report_idstring- UUID of a saved report (from search_reports) to use as the base filter set. Filters passed alongside apply on top.
search_termstring- Filter groups by name substring. Prefer this over fetching all groups when looking for a specific one.
sort_ascendingboolean- Sort ascending (default true); applies to sort_metric, or to the alphabetical label order when sort_metric is omitted.default
true sort_metricstring- How to sort groups: {metric_id, function ('mean'|'median'|'sum'|'max'|'min'), metric_arguments?} â same shape as metrics entries. Omit to sort groups alphabetically by label.
metaviewmcp_list_application_review_candidatesList the review's ADMITTED (ranked) roster, ranked against the ACTIVE ICP.Read-onlyList application review candidates
List the review's ADMITTED (ranked) roster, ranked against the ACTIVE ICP. Reports the coarse fit band, human decision, agent fit reasoning, and (at detail_level=full) AI column results including fraud risk. Use fetch_candidates with the candidate_id and this application_review_id for a candidate's full profile or resume.
Inputs
application_review_idstringrequired- The review to list candidates for (UUID from list_application_reviews).
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
decision_filterstring- Filter by human decision. The per-candidate decision field reads PROGRESSED, REJECTED, or null; 'undecided' matches a null decision.one of
allprogressedrejectedundecideddefaultall detail_levelstring- 'minimal': candidate_id, name, fit band, decision, applied_at. 'summary' (default): plus decided_at, decision_feedback, and the agent's fit reasoning. 'full': plus AI column results, including fraud risk when enabled (type='fraud_detection', LOW / MEDIUM / HIGH, advisory; active human corrections replace the original value and reasoning).one of
minimalsummaryfulldefaultsummary fit_filterstring- Only candidates in this fit band. Omit for all bands.
limitinteger- Candidates per page (default 20; values above 100 are clamped).default
20 offsetinteger- Pagination offset (default 0).default
0
metaviewmcp_list_application_review_rejection_optionsList the rejection options for an Application Review's connected ATS: which rejection fields a REJECT requires, the valid rejection reason ids, and the valid rejection email template ids.Read-onlyList application review rejection options
List the rejection options for an Application Review's connected ATS: which rejection fields a REJECT requires, the valid rejection reason ids, and the valid rejection email template ids. Call this before a REJECT via give_application_review_candidate_feedback so the decision carries every field the ATS requires and only valid ids.
Inputs
application_review_idstringrequired- The review to list rejection options for (UUID from list_application_reviews).
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_list_application_reviewsList the Application Reviews you can access, with summary information per review: ATS job, run state, active ICP version summary, whether a pending ICP draft exists, whether a rerank is in flight, and admitted/pending candidate counts.Read-onlyList application reviews
List the Application Reviews you can access, with summary information per review: ATS job, run state, active ICP version summary, whether a pending ICP draft exists, whether a rerank is in flight, and admitted/pending candidate counts. Results are scoped to reviews you can access via ATS hiring-team membership, admin access, or an explicit share.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
include_archivedboolean- Include archived reviews (default false).default
false limitinteger- Reviews per page (default 20; values above 50 are clamped).default
20 offsetinteger- Pagination offset (default 0).default
0 search_termstring- Case-insensitive substring match on the job title. Omit to list all.
metaviewmcp_list_ats_jobsList active jobs in the workspace's connected ATS (Applicant Tracking System).Read-onlyList ATS jobs
List active jobs in the workspace's connected ATS (Applicant Tracking System). Use this to find the ATS job to post sourcing candidates to with post_sourcing_candidates_to_ats. The response also reports posting_disabled_reason if candidates currently cannot be posted to the ATS.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
limitinteger- Jobs per page (default 20; values above 100 are clamped to 100).default
20 offsetinteger- Pagination offset (default 0).default
0 posting_typestring- Posting type to inspect. Omit to preserve the workspace default.
querystring- Optional title search to filter jobs (e.g. 'engineer').
metaviewmcp_list_ats_stagesList the application stages for a job in the workspace's connected ATS.Read-onlyList ATS stages
List the application stages for a job in the workspace's connected ATS. Use this to find the stage_id to post sourcing candidates into with post_sourcing_candidates_to_ats. Providing a stage is optional — when omitted, candidates land in the ATS default stage for the job.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
job_idstring- The ATS job ID (from list_ats_jobs). Omit to list workspace-level stages for ATSes where stages are not job-specific.
posting_typestring- Posting type selected from list_ats_jobs. Omit to preserve the workspace default.
metaviewmcp_list_field_valuesGet possible values for a specific field.Read-onlyList field values
Get possible values for a specific field. Use this to discover what values are available for filtering — e.g., all department names, interviewer names, or job titles. Essential for looking up person IDs needed by PERSON-type and PARTICIPANT-type filters. Use search_term when looking for a specific value.
Inputs
field_idstringrequired- The field ID (from list_fields), e.g. 'OSPT:<uuid>', 'default:interviewer', 'default:candidate'.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
filtersstring- Optional filter objects ({field_id, operation, value}) to scope which conversations contribute values. Formats: see list_fields' filter_formats map.
limitinteger- Values per page (default 50).default
50 offsetinteger- Pagination offset (default 0).default
0 only_show_recorded_conversationsboolean- True (default): only values from recorded conversations. False: also include unrecorded ones.default
true report_idstring- Optional report UUID; scope values to conversations in that report.
search_termstring- Filter values by name/label; substring and regex supported. For people, prefer 'First Last' together.
metaviewmcp_list_fieldsList available fields for filtering, grouping, and columns, plus metrics.Read-onlyList available fields
List available fields for filtering, grouping, and columns, plus metrics. Returns two separate lists: fields (filter/grouping field metadata with IDs like 'default:start_time', 'OSPT:<uuid>', or 'AI:<uuid>') and metrics (computed summaries for charting with IDs like 'aggregation:session_count'). Use search_term to find specific fields instead of fetching all.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
field_idsstring- Exact field or metric IDs to look up (e.g. 'OSPT:<uuid>', 'aggregation:session_count'). Takes precedence over search_term.
limitinteger- Fields per page (default 100). Metrics are returned on the first page (offset=0) and for field_ids lookups.default
100 offsetinteger- Pagination offset over fields (default 0).default
0 report_idstring- Optional report UUID to scope fields to that report's context.
search_termstring- Ranked name search: exact and substring/regex matches first, then closest fuzzy matches. Prefer this over fetching all fields.
metaviewmcp_list_mailboxesList the email mailboxes you can send sequence emails from.Read-onlyList mailboxes
List the email mailboxes you can send sequence emails from. Returns your own active mailboxes plus any mailboxes where you have send-on-behalf-of permission. Use the mailbox id as from_mailbox_id when creating EMAIL steps in a sequence.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_list_note_template_groupsList the public folders (template groups) in the caller's workspace.Read-onlyList note template folders
List the public folders (template groups) in the caller's workspace. Use this when the user wants to move a template into a named folder — call list_note_template_groups first to resolve the folder name, then pass it to manage_note_template. Templates not in any public folder live in the caller's personal folder.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_list_note_templatesList AI Notes custom templates the caller can access.Read-onlyList note templates
List AI Notes custom templates the caller can access. Returns a lightweight summary per template. Pass include_detail=true or call get_note_template for the full sections.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
include_detailboolean- True: include each template's full sections list. Default false.default
false limitinteger- Templates per page (default 20; values above 50 are clamped to 50).default
20 offsetinteger- Pagination offset (default 0).default
0 search_termstring- Filter templates by name (case-insensitive substring / regex).
metaviewmcp_list_screen_candidatesList the candidates on one screen with their stage, interview outcome, and decision.Read-onlyList screen candidates
List the candidates on one screen with their stage, interview outcome, and decision. Filter to stage='screened' for the review queue, then call get_screen_interview to read the scorecard behind a candidate's fit. Candidates are returned best-fit first.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
screen_idstringrequired- The screen whose candidates to list (UUID from list_screens).
detail_levelstring- 'minimal' (default): candidate id, name, stage, overall fit, decision. 'medium': also the scorecard's one-paragraph summary of the candidate (bluf), interview status, completion timestamp, decision feedback, and authenticity signals.one of
minimalmediumdefaultminimal limitinteger- Candidates per page (default 20; values above 100 are clamped).default
20 offsetinteger- Pagination offset (default 0).default
0 stagestring- Only return candidates at this stage; omit for the whole roster. 'screened' is the review queue awaiting a human decision.
metaviewmcp_list_screensList the Screening screens you can access, with summary information per screen: ATS job posts, run state, active plan version, whether the draft holds unpublished edits, and candidate roster by stage.Read-onlyList screens
List the Screening screens you can access, with summary information per screen: ATS job posts, run state, active plan version, whether the draft holds unpublished edits, and candidate roster by stage. Use this to find a screen, then call get_screen_details for its interview plan or list_screen_candidates for its roster.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
include_archivedboolean- Include archived screens (default false).default
false limitinteger- Screens per page (default 20; values above 50 are clamped to 50).default
20 offsetinteger- Pagination offset (default 0).default
0 search_termstring- Case-insensitive substring match on the job title. Omit to list all.
metaviewmcp_list_sequence_candidatesList candidates enrolled in a sequence, or get a specific candidate's full journey.Read-onlyList candidates in sequence
List candidates enrolled in a sequence, or get a specific candidate's full journey. Non-admins can only access sequences they created. By default returns a summary per candidate. Use include_detail for per-step delivery status, and include_messages to see email content. Pass candidate_sequence_id for a specific candidate's full detail.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
candidate_sequence_idstring- Fetch one candidate's full journey directly by enrollment UUID. When provided, include_detail and include_messages are implied.
include_detailboolean- True: include per-step delivery status (sent, delivered, opened, replied, bounced, skipped) and candidate_sequence_step_id per step (required for updates via manage_candidate_sequence). Default false.default
false include_messagesboolean- True: include email content for all sent steps. Requires include_detail. Default false.default
false limitinteger- Candidates per page (default 50; values above 100 are clamped to 100).default
50 offsetinteger- Pagination offset (default 0).default
0 search_termstring- Filter by candidate name (case-insensitive substring match).
sequence_idstring- Sequence UUID. Required unless candidate_sequence_id is provided.
statusstring- Filter by enrollment status. Omit to see all statuses.
metaviewmcp_list_sequencesList sequences the current user has access to, or get full details for a specific sequence.Read-onlyList sequences
List sequences the current user has access to, or get full details for a specific sequence. Admins can see all sequences in the workspace. Non-admins can only see sequences they created. Archived sequences are always excluded. Returns summary data including per-sequence stats.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
created_by_person_idstring- Only return sequences created by this person ID. Non-admins may only pass their own person ID.
include_detailboolean- True: include full step configuration for each sequence. Default false (summary only).default
false include_disabledboolean- Include disabled sequences (default true).default
true limitinteger- Sequences per page (default 20; values above 50 are clamped to 50).default
20 offsetinteger- Pagination offset (default 0).default
0 search_termstring- Filter sequences whose name contains this substring (case-insensitive). Regex is supported when the term contains special characters like .*+?[]|().
sequence_idstring- UUID of one sequence to fetch with full detail (steps, templates, schedules). When provided, include_detail is implied and other filters are ignored.
metaviewmcp_list_sourcing_candidatesList candidates surfaced in a sourcing search with profile summaries and feedback status.Read-onlyList sourcing candidates
List candidates surfaced in a sourcing search with profile summaries and feedback status. Returns candidates ordered by when they were surfaced (newest first). Detail levels: 'minimal' (id/name/linkedin only), 'summary' (default, includes reasoning sections), 'full' (includes full profile data). Filter by pack or feedback_status.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
search_idstringrequired- The search UUID to list candidates for.
detail_levelstring- How much data per candidate: 'minimal' = candidate_id, name, linkedin_url only (smallest, best for ID lists); 'summary' (default) adds the sourcing agent's reasoning summary sections; 'full' adds the full profile (location, experience, education, skills) â larger, but avoids separate fetch_candidates calls.one of
minimalsummaryfulldefaultsummary feedback_statusstring- Filter by feedback status: 'all' (default), 'unreviewed' (no feedback yet), or 'yes'/'no'/'maybe' (latest verdict).one of
allunreviewedyesnomaybedefaultall limitinteger- Candidates per page (default 20; values above 100 are clamped to 100).default
20 offsetinteger- Pagination offset (default 0).default
0 packstring- Filter to one pack (candidate batch, 1-based). Omit to list all candidates.
metaviewmcp_list_sourcing_knowledge<usecase> List the sourcing knowledge base â reusable instructions the sourcing agent applies while running searches (e.g.Read-onlyList Sourcing Knowledge
<usecase> List the sourcing knowledge base â reusable instructions the sourcing agent applies while running searches (e.g. target companies, sourcing preferences, evaluation guidance). Returns workspace-scoped entries plus your own personal entries. Call this before manage_sourcing_knowledge to check whether an entry already covers a topic â prefer updating an existing entry over creating a near-duplicate. </usecase> <instructions>name is the trigger (WHEN the agent should apply the entry); content is the instruction (WHAT to do). disabled=true means you personally opted out of that entry. Always-enabled entries ignore all personal opt-outs; can_toggle=false means the caller cannot opt out. is_editable=false entries are locked by an admin or owned by someone else.</instructions> <response_format>{"knowledge": [{"id", "name", "content", "scope", "disabled", "is_locked", "is_always_enabled", "can_toggle", "is_editable", "created_at", "updated_at"}], "total_count"}</response_format> <data_model>See get_search_details for the sourcing data model definitions (searches, agent phases, candidates, feedback, ICPs, scheduled searches, search-sequence links, posting to ATS).</data_model>
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_list_sourcing_searchesList your sourcing and research searches with summary information.Read-onlyList sourcing searches
List your sourcing and research searches with summary information. Returns enough detail per search (title, mode, candidate count, agent phase, timestamps) that a separate get-search tool is not needed. Use to see all active searches, find a specific search to resume, or check which searches have candidates waiting for feedback.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
limitinteger- Searches per page (default 20; values above 50 are clamped to 50).default
20 offsetinteger- Pagination offset (default 0).default
0
metaviewmcp_search_conversationsSearch conversations with filters and get tabular data.Read-onlySearch conversations
Search conversations with filters and get tabular data. Returns individual conversations matching the given filters, with configurable fields showing attribute values for each conversation. Scale-aware strategy: use fields=['default:transcript'] for 1-5 conversations, fields=['default:summary'] for 5-20, and AI fields for 20+. Supports report_id, filters, fields, pagination, and sorting.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
conversation_idsstring- Fetch specific conversations by numeric ID (max 100). When provided, report_id and filters are ignored.
fieldsstring- Field IDs to return as columns (default: the report's configured fields or a small default set). Request 'default:transcript' (large â keep limit at 5 or fewer) or 'default:summary' (slow on-the-fly generation) deliberately.
filtersstring- Filter objects, each {field_id: str, operation: str, value: <per field type>}. Get field IDs, operations, and per-type value formats from list_fields (filter_formats map); get valid values from list_field_values. Date values are dicts, never bare date strings: {"scope": "relative", "value": -2592000} = last 30 days; {"scope": "absolute", "value": ["2024-01-01T00:00:00Z", "2024-02-01T00:00:00Z"]} = a fixed range. Use "$self" as a person/participant value for the authenticated user.
limitinteger- Conversations per page (default 20; values above 50 are clamped to 50). Keep low when requesting 'default:transcript'.default
20 offsetinteger- Pagination offset (default 0).default
0 only_show_recorded_conversationsboolean- True (default): only recorded conversations. False: also include unrecorded ones (calls that were not captured, or upcoming).default
true report_idstring- UUID of a saved report (from search_reports) to use as the base filter set. Filters passed alongside apply on top of the report's saved filters.
sort_ascendingboolean- Sort ascending. Default false â newest first when sorting by date.default
false sort_bystring- Field ID to sort by (default: default:start_time).
metaviewmcp_search_reportsList saved reports the user has access to, or fetch full details for specific reports.Read-onlySearch reports
List saved reports the user has access to, or fetch full details for specific reports. A report is a saved configuration — a named set of filters, fields, grouping, and charts. Pass a report's ID to search_conversations, group_conversations, or get_chart_data to reuse its saved filters.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
categorystring- Filter reports by category.
include_detailboolean- True: return each report's full configuration (filters, fields, grouping, metrics, charts). Default false: summary only.default
false limitinteger- Reports per page (default 20; values above 100 are clamped to 100).default
20 offsetinteger- Pagination offset (default 0).default
0 report_idsstring- Report UUIDs to fetch. When provided, only these reports are returned and the other filters are ignored.
search_termstring- Filter reports by name (case-insensitive). Supports substring matching and regex patterns (auto-detected).
sort_keystring- Sort field (default: updated_at).
sort_orderstring- Sort direction (default: desc).
metaviewmcp_search_snippets<usecase> Find the moments in ONE conversation that match a request (e.g.Read-onlySearch Snippets
<usecase> Find the moments in ONE conversation that match a request (e.g. 'where they explain why they are leaving'), returning up to 5 clip previews with their transcript. Read-only: nothing is saved. Find the conversation first with search_conversations. To search several conversations, call this once per conversation. To save a clip the user wants to keep or share, pass the chosen preview's start_ms/end_ms to create_snippet, once per clip. </usecase> <instructions>Phrase the request as the moment you want, not a keyword list. Previews are ranked best match first; read their transcripts and pick the best 1-2 before creating snippets. Quote times to the user with the M:SS range. No previews means no strong match: rephrase once, or tell the user.</instructions> <response_format> {"conversation_id", "conversation_url", "previews": [{"start_ms", "end_ms", "range": "M:SS-M:SS", "transcript": "Speaker: text ..."}]} </response_format> <access_scope>Results are scoped server-side to data the authenticated user can already access in Metaview, within their workspace and role.</access_scope>
Inputs
conversation_idintegerrequired- Numeric conversation ID from search_conversations.
promptstringrequired- The moment to find, in plain language (1-600 characters).
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_create_reportCreate a new report or update an existing one in the Metaview web-app.WriteCreate report
Create a new report or update an existing one in the Metaview web-app. Only use this when the user explicitly asks to create or edit a saved report. To create: omit report_id and provide filters. To update: provide report_id. After creating or updating, share the url from the response with the user.
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
descriptionstring- Optional report description, maximum 10 words. Omit or pass null to leave unchanged; pass an empty string to remove an existing description.
expand_rowsstring- Show grouped report rows expanded in the web-app UI.
field_idsstring- Field IDs (from list_fields) shown as the report's table columns.
filtersstring- Filter objects ({field_id, operation, value}) defining which conversations the report covers. REQUIRED when creating (report_id omitted) â pass an empty list [] for all conversations. When updating, omit to leave filters unchanged. Filter value formats are data, not prose: list_fields returns a filter_formats map (operations + value_format per field type; a field's type key selects its entry). IMPORTANT: date filter values are a dict, not a bare date string. Example: {"field_id": "default:start_time", "operation": "after", "value": {"scope": "relative", "value": -2592000}}
groupstring- Field ID to group the report by (e.g. 'OSPT:<uuid>'; groupable=true in list_fields). Mutually exclusive with remove_grouping â never pass both.
metricsstring- Metrics computed per group on a grouped report. Each dict: metric_id (required, 'aggregation:...' or 'AI:<uuid>' from list_fields), function ('mean'|'median'|'sum'|'max'|'min'; default 'mean'), metric_arguments (optional dict â check required_arguments from list_fields). Defaults are applied when creating a grouped report without metrics.
min_group_conversation_countstring- Minimum conversations a group must have to appear in a grouped report.
namestring- Report name shown in the Reports list.
only_show_recorded_conversationsstring- True: the report covers only recorded conversations (creation default). False: also include unrecorded ones. Omit on update to leave unchanged.
remove_groupingboolean- True: remove the report's existing grouping (update only). Mutually exclusive with group â never pass both.default
false report_idstring- UUID of an existing report to update. Omit to create a new report. On update, only the parameters you provide change.
sort_ascendingboolean- Sort direction for sort_field (default true = ascending).default
true sort_fieldstring- Field ID to sort conversation rows by (applied together with field_ids). Mutually exclusive with sort_metric, which sorts groups instead â never pass both.
sort_metricstring- How to sort groups on a grouped report: {metric_id, function ('mean'|'median'|'sum'|'max'|'min'), metric_arguments?} â same shape as metrics entries. Mutually exclusive with sort_field, which sorts conversation rows instead â never pass both.
sort_metric_ascendingboolean- Sort direction for sort_metric (default true = ascending).default
true
metaviewmcp_create_snippet<usecase> Save ONE clip of a conversation as a snippet and return links to it.WriteCreate Snippet
<usecase> Save ONE clip of a conversation as a snippet and return links to it. The snippet appears on the conversation's snippets tab and gets its own share link. Call once per clip. Take times from search_snippets previews (preferred), or from the '@M:SS-M:SS' transcript lines of search_conversations for a moment you found yourself. </usecase> <instructions>Create only the clips the user wants, usually the best 1-2. Write a short title (max 7 words) and a one-sentence note on why the moment matters; omitted copy is generated but slower. share_scope defaults to anyone_in_org. Use anyone_with_link ONLY when the user explicitly asks for a public or external link; never infer it. Give the user share_link.url when present, otherwise snippets_tab_url (it lists every snippet on the conversation), and say whether the link is public.</instructions> <response_format> {"conversation_id", "snippet": {"snippet_id", "start_ms", "end_ms", "range", "title", "note"}, "snippets_tab_url", "share_link": {"url", "scope"} | null} </response_format> <notes>Safe to retry: the same clip range on the same conversation returns your existing snippet instead of saving a duplicate. Clip video takes about a minute to render after creation. Workspace sharing settings can narrow or remove the share link; the message explains why.</notes> <access_scope>Results are scoped server-side to data the authenticated user can already access in Metaview, within their workspace and role.</access_scope>
Inputs
conversation_idintegerrequired- Numeric conversation ID the clip comes from.
end_msintegerrequired- Clip end, in milliseconds. The clip is at most 300 seconds and must lie within the transcript.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
start_msintegerrequired- Clip start, in milliseconds from the start of the conversation.
notestring- One sentence on what the moment reveals and why it matters. Omit to generate one.default
share_scopestring- Who can open the share link. anyone_in_org (default): signed-in members of the workspace. anyone_with_link: PUBLIC, no sign-in needed; only when the user explicitly asks.one of
anyone_in_organyone_with_linkdefaultanyone_in_org titlestring- Short title, at most 7 words. Omit to generate one (slower).default
metaviewmcp_enrich_candidate_contactsEnrich email addresses or phone numbers for one or more candidates.WriteEnrich candidate contacts
Enrich email addresses or phone numbers for one or more candidates. Uses workspace enrichment credits and starts an asynchronous contact lookup. Never call this until the user has received the required credit estimate and given a final explicit go-ahead. Pair with get_enrichment_status to check credits before calling and to poll enrichment progress after.
Inputs
candidate_idsarrayrequired- Candidate UUIDs to enrich (non-empty). Only the first 100 eligible candidates are processed per call â the rest are dropped from this run and reported in truncated_candidate_count; retry with the remainder.
enrichment_typestringrequired- Contact type to enrich. Costs 3 credits per net-new email or 10 credits per net-new phone number; a candidate may yield multiple contacts.one of
emailphone rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_generate_notesGenerate (or regenerate) AI Notes for a conversation, optionally with a specific template.WriteGenerate notes
Generate (or regenerate) AI Notes for a conversation, optionally with a specific template. Use this to trigger notes generation for a conversation that has no notes yet, regenerate notes using a different template, or preview how a newly created or updated template renders on a real conversation.
Inputs
conversation_idstringrequired- No description.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
templatestring- Template to use; omit to auto-select the best template for the conversation. Pass 'custom_definition' together with template_definition_id to use a custom note template; every other value is a built-in template.
template_definition_idstring- UUID of a custom note template (from list_note_templates). Required when template='custom_definition'; must be omitted for any other template value.
metaviewmcp_give_sourcing_feedbackSubmit feedback on one or more candidates in a sourcing search.WriteGive sourcing feedback
Submit feedback on one or more candidates in a sourcing search. Feedback calibrates the sourcing agent — accepting or rejecting candidates helps it refine its search. Supports bulk feedback for up to 50 candidates per call. Set request_refinement to true to have the agent refine its search immediately, or omit it and use send_sourcing_message afterward to trigger the refinement.
Inputs
feedbacksarrayrequired- Feedback objects, each {candidate_id: str, accepted: str, text?: str}. accepted must be one of YES, MAYBE, or NO; text is optional free-text explaining the decision. Maximum 50 items per call.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
search_idstringrequired- UUID of the search containing the candidates.
request_refinementboolean- Set true on your final feedback batch to trigger the agent to act on ALL accumulated feedback for this search (not just this batch): it derives rejection themes, refines the ICP, and delivers a revised candidate batch (5-15 minutes; same as the app's 'Refine search' button). Only fires when at least one item in this call succeeded. Default false: feedback is recorded and nothing else happens.default
false
metaviewmcp_manage_notes_sourcesList, add, or remove sources on an existing AI Notes version.WriteManage notes sources
List, add, or remove sources on an existing AI Notes version. Use this to inspect which conversations and documents are included in a notes version, add extra conversations so notes cover multiple interviews, add a plain-text document as context, or remove a previously added source. The notes must already exist — call generate_notes first if they do not.
Inputs
actionstringrequired- The operation to perform: list, add, or remove.one of
listaddremove conversation_idstringrequired- No description.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
conversation_idsstring- Conversation IDs to add (action=add) or remove (action=remove). Added conversations must have transcripts.
documentsstring- Plain-text documents to add (action=add only). Each entry is {"name": short name (e.g. "Resume - Jane Smith"), "content": full text} â both fields required.
source_idsstring- Source UUIDs to remove (action=remove only), as returned by a prior 'list' call. Use for document sources or when the source ID is already known.
metaviewmcp_manage_sourcing_knowledge<usecase> Create, update, or archive a sourcing knowledge entry (dispatch on action).WriteManage Sourcing Knowledge
<usecase> Create, update, or archive a sourcing knowledge entry (dispatch on action). Knowledge entries are standing instructions the sourcing agent applies to every matching search â use them to teach the agent durable facts and preferences (target companies, disqualifiers, outreach rules), not one-off search tweaks. Call list_sourcing_knowledge first and update an existing entry instead of creating a near-duplicate. Archiving is permanent in the UI (no unarchive) and rejects any pending suggestions for the entry. </usecase> <instructions>Write name as the trigger condition (when to apply, e.g. 'When sourcing for engineering roles') and content as direct instructions to the agent. scope=workspace applies to everyone in the workspace; scope=personal applies only to you. Workspaces can restrict creating workspace entries (or moving entries into workspace scope) to admins; entry owners can edit their own unlocked entries. Archiving always-enabled entries requires an admin; changing their scope requires turning off the workspace policy first. update only changes the fields you pass.</instructions> <response_format> Create / update: {"knowledge": {"id", "name", "content", "scope", ...}} Archive: {"archived": true, "knowledge_id"} </response_format>
Inputs
actionstringrequired- The operation to perform: create, update, or archive.one of
createupdatearchive rationalestringrequired- Always provide a brief explanation of why you are calling this tool
contentstring- The instruction: WHAT the agent should do when the trigger matches (max 2,000 chars). Write direct, specific guidance. Required for create; optional for update.
knowledge_idstring- Knowledge entry UUID. Required when action=update or archive.
namestring- The trigger: WHEN the agent should apply this entry (max 1,000 chars, e.g. 'When sourcing for sales roles in EMEA'). Required for create; optional for update.
scopestring- workspace = applies to every user's searches; personal = only yours. Required for create; on update, only pass to change the scope.
metaviewmcp_post_sourcing_candidates_to_atsPost candidates from a sourcing search to the workspace's connected ATS, creating each candidate there if they don't already exist and adding an application to the given job.WritePost candidates to ATS
Post candidates from a sourcing search to the workspace's connected ATS, creating each candidate there if they don't already exist and adding an application to the given job. The sourcing agent's reasoning is posted as a note on the ATS profile. Posting is irreversible from Metaview — confirm the candidate set and ATS destination with the user first. Maximum 50 candidates per call.
Inputs
candidate_idsarrayrequired- Candidate IDs to post (from list_sourcing_candidates). Maximum 50 candidates per call.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
search_idstringrequired- UUID of the sourcing search containing the candidates.
job_idstring- The ATS job to add applications to (from list_ats_jobs). Required unless list_ats_jobs returns job_required=false.
posting_typestring- Post as a candidate or prospect. Omit to preserve the workspace default.
stage_idstring- Optional stage for the new applications. Use an id from list_ats_stages (Metaview-side stage IDs, not raw ATS IDs). Omit to use the job's default stage.
metaviewmcp_restore_application_review_icpRestore a previous Application Review ICP version: the restored content becomes a new latest version, is approved on the spot, and a rerank starts against it immediately — there is no separate confirmation step.WriteRestore application review ICP version
Restore a previous Application Review ICP version: the restored content becomes a new latest version, is approved on the spot, and a rerank starts against it immediately — there is no separate confirmation step. Only a previous (superseded) version can be restored. Always call get_application_review_details first and pick the target from version_history.
Inputs
application_review_idstringrequired- The review to restore a version on (UUID from list_application_reviews).
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
versionintegerrequired- The display version number to restore, as shown in version_history from get_application_review_details (approved versions numbered 1, 2, 3, ... oldest first).
metaviewmcp_send_sourcing_messageSend a message to a sourcing or research search agent.WriteSend sourcing message
Send a message to a sourcing or research search agent. Use to start a new sourcing search (omit search_id), start a new research search (omit search_id, set mode='research'), or send a follow-up to an existing search. When no search_id is provided, a new search is created. The agent processes messages asynchronously — poll with get_sourcing_messages for responses.
Inputs
messagestringrequired- The message for the agent. Keep it short: for a new source search, briefly state the role and key constraints (location, seniority, must-haves) â the sourcing agent writes the ICP itself, so do NOT paste a full ICP as the message. For a new research search, state the topic or question. For follow-ups, give refinements or answers. Include every target company, segment and location in this one message; a long list of targets is fine and is not a reason to split it into several searches. Max 10000 characters.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
modestring- Set 'research' for market/talent research questions; the default 'source' creates a candidate search. Honored ONLY when creating a new search (search_id omitted) and cannot be changed afterwards â follow-up messages ignore it.one of
sourceresearchdefaultsource search_idstring- UUID of an existing search to follow up on â use it to refine or widen a search (e.g. add companies, segments or locations). Omit only to create a new search, at most one per role.
metaviewmcp_update_application_review_icpReplace an Application Review's ideal candidate profile (ICP) and immediately rerank every admitted candidate against the new profile.WriteUpdate application review ICP
Replace an Application Review's ideal candidate profile (ICP) and immediately rerank every admitted candidate against the new profile. This is not a draft — the change is live the moment this tool is called, and it triggers a full rerank. Always call get_application_review_details first to read the current ICP and pass its version number as base_version so a concurrent edit isn't silently clobbered.
Inputs
application_review_idstringrequired- The review to update (UUID from list_application_reviews).
base_versionintegerrequired- Optimistic lock: the active ICP version number read from active_icp.version in get_application_review_details (the display number shown in the web app). If it no longer matches (someone edited since you read it), the update is rejected â re-read and re-apply.
icp_textstringrequired- The complete, final ICP text (non-empty, max 50000 chars). Replaces the current profile in full â never send a diff or partial edit.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
metaviewmcp_update_application_review_rules<usecase> Replace the workspace-wide Application Review evaluation rules â the standing instruction applied to every review's ICP construction in the workspace.WriteUpdate Application Review Rules
<usecase> Replace the workspace-wide Application Review evaluation rules â the standing instruction applied to every review's ICP construction in the workspace. Admin only. WARNING â this is a FULL REPLACE of the entire rules text: whatever you pass becomes the complete rules. Call get_application_review_rules first and resend every rule you want to keep. Pass an empty string to clear the rules entirely. </usecase> <instructions>Use for durable workspace-wide policies (visa rules, location constraints, disqualifiers) â not per-review criteria; put those on the review's ICP via update_application_review_icp. Rules apply to reviews created after the change and to future ICP updates on existing reviews.</instructions> <response_format>{"rules": "the new rules text or null"}</response_format> <data_model>See list_application_reviews for the Application Review data model.</data_model>
Inputs
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
rulesstringrequired- The complete new rules text (max 10,000 chars). FULL REPLACE â this becomes the entire workspace rules. Pass an empty string to clear.
metaviewmcp_update_screen_outreach<usecase> Update a screen's candidate outreach â the invitation email and its schedule â and publish it immediately as the next ACTIVE version.WriteUpdate Screen Outreach
<usecase> Update a screen's candidate outreach â the invitation email and its schedule â and publish it immediately as the next ACTIVE version. IMPORTANT: this is not a draft. The change goes live on the spot, with no separate confirmation or approval step, and applies to every outreach email not yet sent â including pending invitations and reminders of already-admitted candidates. The one thing that never moves is a deadline a candidate was already told: deadlines are snapshotted at admission. This is a partial update â only the fields you pass change. Reminders use fixed system copy derived from the deadline. Publishing outreach never re-scores or re-interviews anyone. </usecase> <instructions> Always call get_screen_details first to read the current outreach and the active version number to pass as base_version. Subject and body may use template variables, substituted per candidate at send time: {{First name}}, {{Job title}}, {{Company}}, {{Interview length}}, {{Deadline}}, {{Days to deadline}}. Not editable here: the sender mailbox, the email logo, and the ATS rejection reason used at the deadline â configured in the Metaview web app and preserved as-is. The screen must have been published at least once, and its draft must hold no unpublished web-app edits (publishing this change would put those live too). </instructions> <response_format>{"screen_id", "status": "published"|"no_changes", "published_version", "previous_version", "outreach": {"subject", "body_html", "cc", "bcc", "deadline_after_days", "deadline_day_kind", "reject_at_deadline", "include_opt_out_link"}, "next"}</response_format> <data_model>See list_screens for the Screening data model.</data_model>
Inputs
base_versionintegerrequired- Optimistic lock: the active version number read from active_version.version in get_screen_details. If it no longer matches (someone published since you read it), the update is rejected â re-read and re-apply.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
screen_idstringrequired- The screen to update (UUID from list_screens).
bccstring- Replacement bcc list for the invitation (max 10 addresses). Replaces the list wholesale â pass [] to clear.
body_htmlstring- Replacement invitation body as HTML (p, ul, li, strong tags; max 20000 chars; template variables allowed). The 'Start your interview' button is appended by the system â do not write your own CTA link. Pass an empty string to revert to the default body.
ccstring- Replacement cc list for the invitation (max 10 addresses). Replaces the list wholesale â pass [] to clear.
clear_deadlineboolean- Remove the completion deadline entirely: candidates can complete any time, no reminders are sent, and any saved reject_at_deadline is turned off with it. Cannot be combined with deadline_after_days.default
false deadline_after_daysstring- The candidate's completion deadline, days after admission (max 90). Must be greater than 0. Cannot be combined with clear_deadline.
deadline_day_kindstring- How deadline_after_days is counted: 'calendar' (every day, the default) or 'business' (weekdays only, so a 3-day deadline sent on a Friday falls on Wednesday).
include_opt_out_linkstring- Whether outreach emails carry an opt-out link.
reject_at_deadlinestring- Whether undecided candidates are auto-rejected once their deadline passes. Requires a deadline; false makes the deadline purely candidate-facing urgency.
subjectstring- Replacement invitation subject, plain text (max 500 chars; template variables allowed). Pass an empty string to revert to the default subject.
metaviewmcp_update_screen_planReplace a screen's interview plan and publish it immediately as the next ACTIVE version.WriteUpdate screen plan
Replace a screen's interview plan and publish it immediately as the next ACTIVE version. This is not a draft — new interviews run against it immediately with no separate confirmation step. Always call get_screen_details first, compose the full revised plan, and pass the active version number as base_version so a concurrent edit isn't silently clobbered.
Inputs
base_versionintegerrequired- Optimistic lock: the active version number read from active_version.version in get_screen_details. If it no longer matches (someone published since you read it), the update is rejected â re-read and re-apply.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
screen_idstringrequired- The screen to update (UUID from list_screens).
sectionsstringrequired- The complete, final interview plan as a list of section objects â the same shape get_screen_details returns in interview_plan.sections. FULL REPLACE: this replaces the live plan wholesale, and sections/questions not in the list are deleted â never send a diff or partial edit. Each section: {section_id, title, goal?, questions}. Each question: {question_id, prompt, kind?, options?, follow_up?, rubric?, output_type?, multi_select?, candidate_role?, character?}. kind is exactly one of 'conversational' (asked out loud), 'multiple_choice' (options required; options and multi_select apply only to this kind â multi_select true lets the candidate pick several options), 'slack_thread' (answered in writing), or 'role_play' (a spoken scene the interviewer plays in character; candidate_role is who the candidate is in the scene and character is the interviewer's private brief for who they play â both apply only to this kind). output_type is 'FIT', 'BOOLEAN', 'NUMBER', 'SHORT_TEXT', or 'DATE'. Keep the ids of nodes you carry over â kind, output_type, multi_select, and question history follow the id, and omitted fields are preserved from the live node; invent new unique ids for new nodes (defaults: conversational, FIT). Omit this parameter entirely to keep the live sections and update only the context fields (a context-only update still publishes a new version).
company_contextstring- Replacement company context. Omit to keep the live plan's (never re-scores).
role_contextstring- Replacement role context grounding the interviewer and scoring. Omit to keep the live plan's (changing it re-scores undecided completed interviews).
metaviewmcp_create_ai_fieldCreate a new AI field or update an existing one.DestructiveCreate AI field
Create a new AI field or update an existing one. AI fields are the primary tool for analyzing conversations at scale — each field defines a question answered independently for every conversation. When no field_id is provided, creates a new field (checking for duplicates first). When field_id is provided, updates an existing field. Value types: single_line_text, long_text, list, number, currency, date, boolean.
Inputs
namestringrequired- Human-readable field name (e.g. "Candidate Salary Expectation").
promptstringrequired- Instructions for what to extract from each conversation transcript (e.g. "Extract the candidate's salary expectations"). Automatically assessed and improved before creation unless skip_improvement=true.
rationalestringrequired- Always provide a brief explanation of why you are calling this tool
value_typestringrequired- Data type of the extracted value. Prefer constrained outputs so results can be filtered and grouped: boolean for yes/no; number for scores/ratings (e.g. 1-5); list for multiple items (not comma-separated text); single_line_text for categories â constrain the prompt to a fixed value set (e.g. 'Respond with exactly one of: None, Low, Moderate, High'), never free-form text with explanations. Use long_text only for genuinely open-ended answers.one of
single_line_textlong_textlistnumbercurrencydateboolean field_idstring- Field ID of an existing AI field to update ('AI:<uuid>'); omit to create a new field. On update, changing the prompt, value_type, or name (for auto-prompted fields) CLEARS all existing results and triggers re-analysis on next query. System (prefab) fields cannot be updated.
skip_improvementboolean- Create only. True skips the automatic prompt/value_type assessment and improvement, creating the field exactly as specified. Default false. Both what you submit and the improved version are compliance-checked; if the error says only the improved version was rejected, set this true to create your own wording as-is.default
false skip_similarity_checkboolean- Create only. True skips the duplicate-field check and forces creation. Use when a previous call returned already_existed=true but the suggested field does not meet your needs. Default false.default
false
metaviewmcp_give_application_review_candidate_feedbackRecord a REJECT or PROGRESS decision on one or more admitted candidates in an Application Review, optionally with free-text feedback.DestructiveGive application review candidate feedback
Record a REJECT or PROGRESS decision on one or more admitted candidates in an Application Review, optionally with free-text feedback. This is a live decision that syncs to the customer's connected ATS — a REJECT can move the candidate's ATS stage and send a rejection email; a PROGRESS can advance their ATS stage. Only call this with decisions the user has confirmed.
Inputs
application_review_idstringrequired- The review containing the candidates (UUID from list_application_reviews).
candidate_idsarrayrequired- Candidate ids to record the decision for, from list_application_review_candidates. Must be non-empty; every candidate gets the same decision and feedback text. There is no select-all â pass each id explicitly.
decisionstringrequired- REJECT or PROGRESS.one of
REJECTPROGRESS rationalestringrequired- Always provide a brief explanation of why you are calling this tool
feedback_textstring- Optional free-text feedback recorded with the decision (visible to the hiring team and used to calibrate the review agent).
rejection_email_template_idstring- ATS rejection email template id (REJECT only; valid ids from list_application_review_rejection_options).
rejection_reason_idstring- ATS rejection reason id (REJECT only). Check list_application_review_rejection_options first for whether the ATS requires it and the valid ids.
metaviewmcp_manage_candidate_sequenceAdd candidates to a sequence, or pause, resume, cancel, remove, or update a candidate's enrollment.DestructiveManage candidate sequence
Add candidates to a sequence, or pause, resume, cancel, remove, or update a candidate's enrollment. Action must be one of: add, pause, resume, cancel, remove, update. Only the sequence creator can perform these actions. Always confirm with the user before calling this tool.
Inputs
actionstringrequired- The operation to perform. cancel: stop further sends but keep the candidate visible. remove: delete (archive) the enrollment entirely. update: override one step's subject/body/schedule for this candidate.one of
addpauseresumecancelremoveupdate rationalestringrequired- Always provide a brief explanation of why you are calling this tool
candidate_idsstring- Candidate UUIDs to enroll. Required when action=add.
candidate_sequence_idstring- Enrollment UUID. Required when action=pause, resume, cancel, or remove.
candidate_sequence_step_idstring- Per-candidate step UUID. Required when action=update. Get it from list_sequence_candidates(sequence_id=..., include_detail=true).
clear_schedule_overridestring- update only. True reverts the schedule to the template default. Mutually exclusive with schedule_override.
clear_subject_overridestring- update only. True reverts the subject to the template default. Mutually exclusive with subject_override.
clear_template_overridestring- update only. True reverts the body to the template default. Mutually exclusive with template_override.
context_source_idstring- add only. UUID of the search the candidates came from; requires context_source_type. Leave null if context_source_type is null.
context_source_typestring- add only. Must be 'search' and requires context_source_id. Leave BOTH context_source_type and context_source_id null when the source is unknown â do NOT guess or fabricate a value.
schedule_overridestring- update only. Schedule override object, one of: {"schedule_type": "instant"}; {"schedule_type": "next_business_day", "time_of_day": "HH:MM" or "HH:MM:SS"}; {"schedule_type": "later", "delay_seconds": N}. specific_time is NOT supported. Mutually exclusive with clear_schedule_override (if both are set, the clear wins).
sequence_idstring- Sequence UUID. Required when action=add.
subject_overridestring- update only. Custom subject for this candidate's step; supports {{variable_name}} placeholders filled per-candidate by AI before sending. Mutually exclusive with clear_subject_override (if both are set, the clear wins).
template_overridestring- update only. Custom body for this candidate's step; supports {{variable_name}} placeholders filled per-candidate by AI before sending. Mutually exclusive with clear_template_override (if both are set, the clear wins).
metaviewmcp_manage_note_templateCreate, update, or delete an AI Notes custom template.DestructiveManage note template
Create, update, or delete an AI Notes custom template. Action must be one of: create, update, delete. For create, name and sections are required. For update and delete, template_id is required.
Inputs
actionstringrequired- The operation to perform: create, update, or delete.one of
createupdatedelete rationalestringrequired- Always provide a brief explanation of why you are calling this tool
group_namestring- update only. Move the template into a named accessible folder; pass '' or 'personal' for the personal folder. Resolve folder names via list_note_template_groups first. Omit to leave the template where it is.
namestring- Template name. Required when action=create; optional for update (renames).
sectionsstring- Ordered list of section objects (list order = display order; max 100). Required when action=create; optional for update. FULL REPLACE on update: the list replaces ALL existing sections â omitted sections are removed. Include a section's existing id to update it in place; omit id for new sections. Section shape (every field required): directive: 'SINGLE' (one block under a fixed heading) | 'REPEATING' (one block per detected entity â prefer this whenever the intent is 'one block per X', instead of several near-identical SINGLE sections) heading: str â required when directive='SINGLE' repeating_entity: str â required when directive='REPEATING' (e.g. 'Question', 'Topic', 'Role', 'Project') description: str â THE most important field: a PROMPT run on every transcript, not a note to a human. Cover (a) SCOPE â what to include and leave out â and (b) OUTPUT FORMAT â length caps, markdown patterns, label conventions (e.g. '3 bullets max, each **Label:** one sentence, under 120 words'). REPEATING descriptions run once per detected entity. output: dict, one of: {'type': 'TEXT', 'text_format': 'PARAGRAPH'|'BULLET_POINT', 'detail': 'low'|'medium'|'high'} â use TEXT for anything that isn't a hard classification; carry structure via markdown in the description. {'type': 'NUMBER', 'currency': str} â '' for a plain number, else 'USD', 'EUR', ... {'type': 'OPTIONS', 'options_type': 'SINGLE'|'MULTIPLE', 'options': [str, ...]} â the description MUST give per-option selection criteria (exactly when to pick each value and when NOT to); for booleans use options=['true', 'false'] with options_type='SINGLE'. {'type': 'DATE', 'date_format': str, e.g. 'yyyy/mm/dd'|'mm/dd/yyyy'|'dd/mm/yyyy'}
template_idstring- Template UUID. Required when action=update or delete. INTERNAL ONLY â never surface this id to the user; refer to templates by name.
metaviewmcp_manage_sequenceCreate, update, duplicate, or delete a sequence.DestructiveManage sequence
Create, update, duplicate, or delete a sequence. Action must be one of: create, update, duplicate, delete. Only the creator of a sequence can update or delete it. Supports configuring steps with multiple channel types: EMAIL, LINKEDIN_CONNECTION, LINKEDIN_INMAIL, LINKEDIN_MESSAGE, SMS, PHONE, WHATSAPP. Always confirm with the user before calling this tool.
Inputs
actionstringrequired- The operation to perform: create, update, duplicate, or delete.one of
createupdateduplicatedelete rationalestringrequired- Always provide a brief explanation of why you are calling this tool
descriptionstring- Sequence description. Optional for create and update.
namestring- Sequence name. Required when action=create; optional for update (renames).
sequence_idstring- Sequence UUID. Required when action=update, duplicate, or delete.
set_enabledstring- Enable or disable the sequence. Optional for create and update.
stepsstring- FULL REPLACE (update action only): this list replaces the sequence's current steps â steps not in the list are DELETED. Each step's schedule is required (schedule_type values: instant, later, next_business_day; specific_time is rejected). time_of_day accepts 'HH:MM' or 'HH:MM:SS'. steps: Optional for update. A JSON list of step objects to replace the current steps. Steps not in the list are deleted. Order in the list determines step order. Each step object has: channel_type: str (REQUIRED â one of: EMAIL, LINKEDIN_CONNECTION, LINKEDIN_INMAIL, LINKEDIN_MESSAGE, SMS, PHONE, WHATSAPP) sequence_step_id: str | null (include the existing step ID to update it; omit or set null for new steps â an ID will be generated automatically) template: str | null (message body; supports {{variable_name}} placeholders that are filled in per-candidate by an AI call before sending) description: str | null schedule: dict | null (e.g. {"schedule_type": "instant"}, {"schedule_type": "later", "delay_seconds": 86400}, {"schedule_type": "next_business_day", "time_of_day": "09:00:00"}. Setting a specific time is NOT supported. step_execution_type: str | null (AUTOMATIC or MANUAL) execution_timeout_seconds: int | null (only for MANUAL steps) EMAIL step fields: from_mailbox_id: REQUIRED (mailbox UUID â use list_mailboxes to get available mailboxes) step_type: REQUIRED (NEW_THREAD or REPLY) bcc: optional (list of email addresses) cc: optional (list of email addresses) step_execution_type: AUTOMATIC, MANUAL (default: AUTOMATIC) NOT used: from_whatsapp_account_id, linkedin_subject step_type values: NEW_THREAD or REPLY subject: str | null (REQUIRED for NEW_THREAD; forbidden for REPLY. Supports {{variable_name}} placeholders) LINKEDIN_CONNECTION step fields: step_execution_type: MANUAL (default: MANUAL) NOT used: bcc, cc, from_mailbox_id, from_whatsapp_account_id, linkedin_subject, step_type Connection request with optional note; recommended maximum 275 characters including resolved placeholders (stored in template field) LINKEDIN_INMAIL step fields: linkedin_subject: REQUIRED (str â required subject line for the InMail) step_execution_type: MANUAL (default: MANUAL) NOT used: bcc, cc, from_mailbox_id, from_whatsapp_account_id, step_type InMail to non-connections. Requires subject + body. Uses Premium LinkedIn credits. LINKEDIN_MESSAGE step fields: linkedin_subject: optional (str | null â subject line for the LinkedIn message) step_execution_type: MANUAL (default: MANUAL) NOT used: bcc, cc, from_mailbox_id, from_whatsapp_account_id, step_type subject shorthand: setting 'subject' auto-maps to linkedin_subject SMS step fields: step_execution_type: MANUAL (default: MANUAL) NOT used: bcc, cc, from_mailbox_id, from_whatsapp_account_id, linkedin_subject, step_type PHONE step fields: step_execution_type: MANUAL (default: MANUAL) NOT used: bcc, cc, from_mailbox_id, from_whatsapp_account_id, linkedin_subject, step_type WHATSAPP step fields: from_whatsapp_account_id: optional (ignored; the connected sender is selected automatically) step_execution_type: AUTOMATIC, MANUAL (default: AUTOMATIC) NOT used: bcc, cc, from_mailbox_id, linkedin_subject, step_type Automatic steps use the step creator's connected WhatsApp account.
unsendable_step_behaviorstring- What the sequence's AUTOMATIC steps do when they can't reach the candidate (no email, phone number or LinkedIn profile for the step's channel, WhatsApp rejects the number, or the email bounces): PAUSE_SEQUENCE pauses the candidate's sequence until someone fixes it; SKIP_STEP skips that step and the sequence carries on. Manual steps always pause. Optional for create and update.
No tools match.