MCP server · free
Connect your AI to Metaintro
Give Claude, ChatGPT, Cursor or any MCP client live job postings, employers and market data. Sign in, and it can work on your own job search too: your profile, résumés, tracked jobs and next steps.
Free on every connection. Searching needs no account.
1claude mcp add --transport http metaintro-public https://www.metaintro.com/api/mcp/public[ 01 / 07 ] · Connections
Three addresses, each with its own reach
The address decides what your agent can reach. Start with the public one, and sign in when you want your agent to work on your own search.
- No sign-in
Public
Server addresshttps://www.metaintro.com/api/mcp/publicLive job postings, similar jobs, employer profiles, a company's open roles, what is hiring near you and the job market for any search. Read-only.
- Sign-in
- None. Up to 30 tool calls a minute from each address.
- Tools
- 7
- Your account
Personal
Server addresshttps://www.metaintro.com/api/mcpYour own job search: profile, résumés, tracked jobs, next steps, application records, reminders, documents and chat with Metaintro's assistant. search_actions and run_action reach every other action you're allowed.
- Sign-in
- Sign in with OAuth, or use a personal API key from Settings > Agents.
- Tools
- 59
- Staff
Organization
Server addresshttps://www.metaintro.com/api/mcp/org/<slug>For case managers and staff, and only your organization's members: caseload, work queue, alerts, notes, check-ins, promises, member job boards, job lists sent by email, placements and outcomes reports, tasks, live job search and Cabinet's job-search and drafting tools.
- Sign-in
- Staff sign-in. Your organization's exact address is in its Settings > Agents.
- Tools
- 92
[ 02 / 07 ] · Setup
Add it to your client
Most clients sign you in on their own: add the address, then approve the sign-in in your browser. Use the public address to search without an account.
1## Claude2In the Claude app or on claude.ai, open Settings, then Connectors, and choose Add custom connector. Name it Metaintro and paste an address.34## ChatGPT5In ChatGPT, open Settings, then Connectors, and create a custom connector with an address. Choose OAuth when it asks how to sign in.67> Depending on your plan, custom connectors may need developer mode or your workspace admin's approval.89Your job search, sign-in: `https://www.metaintro.com/api/mcp`10Search only, no sign-in: `https://www.metaintro.com/api/mcp/public`Installs the personal connection. Your client asks you to sign in.
Prefer an API key?
Create a personal key in Settings > Agents and send it as an Authorization: Bearer header. Anyone with the key can act as you, so keep it out of shared files and chats.
Create a key[ 03 / 07 ] · Tool reference
Every tool, as your agent sees it
Names and descriptions are exactly what the server sends to agents, so they stay in English. Clients that support MCP Apps show job results as interactive job cards.
Public tools7
search_jobsReadJob cardsSearch jobs
Search live job postings from employer career sites and job boards by what the person is looking for, with optional filters for title, location, remote work and pay. Returns up to 10 job cards a page; page with offset or cursor. Each job opens at https://www.metaintro.com/job/<id>; read one in full with get_job, and its employer with get_company and the job's companySlug.
get_jobReadJob cardsRead a job posting
Read one job posting in full, by the id a search returned: description, requirements, pay, location and the employer's apply link.
get_market_insightsReadRead the job market for a search
Summarize the live job market for a search: how many jobs match, the median listed pay, the most common work arrangement and the top requested skills, with how the search was understood. Takes the same query and filters as search_jobs.
get_companyReadRead a company
Read an employer's profile by its slug (companySlug on a job): what it does, size, how it is hiring (open roles, 30-day change, departments, locations, remote share, how long roles stay open), observed pay bands, work arrangement, benefits and recent events. Its page is https://www.metaintro.com/company/<slug>.
list_company_jobsReadJob cardsList a company's open jobs
List an employer's open jobs by its slug, newest first. Page with cursor.
find_similar_jobsReadJob cardsFind similar jobs
Find live jobs like one job, by the id a search returned: the same kind of role in the same place (or remote, when the job is remote), as up to 10 job cards. Use it when a job is closed, a near miss, or the person wants more like it.
get_local_demandReadRead local job demand
Read which kinds of roles are hiring most in a place (city, region, country): open jobs by role category, with total open jobs, employers and sectors. When a place has too few role types it widens to the region, the country or worldwide; scope and locationLabel say which. Use it when someone does not yet know what to look for.
Personal tools59
chatWriteChat with Metaintro
Send a text message to Metaintro’s personal assistant. Omit threadId to start a conversation; pass the returned threadId to continue. Uses the same assistant and tools as the app for job discovery, résumé building and tailoring, interview preparation, and profile help. Returns the reply and artifacts. Requires write access because the assistant can update your data. Use the messaging actions for shared conversations; your approval preference applies. If interrupted, read_thread before retrying; never resend blindly.
whoamiReadWho am I
Who this agent acts as, what its key may do, and the organizations where the person works as staff (with each one's slug and id, which the case manager tools take). Call it first.
search_actionsReadSearch actions
Find any action this agent can run beyond the named tools: everything a job seeker or a case manager can do in Metaintro. Returns each action's name, whether it reads, writes or needs a person's approval, and its inputSchema. Run one with run_action.
get_action_requestReadCheck a waiting action
Read one action your agent asked for that waits for you: whether it is still waiting, approved and done, declined or expired, and its result once it ran. Takes the request id a held call returned.
run_actionWriteRun an action
Run one action that search_actions found, with its input. It runs as you, with the same access you have in the app. Your approvalMode from whoami determines whether a write runs immediately or waits for approval. Reads run immediately.
get_my_profileReadRead my profile
Read your master profile: experience, skills, education, preferences, and its version number (pass it as expectedVersion when you change it).
update_profile_sectionWriteReplace a profile section
Replace one section of your master profile. Read the profile first and pass its version as expectedVersion; a stale version is refused so nothing newer is overwritten.
update_profile_fieldsWriteChange profile fields
Change individual fields of your master profile with set, append, remove or upsert operations. Pass the profile's current version as expectedVersion.
list_profile_changesReadList profile changes
List earlier versions of your master profile, newest first, with who or what changed it.
get_search_preferencesReadRead my search preferences
Read the saved search filters and last search your job matching runs on. Pay and dealbreakers are in your profile.
update_dealbreakersWriteSet dealbreakers
Set the things a job must not have. Pass the profile's current version as expectedVersion.
update_compensationWriteSet pay expectations
Set the pay you are looking for. Pass the profile's current version as expectedVersion.
get_master_resumeReadRead my master résumé
Read your primary résumé, the one Metaintro tailors from, with its content and design.
list_resumesReadList my résumés
List the résumés you built in Metaintro.
get_resumeReadRead a résumé
Read one résumé you built, by its id.
update_resumeWriteEdit a résumé
Change a résumé's content. Pass the updatedAt you read as expectedUpdatedAt so an edit made elsewhere is not overwritten. Set createVersion to keep the old text as a version.
list_uploaded_resumesReadList uploaded résumé files
List the résumé files you uploaded.
create_resumeWriteBuild a résumé from my profile
Build a résumé from your existing master profile. To create or tailor one conversationally, use chat.
export_resumeWriteExport a résumé as PDF
Export one of your résumés as a PDF for you to download. This does not submit an application.
set_master_resumeWriteChoose my master résumé
Choose which of your résumés is the primary résumé used for tailoring.
duplicate_resumeWriteCopy a résumé
Make an editable copy of one of your résumés.
list_resume_versionsReadList résumé versions
Read the saved versions of one of your résumés before restoring or editing it.
get_resume_downloadReadDownload an uploaded résumé
Get a download URL for one of your uploaded résumé files. Treat the returned URL as private.
search_jobsReadJob cardsSearch jobs
Search live job postings from employer career sites and job boards by what the person is looking for, with optional filters for title, location, remote work and pay. Returns up to 10 job cards a page; page with offset or cursor. Each job opens at https://www.metaintro.com/job/<id>; read one in full with get_job, and its employer with get_company and the job's companySlug.
get_jobReadJob cardsRead a job posting
Read one job posting in full, by the id a search returned: description, requirements, pay, location and the employer's apply link.
get_market_insightsReadRead the job market for a search
Summarize the live job market for a search: how many jobs match, the median listed pay, the most common work arrangement and the top requested skills, with how the search was understood. Takes the same query and filters as search_jobs.
get_companyReadRead a company
Read an employer's profile by its slug (companySlug on a job): what it does, size, how it is hiring (open roles, 30-day change, departments, locations, remote share, how long roles stay open), observed pay bands, work arrangement, benefits and recent events. Its page is https://www.metaintro.com/company/<slug>.
list_company_jobsReadJob cardsList a company's open jobs
List an employer's open jobs by its slug, newest first. Page with cursor.
find_similar_jobsReadJob cardsFind similar jobs
Find live jobs like one job, by the id a search returned: the same kind of role in the same place (or remote, when the job is remote), as up to 10 job cards. Use it when a job is closed, a near miss, or the person wants more like it.
get_local_demandReadRead local job demand
Read which kinds of roles are hiring most in a place (city, region, country): open jobs by role category, with total open jobs, employers and sectors. When a place has too few role types it widens to the region, the country or worldwide; scope and locationLabel say which. Use it when someone does not yet know what to look for.
list_matched_jobsReadList jobs matched to me
List the jobs Metaintro matched to you. Set newOnly to see only ones you have not opened. Page with cursor.
get_next_stepsReadWhat to do next
Read what needs doing in your job search, most urgent first: interviews in the next two days (INTERVIEW), reminders that are due (REMINDER), application deadlines within a week (DEADLINE), postings that closed while you were applying (CLOSED_POSTING), applications with no news for 14 days (NO_ACTIVITY) and applications started but not confirmed (UNCONFIRMED_APPLICATION). Each item names its tracked job. Also returns how many jobs sit in each stage, your weekly momentum and, in a program, this week's goals. Call it at the start of a session.
list_my_jobsReadList my jobs
List every job and lead you are tracking, grouped by stage.
get_my_jobReadRead one of my jobs
Read one tracked job or lead in full, with its notes, contacts, interviews, offer and reminders.
check_resume_fitWriteCheck my résumé against a job
Score how well your base résumé fits a tracked job and save the score and its details on the job. savedJobId comes from list_my_jobs. Refused until you have uploaded a résumé.
save_jobWriteSave a job or lead
Start tracking a job or a lead. Saving the same job again updates supplied fields, including title and company, and records another save activity. idempotencyKey does not deduplicate saves; read the tracked job before retrying a call whose outcome is unknown.
update_my_jobWriteUpdate a tracked job
Move a tracked job to another stage, or change its pay, location, note or interview.
add_job_noteWriteAdd a note to a job
Add a note to a tracked job or lead.
record_applicationWriteRecord an application
Record that you applied to a tracked job: how, when, and with which résumé.
set_job_reminderWriteSet a job reminder
Set a reminder on a tracked job, such as a follow-up date.
get_weekly_work_searchReadRead my weekly work search
Read one week of your work search activity, as unemployment programs ask for it. Only for people an organization enrolled in its work-search program (whoami's workSearchProgram.enrolled); anyone else is refused, so don't offer it to them.
export_weekly_work_searchWriteExport my weekly work search
Export one week of your work search as CSV (week is current or that week's start date, YYYY-MM-DD), to attach to an unemployment claim's weekly certification. Same program rule as get_weekly_work_search.
set_email_preferencesWriteChange my emails and notifications
Turn Metaintro's emails and push notifications on or off. similarJobsEnabled emails new jobs like the ones you saved (Metaintro's job alerts); careerDigestEnabled the career digest; caseThreadEmailEnabled email from your case manager's conversation; pushNotificationsEnabled phone notifications; marketingEnabled, partnerIntrosEnabled and onboardingEmailsEnabled the rest. Send only the switches to change; it returns them all.
get_memoryReadRead what Metaintro remembers
Read the things Metaintro's chat has remembered about you and your search.
list_threadsReadList my conversations
List your conversations, newest first. Page with cursor.
read_threadReadRead a conversation
Read the messages in one of your conversations, including your case manager's. Page with cursor.
record_job_contactWriteSave a job contact
Save a contact on a tracked job. This records information; it does not contact the person.
record_interviewWriteRecord an interview
Record an interview and its details on a tracked job. Use chat for interview preparation.
record_offerWriteRecord a job offer
Record offer terms on a tracked job. This does not accept or decline an offer with the employer.
record_follow_upWriteRecord a follow-up
Record a follow-up you already made on a tracked job. This does not send a message.
update_job_reminderWriteUpdate a job reminder
Update or complete an existing reminder for a tracked job.
list_application_materialsReadList application materials
Read the résumé and supporting documents prepared for a tracked job.
get_job_documentReadRead an application document
Read a saved application document such as a cover letter or interview notes.
save_job_documentWriteSave an application document
Save document content on one of your tracked jobs, using the version fields in the schema to avoid overwriting newer work.
export_job_documentWriteExport an application document
Export a prepared document for your own use. This does not send it to an employer.
check_job_availabilityWriteCheck whether a job is open
Check the availability of a job you are tracking before applying.
get_case_managerReadRead my case manager's status
See who your case manager is on a conversation and whether a request to them is open.
message_case_managerWriteMessage my case manager
Request a message to your case manager in one of your conversations. Your approval setting decides whether it waits for you; pass reason so you can tell what you are approving. Pass a stable clientMessageId so a retry sends it once.
request_case_managerWriteAsk for my case manager
Ask your case manager to join a conversation, with an optional message and priority.
More actions through search_actions and run_action183
Organization tools92
whoamiReadWho am I
Who this agent acts as, what its key may do, and the organizations where the person works as staff (with each one's slug and id, which the case manager tools take). Call it first.
search_actionsReadSearch actions
Find any action this agent can run beyond the named tools: everything a job seeker or a case manager can do in Metaintro. Returns each action's name, whether it reads, writes or needs a person's approval, and its inputSchema. Run one with run_action.
get_action_requestReadCheck a waiting action
Read one action your agent asked for that waits for you: whether it is still waiting, approved and done, declined or expired, and its result once it ran. Takes the request id a held call returned.
run_actionWriteRun an action
Run one action that search_actions found, with its input. It runs as you, with the same access you have in the app. Your approvalMode from whoami determines whether a write runs immediately or waits for approval. Reads run immediately.
search_jobsReadJob cardsSearch jobs
Search live job postings from employer career sites and job boards by what the person is looking for, with optional filters for title, location, remote work and pay. Returns up to 10 job cards a page; page with offset or cursor. Each job opens at https://www.metaintro.com/job/<id>; read one in full with get_job, and its employer with get_company and the job's companySlug.
get_jobReadJob cardsRead a job posting
Read one job posting in full, by the id a search returned: description, requirements, pay, location and the employer's apply link.
get_market_insightsReadRead the job market for a search
Summarize the live job market for a search: how many jobs match, the median listed pay, the most common work arrangement and the top requested skills, with how the search was understood. Takes the same query and filters as search_jobs.
get_companyReadRead a company
Read an employer's profile by its slug (companySlug on a job): what it does, size, how it is hiring (open roles, 30-day change, departments, locations, remote share, how long roles stay open), observed pay bands, work arrangement, benefits and recent events. Its page is https://www.metaintro.com/company/<slug>.
list_company_jobsReadJob cardsList a company's open jobs
List an employer's open jobs by its slug, newest first. Page with cursor.
find_similar_jobsReadJob cardsFind similar jobs
Find live jobs like one job, by the id a search returned: the same kind of role in the same place (or remote, when the job is remote), as up to 10 job cards. Use it when a job is closed, a near miss, or the person wants more like it.
get_local_demandReadRead local job demand
Read which kinds of roles are hiring most in a place (city, region, country): open jobs by role category, with total open jobs, employers and sectors. When a place has too few role types it widens to the region, the country or worldwide; scope and locationLabel say which. Use it when someone does not yet know what to look for.
list_membersReadList members
List an organization's members you may see, with stage, status, case manager, last contact and next action. Filter and sort; page with cursor.
find_memberReadFind a member
Find members of an organization by name or email.
get_memberReadRead a member
Read one member's record in an organization.
get_member_profileReadRead a member's profile
Read a member's master profile.
get_member_briefReadRead a member's brief
Read the latest brief on a member: where their search stands and what to do next. Use it as a handoff summary.
generate_member_briefWriteWrite a fresh member brief
Write a fresh brief on a member from their current record, for a handoff or a meeting.
get_what_mattersReadRead what matters to a member
Read the lines on what matters most in a member's search. Until staff save their own list, they come from the latest brief.
set_what_mattersWriteSet what matters to a member
Replace the lines on what matters most in a member's search. Send every line to keep, with source STAFF for any line you wrote or changed.
list_member_activityReadList a member's activity
List a member's timeline: notes, check-ins, outreach, applications and stage changes. Page with cursor.
add_member_noteWriteAdd a note on a member
Add a note to a member's record. Every note is stored the same way; type is recorded only in the audit log.
log_check_inWriteLog a check-in
Log a check-in you had with a member: the day, how, which direction, a note and the next follow-up date.
list_check_insReadList check-ins
List an organization's check-ins, by status and owner.
log_outreachWriteLog outreach
Record contact with an employer or anyone else on a member's behalf: the channel, the direction, what was said and when.
update_pipeline_stageWriteMove a member's stage
Move a member to another pipeline stage: intake, searching, résumé building, applying, interviewing, offer or placed.
update_member_statusWriteChange a member's status
Change a member's status in the organization. Depending on the person's approval setting it may wait for approval; pass reason so they can tell what they are approving.
assign_case_managerWriteAssign a case manager
Assign a member to a case manager. Depending on the person's approval setting it may wait for approval; pass reason so they can tell what they are approving.
list_case_managersReadList case managers
List an organization's active case managers by name, up to 100 a page, with each one's caseload. Narrow it with search (part of a name or email) or staffIds; pass nextCursor back as cursor for the next page.
list_job_listsReadList job lists sent
List the job lists sent to a member, newest first, with how many roles reached each status. Pass nextCursor back as cursor for older lists; read one list's roles with get_job_list.
get_job_listReadRead a job list
Read one job list in full: each role, its status and feedback, and the attachments sent with it.
update_role_statusWriteUpdate a role's status
Record where a member stands on a role from a job list you sent them.
get_member_job_boardReadRead a member's jobs
Read every job and lead a member is tracking, by stage.
move_member_jobWriteMove a member's job
Move a job on a member's My jobs board to another stage: SAVED, APPLYING, APPLIED, INTERVIEWING or OFFERED, or close it as ACCEPTED, REJECTED, WITHDRAWN or NO_REPLY. Activity records you as the one who moved it. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
add_member_job_noteWriteAdd a note to a member's job
Add a note to a job on a member's board. The member and your team see it, signed with your name. savedJobId is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
record_member_applicationWriteRecord a member's application
Record that a member applied to a job on their board: how, when (appliedAt) and with which résumé. Moves a saved job to APPLIED. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
set_member_job_reminderWriteSet a reminder on a member's job
Set a reminder on a job on a member's board, such as a follow-up date. The member sees it. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
update_member_job_reminderWriteUpdate a reminder on a member's job
Complete, cancel or snooze a reminder on a member's job. Snooze needs snoozedUntil. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
record_member_job_contactWriteRecord a contact on a member's job
Add or update a person on a member's job: a recruiter, hiring manager or referrer. Pass contactId to update one. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
record_member_interviewWriteRecord an interview on a member's job
Add or update an interview round on a member's job: when, format and outcome. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
record_member_offerWriteRecord an offer on a member's job
Record or update an offer on a member's job: pay, start date, decision deadline and outcome. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
archive_member_jobWriteArchive a member's job
Take a job off a member's board. restore_member_job puts it back. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
restore_member_jobWriteRestore a member's job
Put an archived job back on a member's board. id is the job's id from get_member_job_board. Pass provenance when the change comes from something the member said or sent: a note on why, the channel, when they told you (reportedAt) and when it actually happened (occurredAt, which dates the event). The member can see this record.
log_off_list_applicationWriteLog an application
Record an application a member made to a job that was not on a list you sent.
get_work_queueReadRead my work queue
Read the organization's work queue: what is waiting on staff, block by block. Each block holds its first rowsPerBlock rows (25 unless you ask for up to 50), its total (null when only a lower bound is known) and whether more are waiting.
list_reply_queueReadList members waiting on a reply
List members whose newest message waits on a staff reply.
read_member_threadReadRead a member's conversation
Read one of a member's conversations. Page with cursor.
add_staff_noteWriteAdd a staff-only note
Add a note on a member's conversation that only staff see. The member never sees it.
list_tasksReadList tasks
List an organization's tasks, by status and owner.
create_taskWriteCreate a task
Create a task, optionally for a member, with a due date.
update_task_statusWriteChange a task's status
Change a task's status.
list_placementsReadList placements
List an organization's placements (a member's path to a specific job: SOURCING, INTERVIEWING, OFFER, PLACED), newest first, with the member and counts by stage. Filter by stage or memberId; page with page and pageSize (up to 100).
list_placement_optionsReadList placements to link
List recent placements as short labels (role • company, and the member's name) with their ids, to link a task to one as placementId.
record_placementWriteRecord a placement
Record a member's path to a specific job: roleTitle and companyName, the stage (SOURCING unless you say otherwise; PLACED when they were hired), notes and where the role came from (source). Placements are what an organization's outcomes are counted from, so record a hire as PLACED.
move_placement_stageWriteMove a placement's stage
Move a placement to SOURCING, INTERVIEWING, OFFER or PLACED. Pass occurredAt when it happened earlier than now, such as the member's start date. Moving to PLACED counts the member as placed and resolves the placement's stalled alert.
update_placementWriteUpdate a placement
Correct a placement's role, company, stage, notes or source. Send every field you want to keep; read it with list_placements first.
get_outcomes_overviewReadRead outcomes at a glance
Read an organization's outcomes for a period: caseload, new members, members placed, check-ins completed, staff contacts, median reply time, members gone quiet and how many sit at each stage. window sets the period: from and to as YYYY-MM-DD (at most 366 days apart), timeZone as an IANA name such as America/Chicago, unit (day, week or month) for the trend, and weekStart (0 for Sunday, 1 for Monday). Each figure comes with the previous period of the same length, so say what changed. A case manager without broad access sees their own caseload (scope caseload); sample true means the numbers are demonstration data.
get_placements_reportReadRead the placements report
Read placements for a period: members placed, placements and offers, median days to placed, open placements by stage, top employers and the most recent placements. window sets the period: from and to as YYYY-MM-DD (at most 366 days apart), timeZone as an IANA name such as America/Chicago, unit (day, week or month) for the trend, and weekStart (0 for Sunday, 1 for Monday). Each figure comes with the previous period of the same length, so say what changed. A case manager without broad access sees their own caseload (scope caseload); sample true means the numbers are demonstration data.
get_pipeline_reportReadRead the pipeline report
Read how members move through the pipeline in a period: members at each stage, moves forward and backward, and median days to placed. window sets the period: from and to as YYYY-MM-DD (at most 366 days apart), timeZone as an IANA name such as America/Chicago, unit (day, week or month) for the trend, and weekStart (0 for Sunday, 1 for Monday). Each figure comes with the previous period of the same length, so say what changed. A case manager without broad access sees their own caseload (scope caseload); sample true means the numbers are demonstration data.
get_engagement_reportReadRead the engagement report
Read how engaged members were in a period: how many were active, what they did (searched, wrote a message, saved a job, applied, had an interview, got an offer) and the searches they ran most. window sets the period: from and to as YYYY-MM-DD (at most 366 days apart), timeZone as an IANA name such as America/Chicago, unit (day, week or month) for the trend, and weekStart (0 for Sunday, 1 for Monday). Each figure comes with the previous period of the same length, so say what changed. A case manager without broad access sees their own caseload (scope caseload); sample true means the numbers are demonstration data.
get_case_work_reportReadRead the case work report
Read the staff's case work in a period: check-ins, contacts by channel, job lists sent, outreach, reply times and each staff member's share. window sets the period: from and to as YYYY-MM-DD (at most 366 days apart), timeZone as an IANA name such as America/Chicago, unit (day, week or month) for the trend, and weekStart (0 for Sunday, 1 for Monday). Each figure comes with the previous period of the same length, so say what changed. A case manager without broad access sees their own caseload (scope caseload); sample true means the numbers are demonstration data.
list_promisesReadList what you promised a member
List the promises staff made to a member, open and kept, each with its owner and due date, and whose turn it is in the conversation. Read it before a meeting so nothing promised is forgotten.
add_promiseWriteRecord a promise to a member
Record something you promised a member, such as sending three warehouse roles by Friday, with a due date (YYYY-MM-DD, or null) and a stable submissionId so a retry records it once. It becomes the member's next action until it is kept.
set_promise_keptWriteMark a promise kept
Mark a promise to a member kept, or open again with kept false. promiseId comes from list_promises.
list_alertsReadList alerts
List an organization's alerts, newest first: unanswered replies (THREAD_REPLY), overdue or due next actions, members gone quiet, sent job lists with no answer, stalled stages, new members and job card outcomes or feedback. Filter by status (OPEN, ACKNOWLEDGED, RESOLVED) or eventType; page with cursor. Alert types you muted are left out.
acknowledge_alertWriteAcknowledge an alert
Acknowledge an alert: you have seen it and it stays open until it is resolved.
resolve_alertWriteResolve an alert
Resolve an alert once what it asked for is done. Needs permission to manage the organization.
snooze_alertWriteSnooze an alert
Hide an alert until a date and time (until, ISO 8601), such as the day after a scheduled check-in.
list_recommendationsReadList recommendations for a member
List the recommendations on a member's record: prompts to try next, jobs to save, check-ins, follow-up tasks and profile corrections. Filter by status (OPEN, RESOLVED) or threadId. Staff see them on the member's record.
recommend_for_memberWriteAdd a recommendation for a member
Add a recommendation to a member's record for the team to act on: type NEXT_PROMPT, SAVED_JOB, CHECK_IN, FOLLOW_UP_TASK or PROFILE_CORRECTION, a short title, a description, an optional link (url) and due date (dueAt).
resolve_recommendationWriteResolve a recommendation
Resolve a recommendation once it is done. recommendationId comes from list_recommendations.
update_check_in_statusWriteChange a check-in's status
Mark a scheduled check-in COMPLETED, NO_SHOW or RESCHEDULE, or back to SCHEDULED. id comes from list_check_ins. To record what was said, use log_check_in.
update_taskWriteUpdate a task
Change a task's title, description, member, priority, due date or status. Send every field you want to keep; read it with list_tasks first.
list_member_threadsReadList a member's conversations
List a member's recent conversations you may see, newest first, and which one is their case conversation (the one staff and the member share). Read one with read_member_thread.
open_case_threadWriteOpen a member's case conversation
Return the member's case conversation, starting it if they have none yet. Returns its threadId and whether it was created. Job list rounds and staff messages go here.
get_member_work_searchReadRead a member's work-search weeks
Read a member's weekly work-search record for an unemployment program, newest week first (12 unless you pass limit, up to 52): activities, applications and whether each week met the requirement. Only where the organization keeps work-search evidence.
export_member_work_searchWriteExport a member's work-search record
Export a member's work-search activities as CSV, for a program's weekly certification. Needs permission to export data. Depending on the person's approval setting it may wait for approval; pass reason naming the member.
log_job_listWriteLog a job list sent outside Metaintro
Record a job list you already gave a member some other way (email, WhatsApp, in person): the roles (title, employer, location, pay, apply link), when it was sent and a note. Nothing is sent. To send roles to a member from Metaintro, use start_job_list_round.
add_job_list_rolesWriteAdd roles to a logged job list
Add roles to a job list you logged with log_job_list. Nothing is sent.
start_job_list_roundWriteStart a job list for a member
Start the next job list round to email a member; it returns the round's jobListId. Each call starts a new round and carries over roles not yet sent, so first call preview_job_list_round without jobListId: when it returns a round, add to that one. Then add roles with add_job_list_round_role, read it with preview_job_list_round and send it with send_job_list_round. threadId is the member's case conversation, from open_case_thread.
add_job_list_round_roleWriteAdd a role to a job list round
Add a role to an unsent job list round: title, employer, location, pay (comp), the apply link (applyUrl, required, checked before it is added; a closed posting is refused), why it fits the member (whyFits) and any catch (catchNote). A role already in the round (same employer, title, location, pay and posted date) is kept as it is and returns duplicate: true; only a new apply link replaces the old one, so get whyFits and catchNote right the first time. Use roles from search_jobs or find_similar_jobs and name the evidence in whyFits. threadId is the member's case conversation, from open_case_thread.
preview_job_list_roundReadPreview a job list round
Read the email a job list round will send: subject, the roles that will go and the ones skipped or held, the member's constraints it was checked against, and contentHash. Show it to the case manager before sending. round is null when nothing is waiting to send. threadId is the member's case conversation, from open_case_thread.
send_job_list_roundWriteSend a job list round
Email a job list round to the member, signed with your name. Pass the contentHash from preview_job_list_round; if the list changed since, it is refused and you preview again. Depending on the person's approval setting it may wait for approval; pass reason naming the member and the roles. threadId is the member's case conversation, from open_case_thread.
show_resultsReadshow results
Cabinet: Show what has already been found and learned for one job seeker: what we know about them and what is still missing, the questions to ask them, what their recent job searches found and why, and the newest reply drafted for them. Use it first for any question about one person, such as why they have no new jobs, what to ask them, what was found for them, or what was drafted. It reads what exists and starts no new work.
get_status_reportWriteget status report
Cabinet: Write a new status report on the job seekers: what changed, who is waiting, and who to focus on first. The report the case manager is reading is already in the conversation. Call this only when the case manager asks for a report: a fresh one, one since a date, or one about one person. For a question about one person, use show_results instead. It takes up to half a minute.
find_jobsWritefind jobs
Cabinet: Look for jobs for some of the job seekers, or for everyone. Use it when the case manager asks to find, search for, or look for work for somebody. Each search runs on its own and takes a few minutes.
draft_repliesWritedraft replies
Cabinet: Draft the next message to some of the job seekers, or to everyone. Use it when the case manager asks to draft, write, reply to, or check in with somebody. Nothing is sent: each draft waits until the case manager asks to send it.
send_repliesWritesend replies
Cabinet: Send the drafted replies to some of the job seekers, or to everyone with a draft waiting. Use it only when the case manager asks to send, such as send it, send Marisol's draft, or send the replies. Each person gets the newest draft written for them in the last two weeks, as it was written, with its roles. A draft goes nowhere when somebody already replied after it, or when the person wrote after it.
check_progressReadcheck progress
Cabinet: How a search or a draft placed in this chat is going: who is finished, and what came of it. Use it when the case manager asks how it is going, or whether it is done.
cancel_requestWritecancel request
Cabinet: Stop a search or a draft placed in this chat. Work already running stops at its next step, and what it wrote stays.
list_job_seekersReadlist job seekers
Cabinet: Who is on the caseload and where each one stands: their stage, how long since anybody reached them, what is booked next, what they want, and what blocks them. Narrow it to the people a question is about.
read_activityReadread activity
Cabinet: Who on the caseload did something over the last days, or did not, person by person. It reads the whole caseload at once, however many people are on it. Use it for questions such as who searched for jobs this week, who has not applied in a month, who has been most active, who did nothing at all, or what Andy and Lena did lately. It answers with how many matched, and lists up to 100 of them with everything each did, when, and the jobs they searched for. Leave activity out to look at everything.
count_activityReadcount activity
Cabinet: How many people on the caseload did each thing over the last days, and how many times, with the job titles they searched for most. It reads the whole caseload at once. Use it for questions such as how many people applied this month, what people are searching for, how activity changed week by week, or which stage or city is most active.
More actions through search_actions and run_action271
[ 04 / 07 ] · Prompts
Ready-made workflows
Clients that support MCP prompts show these as commands. Pick one and your agent starts the workflow with the tools above.
Public
find_jobs_that_fitFind jobs that fit
A short list of live jobs that fit what you want, with what still needs checking.
Arguments: role, location (optional)
explore_careersExplore jobs near me
What is hiring where you live, and which of those roles suit you.
Arguments: location
Personal
plan_my_dayPlan my job search today
What needs doing today: interviews, due reminders, deadlines, stale applications and new matches.
find_jobs_that_fitFind jobs that fit
A short list of live jobs that fit what you want, with what still needs checking.
Arguments: role, location (optional)
explore_careersExplore jobs near me
What is hiring where you live, and which of those roles suit you.
Arguments: location
tailor_resume_for_jobTailor my résumé to a job
A copy of your master résumé tailored to one job, ready to export.
Arguments: jobId
prepare_for_interviewPrepare for an interview
A briefing on the company and role, likely questions and stories from your experience.
Arguments: savedJobId
weekly_reviewReview my week
What you did this week, what came of it and what to change next week.
Organization
triage_my_caseloadTriage my caseload
Who needs you first today and the one action that moves each of them.
prepare_member_meetingPrepare for a member meeting
A one-page briefing on a member: where their search stands and what to agree next.
Arguments: memberId
find_jobs_for_memberFind jobs for a member
Live roles that fit a member, checked against what matters to them, ready to send as a job list.
Arguments: memberId
report_outcomesReport our outcomes
A short outcomes report for a period: placements, engagement and case work, with what changed.
Arguments: period (optional)
[ 05 / 07 ] · Safe by design
Your agent acts as you, and only as you
The same rules hold on every connection and in every client.
Acts as one person
A connection acts as the person who signed in, with that person's access and nothing more.
OAuth and scopes
Sign in with OAuth 2.1, using dynamic client registration and PKCE, or with a personal key. Reading and writing are separate scopes, mcp.read and mcp.write.
You decide what waits
Your approval setting lets agent actions run at once, hold sensitive ones, or hold everything. Held actions wait in Settings > Agents until you approve or decline them.
Organizations stay separate
An organization's address reaches that organization's members only. Any other organization is refused.
Every write is on record
Each change is logged as made by the agent on the person's behalf, and you can disconnect any agent in Settings > Agents.
Data, not instructions
Job postings, company pages and messages reach your agent as data to read, never as instructions to follow.
[ 06 / 07 ] · Limits
Limits and protocol
Limits apply per key, per minute. The public address is limited per network address.
- Public tool calls
- 30 a minute
- Reads
- 240 a minute
- Writes
- 60 a minute
- Chat with the assistant
- 12 a minute
- Cabinet tools
- 12 a minute
- Transport
- Streamable HTTP, stateless
- Protocol
- 2026-07-28 and 2025 revisions
- Results
- Job cards, JSON text and structured content
[ 07 / 07 ] · FAQ
Questions about the MCP server
Is it free?
Yes. Every connection is free: public search, your own job search and organization tools. Rate limits keep it fast for everyone.
Do I need an account?
Not to search. The public address searches jobs and employers with no sign-in. To work on your own profile, résumés and applications, sign in with a free Metaintro account.
Which clients work?
Any client that supports remote MCP servers over Streamable HTTP, including Claude, Claude Code, ChatGPT, Cursor, VS Code and Codex. Claude and ChatGPT show job results as interactive job cards; other clients get the same results as JSON.
Can it apply to jobs for me?
No. It records the applications you make so your tracker stays current, and it never submits one. Anything it sends for you, such as a message to your case manager, follows your approval setting, which can hold it until you approve.
How is this different from the Jobs API?
The Jobs API is a REST endpoint for your own code: one key, job search, 60 requests a minute. The MCP server is built for AI agents: they discover the tools on their own, and once you sign in they can work on your own job search, not only search jobs.
Start now
Search live jobs from your agent in one line
Add the public address now. Sign in later, when you want your agent to work on your own search.