Skip to main content

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.

Try it in Claude Code
claude mcp add --transport http metaintro-public https://www.metaintro.com/api/mcp/public

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/public

    Live 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/mcp

    Your 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

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.

## ClaudeIn the Claude app or on claude.ai, open Settings, then Connectors, and choose Add custom connector. Name it Metaintro and paste an address.## ChatGPTIn ChatGPT, open Settings, then Connectors, and create a custom connector with an address. Choose OAuth when it asks how to sign in.> Depending on your plan, custom connectors may need developer mode or your workspace admin's approval.Your job search, sign-in: `https://www.metaintro.com/api/mcp`Search 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

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 cards

    Search 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 cards

    Read 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_insightsRead

    Read 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_companyRead

    Read 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 cards

    List a company's open jobs

    List an employer's open jobs by its slug, newest first. Page with cursor.

  • find_similar_jobsReadJob cards

    Find 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_demandRead

    Read 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
  • chatWrite

    Chat 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.

  • whoamiRead

    Who 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_actionsRead

    Search 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_requestRead

    Check 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_actionWrite

    Run 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_profileRead

    Read my profile

    Read your master profile: experience, skills, education, preferences, and its version number (pass it as expectedVersion when you change it).

  • update_profile_sectionWrite

    Replace 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_fieldsWrite

    Change 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_changesRead

    List profile changes

    List earlier versions of your master profile, newest first, with who or what changed it.

  • get_search_preferencesRead

    Read my search preferences

    Read the saved search filters and last search your job matching runs on. Pay and dealbreakers are in your profile.

  • update_dealbreakersWrite

    Set dealbreakers

    Set the things a job must not have. Pass the profile's current version as expectedVersion.

  • update_compensationWrite

    Set pay expectations

    Set the pay you are looking for. Pass the profile's current version as expectedVersion.

  • get_master_resumeRead

    Read my master résumé

    Read your primary résumé, the one Metaintro tailors from, with its content and design.

  • list_resumesRead

    List my résumés

    List the résumés you built in Metaintro.

  • get_resumeRead

    Read a résumé

    Read one résumé you built, by its id.

  • update_resumeWrite

    Edit 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_resumesRead

    List uploaded résumé files

    List the résumé files you uploaded.

  • create_resumeWrite

    Build a résumé from my profile

    Build a résumé from your existing master profile. To create or tailor one conversationally, use chat.

  • export_resumeWrite

    Export 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_resumeWrite

    Choose my master résumé

    Choose which of your résumés is the primary résumé used for tailoring.

  • duplicate_resumeWrite

    Copy a résumé

    Make an editable copy of one of your résumés.

  • list_resume_versionsRead

    List résumé versions

    Read the saved versions of one of your résumés before restoring or editing it.

  • get_resume_downloadRead

    Download an uploaded résumé

    Get a download URL for one of your uploaded résumé files. Treat the returned URL as private.

  • search_jobsReadJob cards

    Search 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 cards

    Read 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_insightsRead

    Read 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_companyRead

    Read 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 cards

    List a company's open jobs

    List an employer's open jobs by its slug, newest first. Page with cursor.

  • find_similar_jobsReadJob cards

    Find 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_demandRead

    Read 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_jobsRead

    List 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_stepsRead

    What 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_jobsRead

    List my jobs

    List every job and lead you are tracking, grouped by stage.

  • get_my_jobRead

    Read one of my jobs

    Read one tracked job or lead in full, with its notes, contacts, interviews, offer and reminders.

  • check_resume_fitWrite

    Check 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_jobWrite

    Save 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_jobWrite

    Update a tracked job

    Move a tracked job to another stage, or change its pay, location, note or interview.

  • add_job_noteWrite

    Add a note to a job

    Add a note to a tracked job or lead.

  • record_applicationWrite

    Record an application

    Record that you applied to a tracked job: how, when, and with which résumé.

  • set_job_reminderWrite

    Set a job reminder

    Set a reminder on a tracked job, such as a follow-up date.

  • get_weekly_work_searchRead

    Read 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_searchWrite

    Export 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_preferencesWrite

    Change 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_memoryRead

    Read what Metaintro remembers

    Read the things Metaintro's chat has remembered about you and your search.

  • list_threadsRead

    List my conversations

    List your conversations, newest first. Page with cursor.

  • read_threadRead

    Read a conversation

    Read the messages in one of your conversations, including your case manager's. Page with cursor.

  • record_job_contactWrite

    Save a job contact

    Save a contact on a tracked job. This records information; it does not contact the person.

  • record_interviewWrite

    Record an interview

    Record an interview and its details on a tracked job. Use chat for interview preparation.

  • record_offerWrite

    Record a job offer

    Record offer terms on a tracked job. This does not accept or decline an offer with the employer.

  • record_follow_upWrite

    Record a follow-up

    Record a follow-up you already made on a tracked job. This does not send a message.

  • update_job_reminderWrite

    Update a job reminder

    Update or complete an existing reminder for a tracked job.

  • list_application_materialsRead

    List application materials

    Read the résumé and supporting documents prepared for a tracked job.

  • get_job_documentRead

    Read an application document

    Read a saved application document such as a cover letter or interview notes.

  • save_job_documentWrite

    Save 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_documentWrite

    Export an application document

    Export a prepared document for your own use. This does not send it to an employer.

  • check_job_availabilityWrite

    Check whether a job is open

    Check the availability of a job you are tracking before applying.

  • get_case_managerRead

    Read my case manager's status

    See who your case manager is on a conversation and whether a request to them is open.

  • message_case_managerWrite

    Message 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_managerWrite

    Ask 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
  • whoamiRead

    Who 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_actionsRead

    Search 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_requestRead

    Check 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_actionWrite

    Run 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 cards

    Search 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 cards

    Read 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_insightsRead

    Read 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_companyRead

    Read 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 cards

    List a company's open jobs

    List an employer's open jobs by its slug, newest first. Page with cursor.

  • find_similar_jobsReadJob cards

    Find 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_demandRead

    Read 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_membersRead

    List 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_memberRead

    Find a member

    Find members of an organization by name or email.

  • get_memberRead

    Read a member

    Read one member's record in an organization.

  • get_member_profileRead

    Read a member's profile

    Read a member's master profile.

  • get_member_briefRead

    Read 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_briefWrite

    Write a fresh member brief

    Write a fresh brief on a member from their current record, for a handoff or a meeting.

  • get_what_mattersRead

    Read 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_mattersWrite

    Set 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_activityRead

    List a member's activity

    List a member's timeline: notes, check-ins, outreach, applications and stage changes. Page with cursor.

  • add_member_noteWrite

    Add 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_inWrite

    Log 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_insRead

    List check-ins

    List an organization's check-ins, by status and owner.

  • log_outreachWrite

    Log 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_stageWrite

    Move a member's stage

    Move a member to another pipeline stage: intake, searching, résumé building, applying, interviewing, offer or placed.

  • update_member_statusWrite

    Change 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_managerWrite

    Assign 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_managersRead

    List 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_listsRead

    List 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_listRead

    Read a job list

    Read one job list in full: each role, its status and feedback, and the attachments sent with it.

  • update_role_statusWrite

    Update a role's status

    Record where a member stands on a role from a job list you sent them.

  • get_member_job_boardRead

    Read a member's jobs

    Read every job and lead a member is tracking, by stage.

  • move_member_jobWrite

    Move 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_noteWrite

    Add 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_applicationWrite

    Record 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_reminderWrite

    Set 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_reminderWrite

    Update 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_contactWrite

    Record 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_interviewWrite

    Record 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_offerWrite

    Record 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_jobWrite

    Archive 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_jobWrite

    Restore 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_applicationWrite

    Log an application

    Record an application a member made to a job that was not on a list you sent.

  • get_work_queueRead

    Read 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_queueRead

    List members waiting on a reply

    List members whose newest message waits on a staff reply.

  • read_member_threadRead

    Read a member's conversation

    Read one of a member's conversations. Page with cursor.

  • add_staff_noteWrite

    Add a staff-only note

    Add a note on a member's conversation that only staff see. The member never sees it.

  • list_tasksRead

    List tasks

    List an organization's tasks, by status and owner.

  • create_taskWrite

    Create a task

    Create a task, optionally for a member, with a due date.

  • update_task_statusWrite

    Change a task's status

    Change a task's status.

  • list_placementsRead

    List 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_optionsRead

    List 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_placementWrite

    Record 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_stageWrite

    Move 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_placementWrite

    Update 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_overviewRead

    Read 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_reportRead

    Read 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_reportRead

    Read 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_reportRead

    Read 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_reportRead

    Read 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_promisesRead

    List 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_promiseWrite

    Record 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_keptWrite

    Mark a promise kept

    Mark a promise to a member kept, or open again with kept false. promiseId comes from list_promises.

  • list_alertsRead

    List 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_alertWrite

    Acknowledge an alert

    Acknowledge an alert: you have seen it and it stays open until it is resolved.

  • resolve_alertWrite

    Resolve an alert

    Resolve an alert once what it asked for is done. Needs permission to manage the organization.

  • snooze_alertWrite

    Snooze an alert

    Hide an alert until a date and time (until, ISO 8601), such as the day after a scheduled check-in.

  • list_recommendationsRead

    List 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_memberWrite

    Add 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_recommendationWrite

    Resolve a recommendation

    Resolve a recommendation once it is done. recommendationId comes from list_recommendations.

  • update_check_in_statusWrite

    Change 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_taskWrite

    Update 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_threadsRead

    List 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_threadWrite

    Open 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_searchRead

    Read 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_searchWrite

    Export 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_listWrite

    Log 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_rolesWrite

    Add roles to a logged job list

    Add roles to a job list you logged with log_job_list. Nothing is sent.

  • start_job_list_roundWrite

    Start 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_roleWrite

    Add 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_roundRead

    Preview 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_roundWrite

    Send 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_resultsRead

    show 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_reportWrite

    get 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_jobsWrite

    find 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_repliesWrite

    draft 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_repliesWrite

    send 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_progressRead

    check 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_requestWrite

    cancel 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_seekersRead

    list 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_activityRead

    read 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_activityRead

    count 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

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_fit

    Find jobs that fit

    A short list of live jobs that fit what you want, with what still needs checking.

    Arguments: role, location (optional)

  • explore_careers

    Explore jobs near me

    What is hiring where you live, and which of those roles suit you.

    Arguments: location

Personal

  • plan_my_day

    Plan my job search today

    What needs doing today: interviews, due reminders, deadlines, stale applications and new matches.

  • find_jobs_that_fit

    Find jobs that fit

    A short list of live jobs that fit what you want, with what still needs checking.

    Arguments: role, location (optional)

  • explore_careers

    Explore jobs near me

    What is hiring where you live, and which of those roles suit you.

    Arguments: location

  • tailor_resume_for_job

    Tailor my résumé to a job

    A copy of your master résumé tailored to one job, ready to export.

    Arguments: jobId

  • prepare_for_interview

    Prepare for an interview

    A briefing on the company and role, likely questions and stories from your experience.

    Arguments: savedJobId

  • weekly_review

    Review my week

    What you did this week, what came of it and what to change next week.

Organization

  • triage_my_caseload

    Triage my caseload

    Who needs you first today and the one action that moves each of them.

  • prepare_member_meeting

    Prepare 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_member

    Find 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_outcomes

    Report our outcomes

    A short outcomes report for a period: placements, engagement and case work, with what changed.

    Arguments: period (optional)

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.

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

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.

Return to navigation