Skip to main content
Glama

Worklittle Jobs

Server Details

Find jobs near you. Search over 4 million openings by role, place, pay, visa and more.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL

TDQS

A3.7/5.0

Scored across 23 tools

Disambiguation4/5

Most tools have clearly distinct purposes, especially around search, application lifecycle, profile, and resume. There is some overlap between list_applications, list_active_applications, and check_application_status, and between save_about_me and update_my_profile, but the descriptions mostly clarify when to use each.

Naming Consistency5/5

All tool names use consistent snake_case and generally follow a verb_noun pattern such as search_jobs, apply_for_job, get_my_profile, and update_apply_settings. The few technical names like mint_mcp_ui_embed_session still fit the same casing convention.

Tool Count3/5

With 23 tools, the surface is heavy for a job-search and application assistant, even though most tools map to real operations. Several ancillary tools for chats, logout, and embed sessions add breadth beyond the core job workflow.

Completeness4/5

The core lifecycle is well covered: search, job details, market data, apply, check status, steer, stop, submit, track, settings, profile, and resume. Minor gaps remain around managing multiple saved resumes, job alerts or automations, and reading chat contents beyond listing recent chats.

Available Tools

23 tools
apply_for_jobJobs · Apply For JobA
Destructive
Inspect

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.

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

NameRequiredDescription

No output parameters

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.

check_application_statusJobs · Check Application StatusB
Read-onlyIdempotent
Inspect

Jobs — Check an application Worklittle is filling out: its status, which form fields are filled, and a live view link. Only the status completed means it was submitted.

NameRequiredDescriptionDefault
session_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description still adds real value beyond that by disclosing the semantics of the returned status — 'Only the status completed means it was submitted' — which prevents an agent from misreading partial states as submission.

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?

Two sentences, no filler, with the core purpose front-loaded before the status caveat. The 'Jobs —' prefix duplicates the title and adds nothing, which is the only wasted token.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. The blocking gap is the undocumented session_id: for a single-parameter tool with 0% schema coverage, an agent has no guidance on how to acquire the required input, which is the one thing it must get right to call the tool.

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

Parameters2/5

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

Schema description coverage is 0% and the single required parameter session_id has no description in either the schema or the description text. The description never explains what a session_id is, where to obtain it, or whether it is a job-application session or a chat session — leaving the only input undocumented.

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

Purpose4/5

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

The description names a specific verb (Check) and resource (an application Worklittle is filling out) and enumerates what is returned: status, filled form fields, and a live view link. That scope — a single in-flight application — implicitly separates it from list_active_applications and submit_application, but no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the phrase 'an application Worklittle is filling out,' which suggests polling an application currently in progress. There is no explicit when-to-use statement, no exclusion, and no routing to alternatives such as list_active_applications (for many) or steer_application (to change direction).

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

delete_my_resumeJobs · Delete My ResumeA
DestructiveIdempotent
Inspect

Jobs — Delete the user's main resume from their profile. Other saved resumes stay.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
okNo
deletedNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds the key non-obvious fact about blast radius: only the main resume is removed and "other saved resumes stay," which is exactly the detail an agent needs before committing a destructive call.

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

Conciseness5/5

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

Two short sentences with zero filler, and the scope-limiting clause is front-loaded where it matters most for a destructive operation. Nothing needs trimming.

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?

With annotations covering destructiveness/idempotency, zero parameters, and an output schema present, the description needs only to convey scope — which it does. Minor residual gap: it doesn't say what happens to in-flight applications tied to that resume, though that may be covered by 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?

The tool takes zero parameters, so there is no parameter semantics to document; the baseline for a parameterless schema is 4. The description correctly implies the target is fixed (the user's main resume) rather than selectable.

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

Purpose4/5

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

The description names a specific verb and resource ("Delete the user's main resume from their profile") and narrows the scope to the main resume, which an agent could otherwise confuse with a general resume-deletion. It doesn't explicitly name a sibling (e.g. get_my_resume / upload_my_resume), but the scope qualifier does most of the disambiguating work.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: an agent can infer this is the tool for removing the user's primary resume. There is no explicit when-to-use/when-not, no mention of prerequisites (e.g. whether a main resume must exist), and no routing to alternatives for deleting other saved resumes.

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

get_apply_settingsJobs · Get Apply SettingsA
Read-onlyIdempotent
Inspect

Jobs — Get the user's apply settings: auto_apply (Worklittle applies to matching jobs on its own), auto_submit (submit without a review stop) and tailor_resume (tailor the resume to each job).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds useful semantic context on what auto_apply/auto_submit/tailor_resume mean, but says nothing about auth/connection requirements, defaults, or behavior for a user with no settings configured.

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?

One front-loaded sentence with the resource first and the three field definitions as compact parentheticals; every clause carries information. Slightly dense but no wasted text.

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?

An output schema exists, so return values need not be described, and the description still explains the meaning of the three flags. The only gap is the missing pointer to update_apply_settings and any account-connection prerequisite, both minor for a read-only zero-arg getter.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is trivially complete. Baseline 4 applies for a no-parameter tool.

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

Purpose4/5

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

States a specific verb and resource (get the user's apply settings) and defines each of the three settings returned, so the agent knows exactly what this retrieves. It does not name or contrast with the obvious sibling update_apply_settings, so sibling differentiation is left to the tool name.

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

Usage Guidelines3/5

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

Usage is only implied by the getter framing — an agent can infer it should call this before update_apply_settings, but the description never says when to use it versus that sibling, nor any prerequisites. No explicit when/when-not guidance is given.

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

get_job_detailsJobs · Get Job DetailsA
Read-onlyIdempotent
Inspect

Jobs — Fetch detailed information about a specific job, including full responsibilities, qualifications, and company details. Pass job_id from search_jobs when you have one. If the user asks for full details of a role without an id (e.g. the first software engineer job in Austin), pass query and optional location instead — the tool loads the first matching live listing.

NameRequiredDescriptionDefault
queryNoRole/title search used when job_id is missing (picks the first live match).
job_idNoThe job ID from a previous search_jobs result when available.
locationNoOptional location substring when resolving details by query.

Output Schema

NameRequiredDescription
idNo
urlNo
titleNo
locationNo
descriptionNo
company_nameNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world. The description adds genuinely non-obvious behavior: query-based resolution silently picks the FIRST matching live listing, which is a caveat an agent would not otherwise know. It stops short of covering ordering criteria or pagination, so not a 5.

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?

Two tight, front-loaded sentences with no filler, and the constraint on match selection comes before the fallback path. The 'Jobs — ' prefix merely echoes the title and title field, a minor redundancy.

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?

An output schema exists and the tool is a simple read with all-optional parameters, so the description only had to resolve which parameter to use — which it does well. The one remaining gap is conflicting-parameter behavior, which is unlikely but not 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 3 is the baseline, but the description goes further by explaining the precedence relationship between job_id and query and the conditional role of location — relational semantics the schema does not express. It does not clarify what happens if both job_id and query are supplied, preventing a 5.

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 ('Fetch detailed information about a specific job') and enumerates what detail is returned (responsibilities, qualifications, company details). It is clearly distinguishable from search_jobs, which returns listings rather than details.

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?

Explicitly gives both invocation paths: pass job_id when it came from search_jobs, otherwise pass query plus optional location. It even supplies a concrete example ('first software engineer job in Austin'), leaving no ambiguity about which alternative to pick.

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

get_market_overviewJobs · Get Market OverviewA
Read-onlyIdempotent
Inspect

Jobs — Returns aggregate job-market statistics from Worklittle. Call with no args for the full indexed market (counts, workplace mix, top hiring companies). When the user names a role and/or city (e.g. product managers in San Francisco), pass query and location. The filtered slice includes match count, top companies in the sample, and salary signals from listings that publish pay.

NameRequiredDescriptionDefault
queryNoRole or title filter for a market slice (e.g. product manager).
locationNoLocation substring for a market slice (e.g. San Francisco).
workplace_typeNoOptional workplace filter for the slice.

Output Schema

NameRequiredDescription
total_jobsNo
top_companiesNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false. The description adds real value beyond that by describing what comes back for each mode and flagging that salary signals only cover "listings that publish pay" — a meaningful coverage caveat.

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?

Three sentences, front-loaded with purpose and followed by the unfiltered-then-filtered call pattern in a logical order. The leading "Jobs —" restates the title in the description field, a minor redundancy.

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?

An output schema exists, so return values need not be exhaustively explained, and the rich annotations carry the safety profile. The only gap is the unmentioned workplace_type parameter, which the schema covers but the prose ignores.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents query, location and the workplace_type enum; baseline is 3. The description reinforces query/location with the same examples found in the schema but never mentions workplace_type, adding little beyond structured data.

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

Purpose4/5

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

States a specific verb and resource: "Returns aggregate job-market statistics from Worklittle." The aggregate/slice framing implicitly separates it from listing-oriented siblings like search_jobs, but no sibling is named explicitly, so it falls short of a 5.

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

Usage Guidelines4/5

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

Gives clear conditional guidance: call with no args for the full indexed market, pass query and location when the user names a role and/or city, with a worked example. It does not name an alternative tool or state when not to use this one, so no exclusion guidance.

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

get_my_profileJobs · Get My ProfileA
Read-onlyIdempotent
Inspect

Jobs — Get the user's Worklittle profile (name, location, contact details and job preferences). If they have not linked their account it returns connected false; use get_my_resume or apply_for_job to sign them in.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint, so the safety profile is covered; the description adds the non-obvious behavioral fact that an unlinked account yields connected=false rather than an error. That is real value beyond the structured fields, though nothing is said about caching or scopes.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and payload, followed immediately by the edge-case and fallback. No wasted text.

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?

With an output schema present, return values need not be spelled out, and the description still summarizes the payload and covers the connected=false case. Slightly incomplete in not stating any precondition about authentication for the success path, but nothing an agent needs to call it is missing.

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?

Zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly implies the tool takes no arguments and targets the current user implicitly.

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 ("Get the user's Worklittle profile") and enumerates the returned content (name, location, contact details, job preferences). It is clearly distinguishable from sibling readers like get_my_resume, which it explicitly names.

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

Usage Guidelines4/5

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

Gives an explicit failure-case routing: if the account is not linked, use get_my_resume or apply_for_job to sign in. It does not explicitly frame when to prefer this over update_my_profile, but the read-oriented framing plus named alternatives gives clear context.

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

get_my_resumeJobs · Get My ResumeA
Read-onlyIdempotent
Inspect

Jobs — Get the user's main resume: its status (ready, processing or missing) and, when ready, the resume text and profile details read from it. Use it to tailor advice or an application to the user's real experience.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description earns credit beyond them by disclosing the three-state result model — 'ready, processing or missing' — which tells an agent that a missing resume is a normal state rather than an error and that a processing state may require retry logic.

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

Conciseness5/5

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

Two sentences with zero padding. The return shape is front-loaded ahead of the usage advice, so an agent scanning for capability gets it immediately.

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?

An output schema exists and annotations cover safety, so the description need not re-document the response. What it does add — the tri-state status semantics and a concrete use case — is exactly the gap the structured fields leave open for a zero-parameter read.

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?

The tool takes zero parameters, so per the rubric this lands at the baseline of 4. The description correctly implies a no-argument call by never referencing any input, and nothing is left ambiguous about what the caller must supply.

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

Purpose4/5

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

The description names a specific verb and resource ('Get the user's main resume') and enumerates what the caller receives: status, resume text, and profile details. It implicitly distinguishes itself from upload_my_resume and delete_my_resume via the read verb, but it never names those siblings, so an agent must infer the boundary rather than being told.

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

Usage Guidelines4/5

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

It gives a concrete trigger for use: 'Use it to tailor advice or an application to the user's real experience.' That is a clear context, not just an implied one. It stops short of saying when not to call it (e.g., prefer get_my_profile for profile-only reads) or what to do when status is 'missing' — upload_my_resume is the obvious follow-up but is never mentioned.

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

list_active_applicationsJobs · List Active ApplicationsA
Read-onlyIdempotent
Inspect

Jobs — List the user's applications that Worklittle is filling out right now (queued, running, or waiting on the user), with job_id and session_id. Use it to find which one to stop or check.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered; the description adds value by naming the status taxonomy that qualifies as 'active' and the identifiers (job_id, session_id) it surfaces. It does not mention pagination or ordering, leaving a minor gap.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the verb+resource and followed by the actionable purpose. No filler or restatement of the title.

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?

With an output schema present and no input parameters, the description need not explain return shapes, and it covers scope and purpose adequately. The only thing an agent might still want is ordering/pagination behavior, which is minor.

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?

The tool takes zero parameters, so the baseline is 4. The description correctly implies a no-argument call and instead describes what the result contains, which is the right focus for a parameterless tool.

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 (list the user's applications) and narrows scope precisely to those 'being filled out right now', enumerating the states queued/running/waiting-on-user. This is clearly distinguishable from siblings like check_application_status or list_recent_chats.

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

Usage Guidelines4/5

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

'Use it to find which one to stop or check' gives the selecting condition and points at the downstream actions, which map to stop_application/steer_application/check_application_status. It stops short of naming those siblings explicitly or stating when this list is NOT the right tool, so it is clear context rather than full routing.

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

list_applicationsJobs · List ApplicationsA
Read-onlyIdempotent
Inspect

Jobs — List applications: pending ones (matched by auto-apply, waiting for approval, running, or waiting on the user) and finished ones (completed = submitted, failed, stopped). Check it before applying so the same job is never applied to twice. Filter with status (pending, applied, ...), job_id or applicant_id.

NameRequiredDescriptionDefault
limitNo
job_idNo
statusNo
applicant_idNo"me" for the user's own, or an applicant id (required on a shared API key)

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint, so safety is covered; the description adds genuine semantics by mapping raw status values into pending-vs-finished buckets and explaining what 'completed' actually means (submitted). It says nothing about pagination or result ordering behavior, which keeps it short of a 5.

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

Conciseness5/5

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

Three compact sentences, front-loaded with the resource and its pending/finished split, then the invocation rule, then the filter list. No sentence is filler and nothing is buried at the end.

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?

The tool has an output schema, so return values need not be described, and annotations cover the safety profile. The description supplies the domain grouping that the schema cannot express; the only meaningful gaps are limit/pagination behavior and the status value example that disagrees with the enum.

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

Parameters3/5

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

With schema coverage at 25%, the description must do the heavy lifting, and it does list the filterable fields (status, job_id, applicant_id). It adds little beyond the schema, omits limit/pagination entirely, and its example status value 'applied' does not match any enum member (the closest is 'completed'), which could mislead an agent constructing a filter.

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+resource (list applications) and immediately disambiguates the two result classes: pending (matched, awaiting approval, running, awaiting user) and finished (completed/submitted, failed, stopped). This is enough to distinguish it from siblings like list_active_applications and check_application_status without opening any schema.

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

Usage Guidelines4/5

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

Gives an explicit invocation rule — 'Check it before applying so the same job is never applied to twice' — which is real, actionable guidance rather than implied usage. It does not, however, name the sibling tools (list_active_applications, check_application_status) or say when those are preferable, so there is no explicit alternative routing.

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

list_recent_chatsJobs · List Recent ChatsA
Read-onlyIdempotent
Inspect

Jobs — List the user's recent Worklittle chats (title and status) for the app sidebar.

NameRequiredDescriptionDefault
limitNoMax chats (default 20, max 50).
cursorNonext_cursor from the previous page.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds useful scope (user's own chats) and returned fields, but says nothing about pagination behavior or ordering beyond the bare word "recent".

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?

One efficiently front-loaded sentence with no filler. The only waste is the "Jobs —" prefix, which costs tokens and briefly points toward the wrong domain.

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?

An output schema exists and annotations are rich, so the description need not explain return values. It is adequate for this simple two-parameter read tool, though a hint about ordering or what "recent" means would close the remaining gap.

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

Parameters3/5

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

Schema coverage is 100%, with limit and cursor fully documented (default 20, max 50, next_cursor semantics). The description adds no parameter meaning beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("List the user's recent Worklittle chats") plus the fields returned (title and status) and the consumer (app sidebar). It cannot differentiate from a chat sibling because none exists, but the "Jobs —" prefix slightly muddies an otherwise clear purpose.

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

Usage Guidelines3/5

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

Usage is only implied by "for the app sidebar"; there is no explicit when-to-use, when-not-to-use, or alternative routing. "Recent" is never defined, leaving the agent to infer ordering and scope.

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

logout_connected_accountJobs · Logout Connected AccountB
DestructiveIdempotent
Inspect

Jobs — Sign the user out of Worklittle in this app.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description contributes no additional behavioral context such as what session state is invalidated or whether re-authentication is required.

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?

A single front-loaded sentence with no filler. The leading "Jobs —" tag adds little value but the sentence itself is efficiently structured.

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

Completeness3/5

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

An output schema exists and annotations carry the safety profile, so the description does not need to explain returns. It is minimally complete for a no-param action, but omitting the consequence of logging out (session termination, re-auth needed) leaves a small gap.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. No parameter-level semantics are needed.

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

Purpose4/5

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

States a specific verb + resource ("sign the user out") and names the service (Worklittle), so an agent knows exactly what it does. The odd "Jobs —" prefix is confusing but the core purpose is unambiguous, and no sibling tool competes for this action.

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

Usage Guidelines2/5

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

There is no guidance on when to invoke this versus when not to, no preconditions (e.g., must a session exist), and no mention of what the caller should do afterward. The agent is left to infer that this is the only logout path.

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

mint_mcp_ui_embed_sessionJobs · Mint Mcp Ui Embed SessionBInspect

Jobs — Create a sign-in link so the Worklittle app can open the user's chats on worklittle.com.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, so the agent knows this mutates state and is not repeatable. Beyond that the description adds nothing: no token lifetime, no auth/permission requirements, no statement about what the session grants or whether prior sessions are invalidated.

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?

A single compact sentence with the action front-loaded, marred only by the redundant 'Jobs —' prefix carried over from the tool group.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and a zero-parameter tool has little surface to cover. However, for a credential-minting operation the description omits essential operational context such as the scope and lifetime of the sign-in link.

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?

The tool takes zero parameters, so the schema needs no description-level compensation; baseline is 4.

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

Purpose4/5

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

States a specific verb and output artifact ('Create a sign-in link') and adds the purpose ('so the Worklittle app can open the user's chats on worklittle.com'). It is clearly distinct from the job-application siblings, though the leading 'Jobs —' group label is inherited noise that doesn't describe this tool.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent must infer from the phrase 'the Worklittle app can open the user's chats' when this link-minting step is actually appropriate.

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

save_about_meJobs · Save About MeA
DestructiveIdempotent
Inspect

Jobs — Save standing facts about the user that Worklittle's Apply with AI uses on every future application: work authorization and visa sponsorship by country, relocation, notice period, desired salary, languages, qualifications, who referred them, or other standing answers they ask applications to use. Stored as the 'More about you' text in their Settings. Pass the complete text to keep (read get_my_profile first and merge with what is there, so nothing is lost). Write it in the user's words; never invent facts.

NameRequiredDescriptionDefault
about_meYesThe full More about you text to store (replaces the old text).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations flag destructiveHint=true and idempotentHint=true, and the description adds the crucial operational context for that destructiveness: the new text 'replaces the old text', so the caller must pass the full merged text to avoid data loss. This meaningfully extends the raw annotation, though it doesn't address auth or rate limits.

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-loads the purpose and content enumeration, then closes with the merge and authoring instructions. The opening sentence is dense but every clause carries routing or behavioral payload; no filler sentences.

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 single-parameter write whose return value is covered by an output schema, the description supplies purpose, triggering context, the destructive-replace warning, the read-merge prerequisite, and authoring constraints. Nothing an agent needs to call it safely is missing.

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, but the description goes further by specifying what the string should contain (standing application facts), how to author it ('in the user's words; never invent facts'), and that it is a full replacement rather than a patch — genuine meaning beyond the schema's terse field description.

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+resource ('Save standing facts about the user') and names the exact target field ('More about you' text in Settings), enumerating concrete content types like work authorization, notice period, and desired salary. This lets an agent distinguish it from the sibling update_my_profile without opening a schema.

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?

Explains when the facts are consumed ('on every future application' via Apply with AI) and mandates a pre-step: read get_my_profile first and merge so nothing is lost. It names the alternative read tool and the workflow condition, leaving little to inference.

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

search_companiesJobs · Search CompaniesA
Read-onlyIdempotent
Inspect

Jobs — Search the Worklittle market company index by name or slug (ranked typeahead). Returns id, name, slug, logo_url, and enrichment fields for employers with open jobs. Use when the user names an employer and you need a real slug/id for search_jobs company= filters, job alerts, or automations. If zero hits, try alternate spellings or related employer names from further search_companies calls — do not invent company ids or slugs. If still empty, tell the user that employer is not in the index yet and offer any close matches you found.

NameRequiredDescriptionDefault
qYesCompany name or slug query (min 2 characters, max 80).
limitNoMax results to return. Default 5, max 20.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: ranked typeahead ordering, the returned field set, and an anti-hallucination rule ('do not invent company ids or slugs') plus a documented empty-result path.

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 purpose, scope, and return fields before the usage and fallback sentences. Five sentences is slightly long, but each carries distinct operational value (trigger, fallback, failure messaging), so there is minimal waste.

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?

An output schema exists, so return values need not be fully explained, yet the description still names the key fields. Combined with annotations covering the safety profile and the description covering trigger, downstream use, and empty-result handling, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100%: q (min 2, max 80) and limit (default 5, max 20) are fully documented in the schema. The description restates that lookup is by name or slug but adds no syntax, matching, or formatting detail beyond the schema, so the baseline of 3 applies.

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 ('search the Worklittle market company index by name or slug') with the result shape and ranking behavior ('ranked typeahead'). It is clearly distinguishable from the sibling search_jobs, which is referenced by name as the downstream consumer.

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?

Explicit trigger: 'Use when the user names an employer and you need a real slug/id for search_jobs company= filters, job alerts, or automations.' It also prescribes behavior on zero hits (try alternate spellings, then report the employer is not indexed and offer close matches), which is unusually actionable routing guidance.

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

search_jobsWorklittle JobsA
Read-onlyIdempotent
Inspect

Jobs — Opens the Worklittle jobs MAP for a place and an optional role. This is a map query, not a list of jobs: the map recenters on the place and shows jobs there, so send the place and the role as SEPARATE fields. Never write 'product manager in San Francisco' as one query. PLACE: always pass near_lat + near_lng (the city's coordinates, which you know) and location as the display name (e.g. 'San Francisco, CA'). radius_km 25-50 for a city. If the user names no place, omit all place fields; the map opens at the user's approximate (IP-based) area. When a nearby search runs short, results widen to the rest of the country and then worldwide (search.scope says which: near, country or world), so say where the roles are. ROLE: query holds only the job title text (e.g. 'product manager') and may be omitted for 'any job'. Search Worklittle job listings. People say Worklittle plus a role, city, company, or filters (or just 'jobs') — they will not name this tool. Call it whenever they want Worklittle jobs. Search by keyword, company, location, job type, seniority, or recency. Use for ANY industry (retail, finance, healthcare, tech, etc.). Search matches title and filter text (substring / FTS), not vector embeddings. Role / title text goes in query (+ optional keywords). The API matches job TITLE substrings only for that text — it does not mix company names into the same field. Preserve negative title terms with a leading dash, e.g. 'software engineer, -senior' excludes titles containing senior. Use company for employer slugs (include or exclude). Never concatenate many job titles into one query unless the user supplied comma-separated roles. Do not add seniority_level, stacks, or resume-derived terms unless they asked. Omit seniority_level unless they explicitly name a level as an inclusion filter (never infer from profile). Expand abbreviations only; umbrella phrases use neutral roles and/or company slugs. Umbrella or vague phrases ('big tech', 'FAANG', 'top retailers'): interpret intent, then one search_jobs with comma-separated company slugs and/or a broad role query — prefer one API call over many. company MUST be employer slug(s): bare slugs include (OR), e.g. meta,google,apple. Prefix a slug with '-' to exclude, e.g. -lucid-motors,-tesla. Same leading-dash rule as title negatives, but in company not query. Expand 'no car companies' / 'don't show Lucid' into -slug tokens. Never pass display names as query. If unsure of slug, try lowercase hyphenated brand. Add skills or stack to query/keywords only when the user mentioned them — not from profile by default. When an include company filter returns 0 results, try a broader query (drop include company, use role keywords) before telling the user nothing matched. Pass cursor from a previous response to paginate. Search is anonymous. Do not call get_account, apply, or ask the user to Connect to search or skip. Connect / OAuth is only when they apply. After the map renders, briefly say what was found and where (listed pay shows on each job). For visa / H-1B: set visa_sponsorship to 'yes' (plus optional query). Postings must be explicitly tagged. When visa_sponsorship is set and posted_within_days is omitted, do not apply the default 7-day recency cutoff — tagged visa roles are sparse. For regional / nearby intent: near_lat, near_lng, radius_km (e.g. 50–65). Prefer this over the location substring when coordinates are known. For two or more metros in one user message (e.g. SF or NYC), pass location_or as comma-separated place names — one API request matches ANY listed place. Do not use near_* for multi-metro; use location_or or location with 'or' between cities. Recency: set posted_within_days from the user's words — today/just posted → 1; past few days → 3; this week → 7; past two weeks → 14; this month → 30. Omit when they did not mention timing (defaults to the last 7 days, the map's default). Set 0 only when they want any age / no date limit. Never put today/new/this week into query. Filters are the same as the map's filter chips, and nothing else: posted_within_days (Past 24 hours / 3 / 7 / 14 / 30 days), seniority_level (Experience: intern, entry/new grad, senior, manager, director/executive), employment_type (Type: full-time, part-time, contract), and visa_sponsorship (Visa). Prefer no filters: use one only when the user explicitly asks for it, because each filter shrinks the results a lot. For remote-only jobs send remote: true (and no place fields). There is no salary, hybrid, or benefits filter. If the user asks to filter by salary, search without it and say they can see salaries on the map (listed pay shows on each job).

NameRequiredDescriptionDefault
limitNoNumber of results to return. Default 10, max 50.
queryNoJob title or role phrase (merged with keywords). Sent as API title= — matches job TITLE text only, separate from company. Preserve negative title terms with a leading dash, e.g. 'product manager, software engineer, -senior'. If they want any role / all jobs, omit. Never merge many titles into one string unless the user supplied comma-separated roles. Expand shorthand (swe, pm, sre) when applicable.
cursorNoPagination cursor from a previous search_jobs response to fetch the next page.
remoteNotrue: remote jobs only (any country unless country is set). Leave out place fields. location 'remote' does the same.
companyNoEmployer slug(s): bare slug or comma-separated OR include (e.g. meta,google,apple). Prefix with '-' to exclude (e.g. -lucid-motors,-tesla). Mix allowed (meta,google,-amazon). Lowercase hyphenated. Mid-slug hyphens are part of the slug; only a leading '-' excludes. If include-only returns 0, retry without include slugs.
countryNoISO 3166-1 alpha-2 country filter (e.g. US, GB, DE). Returns jobs in that country or workplace_type remote.
keywordsNoOnly if the user named skills or stacks in this turn. Omit by default — do not pull from resume or profile.
locationNoDisplay name of the place (e.g. 'San Francisco, CA'). When near_lat/near_lng are set this is only a label and is NOT used as a text filter. Otherwise a text filter on job location strings (partial match). For metro-area or 'near me' intent, prefer near_lat + near_lng + radius_km (50–65 km typical) so results are not tied to one city spelling. Use location only when you cannot geocode, or as a fallback. Avoid long 'City, Country' strings; use country for country filters. For multiple metros, prefer location_or.
near_latNoLatitude for distance search. Use with near_lng. Typical source: browser geolocation or geocoded city.
near_lngNoLongitude for distance search. Required with near_lat.
radius_kmNoRadius in kilometers around near_lat/near_lng. Default 50, max 500.
exclude_idsNoComma-separated job IDs to exclude (e.g. postings already shown in the conversation).
location_orNoComma-separated place substrings when the user names two or more metros at once (e.g. San Francisco,New York). The API returns jobs whose location text matches ANY term. Mutually exclusive with distance search (near_lat/near_lng).
exclude_remoteNoWhen using near_lat/near_lng: false includes remote-only jobs; true (default) excludes them so results are geographically local.
employment_typeNoType of employment contract.
seniority_levelNoOmit unless the user explicitly asked for a band. Never infer from profile. Enum when set:
visa_sponsorshipNoFilter by explicit visa sponsorship text in the posting (AI-extracted). Use 'yes' for jobs that sponsor visas (H-1B, etc.). Use 'no' only when the user wants roles that explicitly state no sponsorship. Omit when not relevant.
posted_within_daysNoDays of posted-date lookback. Omit → default 7 (map default). 0 → no cutoff (any age). 1 → today/last 24h. 7 → this week. Any positive integer allowed (e.g. 90, 365). Never encode recency words in query.
description_languageNoISO 639-1 code for the language of the job posting body. Examples: en, es, de, fr, pt.

Output Schema

NameRequiredDescription
jobsNoMatching job listings.
queryNo
totalNoTotal matches when provided by the API.
cursorNoPagination cursor for the next page.
searchNoEcho of search_jobs filters for the Job Cards widget.
locationNo
near_latNo
near_lngNo

TDQS

A4.5/5.0
Behavior5/5

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

Adds real context beyond annotations: 'Search is anonymous. Do not call get_account, apply, or ask the user to Connect,' OAuth only on apply, and the near→country→world widening with search.scope semantics. These are non-obvious behavioral traits the readOnly/openWorld annotations don't convey.

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

Conciseness2/5

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

It's a ~500-word wall of run-on guidance that redundantly restates schema descriptions (negation, recency mapping, company slugs). Front-loaded first two sentences are strong, but the remainder is unstructured and many sentences do not earn their place by adding anything beyond the schema.

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?

All 19 parameters are documented and it exposes the map-scope default, widening behavior, and anonymous access — enough for correct invocation, and an output schema exists so return values need no explanation. It is arguably over-complete rather than lacking, which keeps it just under 5.

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?

At 100% schema coverage the baseline is 3, but the description adds genuinely additive rules: the 'visa_sponsorship set + no posted_within_days → skip the 7-day default' rule and city radius guidance ('25-50 for a city'). Much of the rest restates schema text (dash-negation, recency mapping), so it lands at 4 rather than higher.

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?

Opening sentence states a specific verb and resource: it 'opens the Worklittle jobs MAP for a place and an optional role,' and explicitly contrasts itself with 'a list of jobs.' The role (map-based job search) is unambiguous versus siblings like get_job_details or search_companies.

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?

Explicitly says 'Call it whenever they want Worklittle jobs' and how to route multi-metro vs. near_* intent, when to omit place fields, and how to interpret umbrella phrases. It also states a fallback when an include-company filter returns zero. This is about as complete as usage guidance gets.

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

steer_applicationJobs · Steer ApplicationA
Destructive
Inspect

Jobs — Change what an application in progress fills in, without stopping it. Use when the user says something about an application Worklittle is filling right now ("say my notice period is one month", "my friend Ana Ruiz referred me", "I need visa sponsorship for the US", "make that answer shorter"). Pass their wish as plain instructions with their exact facts; never add facts. Works while the application is running, ready to submit, or waiting for answers. Needs the session_id from apply_for_job or list_active_applications. For facts that should apply to every future application too, also call save_about_me.

NameRequiredDescriptionDefault
session_idYes
instructionsYesWhat to change, in plain words.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds genuinely useful behavioral context beyond them: the operation is non-interrupting ('without stopping it'), it applies across multiple application states, and it carries a strong 'never add facts' constraint. It does not address the destructive/mutating nature directly, but the added operational context is substantial.

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

Conciseness5/5

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

Front-loaded with purpose, then usage conditions, then concrete examples, then constraints, then parameter sourcing. Despite its length, every sentence carries distinct, actionable information with no repetition.

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?

An output schema exists, so return values need not be described. Combined with the annotations, the description covers triggers, state applicability, the session_id dependency, and behavioral constraints – everything needed to invoke the tool 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 coverage is only 50% (session_id has no description), so the description must compensate, and it does: it names the session_id's source ('from apply_for_job or list_active_applications') and elaborates the instructions parameter's intended content ('their wish as plain instructions with their exact facts; never add facts'). This adds real meaning beyond 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 ('Change what an application in progress fills in') with the key differentiator 'without stopping it.' An agent can immediately distinguish this from apply_for_job, stop_application, and submit_application among the 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?

Names explicit trigger conditions with user-utterance examples, states the states in which it works (running, ready to submit, waiting for answers), and routes to save_about_me for a related but distinct need. When/when-not and alternatives are all covered.

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

stop_applicationJobs · Stop ApplicationA
DestructiveIdempotent
Inspect

Jobs — Stop an application that Worklittle is filling out for the user. This cancels the application in progress and it cannot be resumed; the user would have to start it again. Needs the session_id from apply_for_job or list_active_applications.

NameRequiredDescriptionDefault
session_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds the non-obvious consequence that the cancellation is irreversible and the user must restart the application — genuinely useful context beyond the annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and immediately followed by the consequence and the required input. No filler or repetition of the title.

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?

An output schema exists, so return values need no explanation, and annotations carry the safety hints; the description fills the key remaining gap (irreversibility plus input source). It is nearly complete, missing only guidance on when another sibling is the better choice.

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 0% and the single parameter has no description, so the description must compensate. It does so by stating the parameter's provenance (from apply_for_job or list_active_applications), though it gives no format or validity details for the session_id string.

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?

"Stop an application that Worklittle is filling out for the user" names a specific verb and resource, and the scope (an in-progress application) separates it cleanly from siblings like delete_my_resume, steer_application, or submit_application.

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

Usage Guidelines4/5

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

It tells the agent the prerequisite source for the argument (session_id from apply_for_job or list_active_applications), which is real routing guidance. It does not, however, say when to prefer this over adjacent tools such as steer_application, so the alternative-selection guidance is incomplete.

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

submit_applicationJobs · Submit ApplicationA
DestructiveIdempotent
Inspect

Jobs — Send an application that stopped for review (apply_for_job with auto_submit false, status awaiting_submit). Call it only after the user has seen the answers from check_application_status and said to send it.

NameRequiredDescriptionDefault
session_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the low-level safety profile is covered. The description adds real behavioral context beyond that — the required status precondition and the human-confirmation gate — but never explains the consequence of the irreversible send or what a failure/idempotent replay looks like.

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

Conciseness5/5

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

Two sentences, no padding, with the identity/scope statement first and the dependency precondition second. Every clause carries operational meaning.

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?

With annotations covering safety and an output schema covering return values, the description only needed to supply the workflow gate, which it does well. It stops short of describing what happens to the application record after submission or the failure mode when the status is not awaiting_submit.

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

Parameters3/5

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

There is one parameter (session_id) with 0% schema description coverage, and the description says nothing about it. The schema does supply its type and the Session-Id header mapping, which makes it largely self-evident in context, so this is adequate but leaves a gap the description should have closed.

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 ('Send an application') plus the precise object and its originating state ('that stopped for review ... status awaiting_submit'). It also contrasts with the sibling apply_for_job by naming the parameter combination (auto_submit false) that distinguishes the two, so an agent can route correctly 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?

Gives explicit preconditions: only after check_application_status output has been shown to the user and only after the user affirms sending. This is a genuine when-to-use gate referencing a named sibling tool, not implied guidance.

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

track_applied_jobJobs · Track Applied JobB
DestructiveIdempotent
Inspect

Jobs — Add a job to the user's Applied or Saved list, or change its status, so they can find it later.

NameRequiredDescriptionDefault
job_idYesWorklittle job id from search_jobs or get_job_details.
methodNoHow the user applied. Defaults to apply.
statusNoPipeline stage when known. Use saved for heart/save, skipped for Job Cards / deck Skip. Defaults to in_progress for apply / apply_with_ai, applied for api.
apply_urlNoOptional employer apply URL.
job_titleYes
company_nameYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=true. The description adds that this writes to a list and mutates status, but it never discloses the destructive aspect flagged by the annotation — e.g. whether changing status overwrites a prior stage — nor any auth or overwrite semantics, leaving a notable gap for a mutation tool.

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?

A single efficient sentence front-loads the action and outcome with no wasted text. The redundant 'Jobs —' title prefix is the only minor inefficiency.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover safety. However, for a destructive, idempotent mutation living among closely related job-application siblings, the description does not clarify its boundary versus apply_for_job or submit_application, leaving the agent to infer routing.

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

Parameters3/5

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

Schema coverage is 67%, so the schema documents most parameters (job_id source, method/status enums with defaults). The description mentions no parameters, and the two undocumented fields (job_title, company_name) are self-evident; adds little beyond structured data, so a baseline 3 fits.

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

Purpose4/5

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

States specific verbs (add to list, change status) and the resource (a job in the user's Applied/Saved list), plus the outcome (so they can find it later). It does not explicitly differentiate from the many sibling job tools (apply_for_job, submit_application, steer_application), so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies when to call it (when a user applies or saves a job so it can be found later), but gives no explicit when-not guidance and never names the alternative sibling tools it could be confused with, such as apply_for_job or submit_application.

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

update_apply_settingsJobs · Update Apply SettingsA
Idempotent
Inspect

Jobs — Turn auto_apply, auto_submit or tailor_resume on or off. Only send the settings to change. Turning auto_apply on needs Instant or a card on file.

NameRequiredDescriptionDefault
auto_applyNo
auto_submitNo
tailor_resumeNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare idempotent=true, destructive=false and readOnly=false, so safety is covered; the description adds value beyond them with the partial-update contract and the billing prerequisite for enabling auto_apply. It does not say whether disabling auto_apply also disables auto_submit or what an unmet prerequisite looks like as a response.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the payload rule, then the prerequisite. No filler and nothing buried.

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?

The tool is a simple three-flag mutation, an output schema exists so return values need no explanation, and the description covers the action, the partial-update rule, and the key prerequisite. The remaining gap is inter-flag dependency, which matters for a settings tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description carries the burden and does name all three parameters plus the prerequisite for auto_apply. However, it never distinguishes auto_apply from auto_submit (does submitting require applying?) or explains what tailor_resume governs, so half the semantics remain inferred from the names alone.

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

Purpose4/5

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

The description states a specific verb and resource: toggling the three named apply settings on or off. It is clearly distinguishable from get_apply_settings by the 'on or off' framing, though it never names that sibling as the read counterpart.

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

Usage Guidelines4/5

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

'Only send the settings to change' gives explicit partial-update guidance, and 'Turning auto_apply on needs Instant or a card on file' states a real prerequisite. It stops short of routing to alternatives such as get_apply_settings for reading current values.

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

update_my_profileJobs · Update My ProfileB
DestructiveIdempotent
Inspect

Jobs — Update the user's Worklittle profile, such as name, location, phone, links or the kind of job they want. Only send the fields to change.

NameRequiredDescriptionDefault
phoneNo
x_urlNo
you_nameNo
you_workNo
educationNoReplaces education. Months as YYYY-MM.
job_titleNoCurrent job title(s), most recent first
languagesNo
experienceNoReplaces work history. Months as YYYY-MM; omit end for the current job.
github_urlNo
tiktok_urlNo
you_schoolNo
youtube_urlNo
company_nameNoCurrent employer(s), most recent first
facebook_urlNo
home_addressNo
linkedin_urlNo
instagram_urlNo
location_cityNo
school_degreeNo
you_interestsNo
desired_salaryNoe.g. "$90,000+" or "$25+/hour"
location_stateNo
phone_nationalNo
drivers_licenseNovalid | none | empty to clear
huggingface_urlNo
location_countryNo
years_experienceNo
needs_sponsorshipNotrue if they need visa sponsorship to work
phone_country_isoNo
personal_website_urlNo
profile_clear_fieldsNoField names to clear when empty
work_authorization_countriesNoISO2 country codes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true; the description's "only send the fields to change" usefully reinforces patch semantics and does not contradict them. However, it never discloses the genuinely destructive behavior (education and experience wholesale replacement, field clearing) or any auth/permission requirements, which are only visible in the schema.

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?

Two sentences, front-loaded with the verb and resource, with the operational rule last. The "Jobs —" prefix is marginally wasteful but the body has no filler.

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

Completeness3/5

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

Output schema exists, so return values need no explanation, and the schema documents replacement semantics for education/experience. Still, for a destructive 32-param mutation with 28% coverage, the description leaves clearing behavior and permission requirements to inference.

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

Parameters2/5

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

Schema description coverage is only 28% across 32 parameters, so the description carries most of the burden and mostly does not. "Name, location, phone, links or the kind of job they want" gestures at a handful of fields but says nothing about the replace-vs-merge arrays, profile_clear_fields, needs_sponsorship, work_authorization_countries, or the phone/locale fields.

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

Purpose4/5

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

States a specific verb and resource ("Update the user's Worklittle profile") and enumerates example field families (name, location, phone, links, desired job), which clearly separates it from the read-only sibling get_my_profile. It stops short of naming that sibling, but the intent is unambiguous.

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

Usage Guidelines3/5

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

"Only send the fields to change" gives real partial-update guidance, which is the key usage rule for a 32-param patch tool. It does not cover when to prefer get_my_profile first, when to use profile_clear_fields versus sending an empty value, or any prerequisite checks.

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

upload_my_resumeJobs · Upload My ResumeA
Destructive
Inspect

Jobs — Save the resume the user attached in the chat (PDF, Word, text or image) as the main resume on their Worklittle profile so it can be used to apply. It replaces the current main resume; other saved resumes (an account keeps up to 5) stay. Pass the attached file as resume_file.

NameRequiredDescriptionDefault
mimeNoMIME type, e.g. application/pdf
filenameNoOriginal file name, e.g. resume.pdf (widget upload).
resume_fileNoThe resume file the user attached in the chat.
content_base64NoBase64-encoded file bytes (data: URLs accepted; strip prefix ok).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false; the description goes beyond them by spelling out exactly what is destroyed — the current main resume is replaced — and what survives (the other saved resumes, up to 5 per account). It does not cover failure modes or file-size limits, but the destructive blast radius is clearly communicated.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the replacement semantics, then the parameter directive. Nothing is redundant with the schema or annotations.

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?

An output schema exists and annotations carry the safety profile, so the description only needs to add the semantics those can't express — replacement of the main resume, retention of the other four — which it does. Minor omissions are what happens on unsupported MIME types or oversized files.

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 the baseline is 3, and the description adds real value by disambiguating the two input modes: it directs the caller to pass the chat attachment as resume_file rather than content_base64. It does not explain when the base64/mime/filename path applies, which is the remaining gap.

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 (save the attached resume as the main resume on the Worklittle profile) plus the purpose (so it can be used to apply). It is clearly distinguishable from siblings like get_my_resume, delete_my_resume and apply_for_job without opening any schema.

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

Usage Guidelines4/5

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

The trigger condition is explicit: use this when the user has attached a resume in the chat and it should become the main resume. It does not name alternatives (e.g. use get_my_resume to inspect, delete_my_resume to remove), so there is no explicit when-not, but the usage context is unambiguous.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedapply_for_job2 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. 1 tool update
    • Changedget_job_details1 field changed
      • removedInput schema / properties / summary
        Removed value: -{
        -  "description": "If true, request first-time AI generation via GET /jobs/:id?summary=true. Default is raw plus cached AI only.",
        -  "type": "boolean"
        -}
  3. 1 tool update
    • Changedapply_for_job1 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."
  4. 1 tool update
    • Changedapply_for_job1 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."
  5. 2 tool updates
    • Changedapply_for_job1 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"
        +}
    • Changedlist_applications1 field changed
      • changedInput schema / properties / applicant_id / description
        Previous value: -"\"me\" for the user's own, or an applicant id"New value: +"\"me\" for the user's own, or an applicant id (required on a shared API key)"
  6. 6 tool updates
    • Changedapply_for_job10 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: +[]
    • Addedget_apply_settings
    • Addedlist_applications
    • Changedsearch_jobs1 field changed
      • addedInput schema / properties / remote
        Added value: +{
        +  "description": "true: remote jobs only (any country unless country is set). Leave out place fields. location 'remote' does the same.",
        +  "type": "boolean"
        +}
    • Addedupdate_apply_settings
    • Changedupdate_my_profile12 fields changed
      • addedInput schema / properties / company_name
        Added value: +{
        +  "description": "Current employer(s), most recent first",
        +  "type": "string"
        +}
      • addedInput schema / properties / desired_salary
        Added value: +{
        +  "description": "e.g. \"$90,000+\" or \"$25+/hour\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / education
        Added value: +{
        +  "description": "Replaces education. Months as YYYY-MM.",
        +  "items": {
        +    "properties": {
        +      "degree": {
        +        "type": "string"
        +      },
        +      "end": {
        +        "type": "string"
        +      },
        +      "field_of_study": {
        +        "type": "string"
        +      },
        +      "school": {
        +        "type": "string"
        +      },
        +      "start": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "school"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / experience
        Added value: +{
        +  "description": "Replaces work history. Months as YYYY-MM; omit end for the current job.",
        +  "items": {
        +    "properties": {
        +      "company": {
        +        "type": "string"
        +      },
        +      "current": {
        +        "type": "boolean"
        +      },
        +      "end": {
        +        "type": "string"
        +      },
        +      "start": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "company"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / home_address
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / job_title
        Added value: +{
        +  "description": "Current job title(s), most recent first",
        +  "type": "string"
        +}
      • addedInput schema / properties / languages
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / location_city
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / location_country
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / location_state
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / needs_sponsorship
        Added value: +{
        +  "description": "true if they need visa sponsorship to work",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / years_experience
        Added value: +{
        +  "type": "number"
        +}

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and browsing hidden job market roles with H1B PERM sponsorship from major US companies, including tools for job search, details, categories, and company listings.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Search current remote / work-from-home jobs by category, region, perk, or company — with ready-to-apply links.
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Search live job postings from 30+ job boards, ATS feeds and public employment services, and watch for new matches.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources