Skip to main content
Glama

Apply to Job

getmattered_apply
Destructive

Submits a job application on the employer's own hiring system, rewriting the resume and cover letter for that role. Pass a job_match_id or job_url, then choose auto-submit or review-first.

Instructions

Apply to one job on the user's behalf. Pass job_match_id from getmattered_get_matches, or job_url for any posting. GetMattered rewrites the resume and cover letter for that role, then completes and submits the application on the employer's own hiring system (Greenhouse, Lever, Ashby, Workday, Personio, Teamtailor, SmartRecruiters, Recruitee, Breezy, Workable, Rippling, BambooHR, JazzHR, softgarden, Jobvite, Gem, Zoho Recruit, Dayforce, Hireology, Dover, Oracle Recruiting Cloud, Paylocity, Oracle Taleo, UKG Pro Recruiting, ADP, Avature, CareerPlug, Pinpoint, Manatal, and Eightfold). mode "auto" submits with no review step; mode "review" prepares everything and holds it for the user's approval; omit mode to follow the review setting on the user's account. The mode applies to this one application and never changes the user's settings. Spends one of the user's applications and AI credits, and a submitted application cannot be withdrawn, so apply only to jobs the user chose. Returns the application id and a tracking link; when the job already has an application, that one comes back with alreadyExisted true instead of a second. On a timeout or an error, call getmattered_get_applications before retrying, and never re-apply by job_url to a job already applied to by job_match_id. Do not use it to save or skip a match; use getmattered_save_matches or getmattered_skip_matches. Next: getmattered_get_applications to follow it, and getmattered_approve_applications if it waits for approval.

Input Schema

NameRequiredDescriptionDefault
modeNo"auto" submits with no review step. "review" holds the prepared application for the user's approval. Omit to follow the user's account setting. Applies to this application only.
job_urlNoURL of any job posting to apply to (e.g. "https://boards.greenhouse.io/acme/jobs/123"). Pass this OR job_match_id.
job_match_idNoThe job_match_id of a match from getmattered_get_matches (e.g. 48213). Pass this OR job_url.

Output Schema

NameRequiredDescriptionDefault
jobUrlYes
statusYesOur own record. Never proof the employer received it.
companyYes
outcomeYesstarted: a new application; already_in_progress: this job already had one (alreadyExisted); not_confirmed: the user declined, nothing was sent.
jobTitleYes
jobMatchIdYes
trackingUrlYes
recordedModeYes
applicationIdYesThe application to follow with getmattered_get_applications. Null only when nothing was started.
requestedModeYes
alreadyExistedYesTrue when this job already had an application, which is returned instead of a second one.
preparationStatusYes
preparedUnderFreeWatchYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.9.1

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive/non-idempotent/open-world, but the description adds the costs (one application credit + AI credits), irreversibility ('a submitted application cannot be withdrawn'), the alreadyExisted dedupe behavior, and the fact that mode never mutates account settings. That is substantive context well beyond the annotations and does not contradict them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and identifiers, then costs/risks, then alternatives and next steps — a sensible order. The one weak spot is the 30-item ATS enumeration, which is long and mostly inert for the calling agent, though it does scope the 'any posting' claim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world, no-required-param tool with an output schema, it covers everything an agent needs: valid inputs, cost, irreversibility, dedupe-on-existing-application semantics, retry protocol, and follow-up tools. Return payload detail is correctly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the mode enum is documented inline, so the baseline is 3; the description still adds value by naming the source of job_match_id (getmattered_get_matches) and clarifying that job_url accepts any posting. It does not add format/syntax detail for job_url beyond the schema example, keeping it at 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Apply to one job on the user's behalf') and immediately names the two accepted identifiers. It is explicitly distinguished from getmattered_save_matches and getmattered_skip_matches, so an agent can tell it apart from the other match-manipulation siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States exactly when to use it (jobs the user chose), names the alternatives for saving/skipping, and gives a real exclusion rule ('never re-apply by job_url to a job already applied to by job_match_id'). It also prescribes the recovery path on timeout/error and the follow-up tools to call next.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.