Skip to main content
Glama

Worklittle Jobs

Jobs · Apply For Job

apply_for_job
Destructive

Jobs — Apply to a job for the user: Worklittle fills out and submits the application in a browser. Pass job_id from search_jobs. For a Worklittle-hosted posting also include name, email and resume. It submits by default; pass auto_submit false when the user wants to review first, then show them the answers from check_application_status and send it with submit_application only after they say so.

Input Schema

NameRequiredDescriptionDefault
testNotrue: a free practice run. Nothing opens, nothing is stored or sent to an employer, no personal information needed. The session moves queued → running → completed over ~25 seconds.
job_idNoWorklittle job id from search_jobs / get_job_details.
job_idsNoApply to up to 10 jobs in one call (instead of job_id), all for the same person and with the same options. Returns one result per job.
applicantNoWith use_profile false: the person applying. name and email are required; phone, city, state, country, work_authorization, needs_sponsorship, desired_salary, about_you are recommended. Send their resume as resume_text or resume_pdf_base64.
resume_idNoUse this one of the user's saved resumes. Leave out to let Worklittle pick the best one for the job.
auto_submitNoDefault true: submit when the form is complete. false: stop at review (status awaiting_submit) so the user can check every answer; send it with submit_application.
resume_htmlNoOptional resume HTML to seed.
resume_textNoWith use_profile false: the applicant's resume as plain text.
use_profileNoDefault true: apply as the signed-in user with their profile. false: apply as the applicant described below (another person, no Worklittle account needed).
applicant_idNoWith use_profile false: the person from an earlier apply. Store it permanently with the person and reuse it; it works with any Worklittle API key. It is also emailed to them; if lost, ask them for it.
tailor_resumeNoDefault from apply settings (on): write a resume tailored to this job. false: send the resume as is.
max_per_companyNoApplications to one company per 30 days for this person. Defaults to their apply setting (3). Raise it only after the person agrees, when a start returned COMPANY_LIMIT_REACHED.
cover_letter_htmlNoOptional cover letter HTML to seed.
resume_pdf_base64NoWith use_profile false: the applicant's resume PDF, base64.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / properties / confirm_same_company
      Removed value: -{
      -  "description": "Only after the person agrees: apply even though they already applied to 3+ jobs at this company in the last 30 days (the call paused with CONFIRM_SAME_COMPANY).",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / max_per_company
      Added value: +{
      +  "description": "Applications to one company per 30 days for this person. Defaults to their apply setting (3). Raise it only after the person agrees, when a start returned COMPANY_LIMIT_REACHED.",
      +  "maximum": 10,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / applicant_id / description
      Previous value: -"With use_profile false: the person from an earlier apply. Store it permanently with the person and reuse it. It is also emailed to them; if lost, ask them for it."New value: +"With use_profile false: the person from an earlier apply. Store it permanently with the person and reuse it; it works with any Worklittle API key. It is also emailed to them; if lost, ask them for it."
  3. Changed1 schema field changed
    • changedInput schema / properties / applicant_id / description
      Previous value: -"With use_profile false: reuse an applicant from an earlier apply."New value: +"With use_profile false: the person from an earlier apply. Store it permanently with the person and reuse it. It is also emailed to them; if lost, ask them for it."
  4. Changed1 schema field changed
    • addedInput schema / properties / confirm_same_company
      Added value: +{
      +  "description": "Only after the person agrees: apply even though they already applied to 3+ jobs at this company in the last 30 days (the call paused with CONFIRM_SAME_COMPANY).",
      +  "type": "boolean"
      +}
  5. Changed10 schema fields changed
    • addedInput schema / properties / applicant
      Added value: +{
      +  "description": "With use_profile false: the person applying. name and email are required; phone, city, state, country, work_authorization, needs_sponsorship, desired_salary, about_you are recommended. Send their resume as resume_text or resume_pdf_base64.",
      +  "properties": {
      +    "about_you": {
      +      "description": "Standing answers: notice period, sponsorship, referrals, anything else.",
      +      "type": "string"
      +    },
      +    "city": {
      +      "type": "string"
      +    },
      +    "country": {
      +      "type": "string"
      +    },
      +    "desired_salary": {
      +      "type": "string"
      +    },
      +    "email": {
      +      "type": "string"
      +    },
      +    "linkedin": {
      +      "type": "string"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "needs_sponsorship": {
      +      "description": "true if they need visa sponsorship to work",
      +      "type": "boolean"
      +    },
      +    "phone": {
      +      "type": "string"
      +    },
      +    "state": {
      +      "type": "string"
      +    },
      +    "website": {
      +      "type": "string"
      +    },
      +    "work_authorization": {
      +      "description": "ISO2 country codes",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "email"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / applicant_id
      Added value: +{
      +  "description": "With use_profile false: reuse an applicant from an earlier apply.",
      +  "type": "string"
      +}
    • addedInput schema / properties / job_ids
      Added value: +{
      +  "description": "Apply to up to 10 jobs in one call (instead of job_id), all for the same person and with the same options. Returns one result per job.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / resume_id
      Added value: +{
      +  "description": "Use this one of the user's saved resumes. Leave out to let Worklittle pick the best one for the job.",
      +  "type": "string"
      +}
    • addedInput schema / properties / resume_pdf_base64
      Added value: +{
      +  "description": "With use_profile false: the applicant's resume PDF, base64.",
      +  "type": "string"
      +}
    • addedInput schema / properties / resume_text
      Added value: +{
      +  "description": "With use_profile false: the applicant's resume as plain text.",
      +  "type": "string"
      +}
    • addedInput schema / properties / tailor_resume
      Added value: +{
      +  "description": "Default from apply settings (on): write a resume tailored to this job. false: send the resume as is.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / test
      Added value: +{
      +  "description": "true: a free practice run. Nothing opens, nothing is stored or sent to an employer, no personal information needed. The session moves queued → running → completed over ~25 seconds.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / use_profile
      Added value: +{
      +  "description": "Default true: apply as the signed-in user with their profile. false: apply as the applicant described below (another person, no Worklittle account needed).",
      +  "type": "boolean"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "job_id"
      -]New value: +[]
  6. Changed1 schema field changed
    • changedInput schema / properties / auto_submit / description
      Previous value: -"Ignored on API keys. Sessions started with a key always submit."New value: +"Default true: submit when the form is complete. false: stop at review (status awaiting_submit) so the user can check every answer; send it with submit_application."
  7. Changed1 schema field changed
    • changedInput schema / properties / auto_submit / description
      Previous value: -"If false, wait for approve_apply_submit before submitting. Default true (always submit on)."New value: +"Ignored on API keys. Sessions started with a key always submit."
  8. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, and the description reinforces this by stating it 'submits the application' to an employer by default and explains how to stop before submission. It adds real context (external submission, default-true submission) but doesn't state irreversibility or any rate/company limits beyond what max_per_company's schema covers.

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 core action, then progressive detail on the review workflow. It is dense and the third sentence packs several conditions, but every sentence carries operational meaning and nothing is redundant.

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

Completeness4/5

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

For a 14-parameter, multi-step, externally-effectful tool with an output schema, the description covers the primary flow and the safe-review alternative well. Minor gaps: the test-mode practice run, batch job_ids, and applicant_id reuse are left entirely to the schema, but the critical decision points are addressed.

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%, so baseline is 3; the description earns above that by explaining the workflow semantics of key flags — auto_submit's default and review state, and that applicant fields are only needed for Worklittle-hosted postings. It doesn't cover test, job_ids batching, or applicant_id reuse, which live only in the schema.

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?

States a specific verb and resource ('Apply to a job for the user') and immediately clarifies the mechanism: Worklittle fills and submits the application in a browser. This distinguishes it from siblings like submit_application or check_application_status, which operate on an already-created application.

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?

Gives explicit routing: 'Pass job_id from search_jobs', and names the review-first alternative path (auto_submit false → check_application_status → submit_application only after user approval). Both the default and the when-not condition are stated, with the sibling tools to use at each step.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources