Skip to main content
Glama

Apply to Job

aiapplyd_apply
Destructive

Automatically apply to a job by rewriting your resume and cover letter and submitting the application on the employer's own ATS. Provide either job_match_id or job_url; choose auto or review mode.

Instructions

Apply to one job on the user's behalf. Pass job_match_id from aiapplyd_get_matches, or job_url for any posting. AI Applyd rewrites the resume and cover letter for that role, then completes and submits the application on the employer's own hiring system (Workday, Greenhouse, Lever, Ashby, iCIMS and the other major ATS platforms). 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 aiapplyd_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 aiapplyd_triage_matches. Next: aiapplyd_get_applications to follow it, and aiapplyd_review_application if it waits for approval.

Input Schema

TableJSON 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 aiapplyd_get_matches (e.g. 48213). Pass this OR job_url.

Output Schema

TableJSON 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 aiapplyd_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.8.0

TDQS

A4.8/5.0
Behavior5/5

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

The description goes beyond the annotations by detailing that it rewrites the resume and cover letter, submits on the employer's system, spends applications and AI credits, and that a submitted application cannot be withdrawn. It also flags idempotency behavior (alreadyExisted) and error handling guidance, all of which are not in the annotations. This fully discloses the destructive, non-idempotent nature in concrete terms.

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?

The description is long but each sentence earns its place; it is front-loaded with the core purpose and then methodically covers identifiers, behavior, side effects, error handling, and alternatives. While it could be tightened, the density is justified for a destructive, high-stakes operation.

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?

Given the complexity of the operation (external submission, side effects, error handling), the description covers all necessary aspects: how to identify the job, what the tool does, side effects, retry guidance, and follow-up tools. The existence of an output schema means return values don't need to be spelled out, and the description is complete for an agent to invoke correctly.

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 description coverage is 100%, so the baseline is 3. The description adds value by explaining that job_match_id must come from aiapplyd_get_matches and that job_url works for any posting, plus clarifying that mode applies only to this application and never changes user settings. These semantics go beyond the schema's field-level descriptions without being redundant.

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?

The description opens with 'Apply to one job on the user's behalf,' which states a specific verb and resource. It further distinguishes itself by explaining how to identify the job (via job_match_id from aiapplyd_get_matches or job_url) and explicitly says not to use it for saving or skipping matches, directing to aiapplyd_triage_matches. This makes it clear among the 16 siblings.

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?

It provides explicit when-to-use guidance: 'apply only to jobs the user chose' and gives exact alternatives for other actions: 'Do not use it to save or skip a match; use aiapplyd_triage_matches.' It also maps next steps (aiapplyd_get_applications, aiapplyd_review_application) and clarifies the mode semantics, leaving no ambiguity about when to invoke this tool versus other tools.

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