Skip to main content
Glama
dreamworkhq

Dreamwork MCP Server

Official

Dreamwork's public MCP source lives here. The client calls the hosted Dreamwork API; it does not include the API, database, workers, or hosted OAuth service.

Connect over HTTP at https://mcp.dreamworkhq.com/mcp, or run the stdio client with npx -y @dreamworkhq/mcp. Public job browsing works without a key.

For source development, use Node 22 and pnpm 10.23.0:

pnpm install --frozen-lockfile
pnpm check
pnpm test
pnpm build
pnpm test:package

The MCP client is in apps/mcp. packages/api-contracts and packages/assistant-contracts contain its source dependencies; they are bundled into the published CLI. source-export.json records the release's source commit. See CONTRIBUTING.md for how changes reach a release.


@dreamworkhq/mcp

MCP server for Dreamwork: job-search tools for AI agents. Any MCP client (Claude Desktop, Cursor, the MCP Inspector) can use it to find roles, rank them, tailor applications, apply, and track outcomes for one person over time.

This server is a thin gateway: it calls the Dreamwork API over HTTPS and holds no database access of its own. Transport is stdio, and stdout carries only JSON-RPC frames.

Install

There is no install step. MCP clients run it on demand with npx. The examples below use npx -y @dreamworkhq/mcp.

No key or account is needed to start. Without DREAMWORK_API_KEY the server runs in free guest mode, where your agent can search and read every listing. The env blocks below are optional; add a key when you want the account tools (see Guest mode and API keys).

Related MCP server: AI Applyd

Configure

Claude Desktop

Add an entry to your claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "dreamwork": {
      "command": "npx",
      "args": ["-y", "@dreamworkhq/mcp"],
      "env": {
        "DREAMWORK_API_KEY": "sk_..."
      }
    }
  }
}

Restart Claude Desktop after editing. Put credentials in the env block. Do not wrap command in a shell or an env-loader such as dotenvx run -- …: on a stdio server, any banner the wrapper prints to stdout corrupts the JSON-RPC stream and hangs tool calls.

Cursor and other clients

Any stdio MCP client works. Cursor uses the same config shown above: point the command at npx -y @dreamworkhq/mcp and pass DREAMWORK_API_KEY in the environment. To check the setup with the Inspector:

DREAMWORK_API_KEY=sk_... npx @modelcontextprotocol/inspector npx -y @dreamworkhq/mcp

Hosted endpoint

Dreamwork also serves these tools over Streamable HTTP at https://mcp.dreamworkhq.com/mcp. In claude.ai, Claude Desktop, or ChatGPT, add that URL as a custom connector and sign in to Dreamwork. There is nothing to install and no key to paste. The consent screen asks which scopes the connector gets.

Clients that set request headers can send an API key to the same URL instead. In Claude Code:

claude mcp add --transport http dreamwork https://mcp.dreamworkhq.com/mcp \
  --header "Authorization: Bearer sk_..."

Guest mode and API keys

Guest mode is free and needs no account. With no key set, the server starts in guest mode and exposes the public, read-only tools: browse_listings, get_listing, get_platform_context, and get_upgrade_link. The server tells the agent it is in guest mode, so the agent can say what works now. Account tools answer with a short "No API key" message that lists the steps to get one.

An API key needs a free account. Matches ranked against your resume, saved jobs, tailored materials, the pipeline, recruiter mail, and applying need an API key. Any Dreamwork account can generate one, including the free plan. Your plan sets the key's rate limit and usage allowances. Sign in at dreamworkhq.com, open Profile, then MCP (or use the Get a key button on the Agents page), then set the key as DREAMWORK_API_KEY (format sk_...) and restart your MCP client.

When you generate a key you choose what it may do: read, write, apply, send mail. The profile page starts with all four selected; uncheck anything your agent should not do. A key can do less than you can, never more.

Environment variables

Variable

Required

Default

Purpose

DREAMWORK_API_KEY

For account tools

none

API key (sk_...). Unlocks pipeline, resume, apply, outreach, profile, interviews.

DREAMWORK_API_URL

No

https://api.dreamworkhq.com

Override the API endpoint (local dev / self-host).

DREAMWORK_UNREAD_NOTICES

No

on

off (also 0/false/no) stops tool results from carrying a note about unread recruiter mail. At most one check every five minutes; checking never marks mail read.

JOBLESS_API_TOKEN and JOBLESS_API_URL are still accepted as backward-compatible aliases for DREAMWORK_API_KEY and DREAMWORK_API_URL; prefer the DREAMWORK_ names for new configs.

Telemetry

To measure usage, the server generates an anonymous random install id (a UUID) on first run and stores it under your OS state directory ($XDG_STATE_HOME/dreamwork/install-id, ~/.local/state/dreamwork/install-id on Linux/macOS, or %LOCALAPPDATA%\dreamwork\install-id on Windows). It is a random value, never derived from your hostname, username, or any machine attribute. It counts unique installs of guest (unauthenticated) usage. It is written at runtime on your machine, never at build or publish time.

Opt out by setting either environment variable:

  • DREAMWORK_TELEMETRY=0 (also false/no/off)

  • DO_NOT_TRACK=1 (the standard opt-out; also true/yes/on)

With telemetry disabled, no install id is generated, read, or sent.

Tools

The typical flow: browse the public index, save roles to the pipeline, tailor materials, apply, then track replies and interviews. Call get_platform_context first. It describes what Dreamwork can do, so the agent picks the right workflow.

Public (no key):

browse_listings, get_listing, get_platform_context, get_upgrade_link

Assistant actions: one tool per capability in Dreamwork's assistant registry, each running through the same authorization ladder and receipt ledger the on-site assistant uses. A consequential one holds on its first call, answering with a summary and a confirmationToken; send that token back with identical arguments to go ahead.

apply, cancel_apply, confirm_hypothesis, dismiss_match, edit_answer, edit_cover_letter, edit_resume, forget_hypothesis, format_resume, generate_pack, get_application_documents, get_application_readiness, get_application_status, get_autopilot_settings, get_autopilot_status, get_career_record, get_communication_preferences, get_inbox, get_job, get_pack_status, get_pipeline, get_preferences, get_resume_download_link, get_resume_work_history, get_task, get_unread_reminders, get_updates_since, get_usage, import_job, list_dismissed_matches, list_matches, list_tasks, mark_applied_offsite, mark_messages_read, move_pipeline, parse_preferences_text, prepare_applications, remember_hypothesis, replace_application_document, reply_to_recruiter, restore_match, restore_material, save_application_answers, save_job, set_autopilot, start_checkout, strengthen_application, undo_last, update_autopilot_settings, update_communication_preferences, update_preferences

Direct product tools: routes with no registry action behind them.

add_contact, add_jobs, generate_outreach, generate_resume, get_application_materials, get_generated_resumes, get_profile, get_stats, list_contacts, list_interviews, reopen_application_materials, update_application_materials, update_profile, upload_resume

The server also offers five prompts, which hosts such as Claude Desktop and Claude Code show as commands: morning_brief (what changed since you last checked), find_and_prepare (search, pick, prepare materials), apply_to_prepared (fill any missing answers, review, apply with confirmation), interview_prep, and autopilot_setup.

Notes on a few tools:

  • No tool sends mail or submits an application on its first call. apply, reply_to_recruiter, set_autopilot, update_autopilot_settings and start_checkout return held with a summary and a confirmationToken, and act only when you send that token back with identical arguments.

  • 1.3.0 removed the 1.2.0 tools a registry action replaced: search_jobs and list_applications (use get_pipeline; browse_listings searches the index), apply_to_job (apply), add_listing_to_pipeline (save_job), skip_job (dismiss_match), and send_outreach. Replies and resubmissions go through reply_to_recruiter and apply.

  • Releases after 1.5.1 no longer include list_escalations and resolve_escalation, and the hosted server no longer offers them. Dreamwork no longer hands an application back to you as an escalation, so there is nothing for them to list or resolve.

  • update_application_materials and reopen_application_materials are open to the Applications rollout cohort the API admits; outside it they return the API's own refusal.

  • get_stats aggregates the signed-in candidate's own pipeline, so it needs a key like the rest.

Key scopes

An API key carries scopes, chosen when you generate it:

Scope

What it unlocks

read

Every read action: matches, pipeline, inbox, status, usage, receipts

write

Cheap and queued writes: save, dismiss, move, edit materials, preferences, checkout links

apply

Submitting an application, cancelling one that is still sending, and Autopilot

send

Mailing a recruiter

A scope gates every path to the act, direct routes included. write is the floor for changing anything: a key without it is refused on any request that is not a GET, HEAD, or OPTIONS, so a read key cannot rewrite a profile or move the board by calling the route directly. A key without apply is refused at apply, and also at POST /jobs/:id/apply, the turbo-apply routes and the escalation routes. A key without send is refused at reply_to_recruiter, at POST /outreach/send and at POST /conversations/:id/reply. A direct call answers 403 with api_key_scope_required, the scope it wants, and a message saying what to do; an assistant action answers action_not_authorized with the same next step.

A key can never manage keys, rotate the session token, or delete the account. Those answer 403 session_required whatever it holds.

The profile page preselects all four scopes, and a key request that names no scopes gets read and write. A key created before scopes existed keeps everything it could already do.

Troubleshooting

  • Tool calls hang / time out, but the handshake succeeds. Something is writing non-JSON-RPC bytes to stdout. Make sure command isn't wrapped in an env-loader or shell that prints a banner, and update to the latest version (npx -y @dreamworkhq/mcp@latest; clear the npx cache with rm -rf ~/.npm/_npx if an old build is cached). stdout must carry only protocol frames. All server logging goes to stderr.

  • Every account tool says "No API key". DREAMWORK_API_KEY isn't reaching the process. Confirm it's in the env block of your client config.

  • Every account tool says "API key rejected". The key reached the server, but it has expired or been revoked. Create a new one under Profile, then MCP, replace DREAMWORK_API_KEY with it, and restart your MCP client.

  • Apply returns missing_onboarding_fields or missing_profile_fields. The tool reports the missing fields and the Dreamwork path that fixes each one. Complete those details in Dreamwork before retrying; the failed request has not started an application.

Development

pnpm --filter @dreamworkhq/mcp check   # typecheck
pnpm --filter @dreamworkhq/mcp build   # emit dist/
pnpm --filter @dreamworkhq/mcp test    # unit tests

The stdio entrypoint is src/stdio.ts; tool definitions live in src/mcp.ts; the HTTP API client is src/client.ts.

The server reads configuration from the process environment only. It does not load a .env file. For local development export the vars in your shell (e.g. DREAMWORK_API_URL=http://127.0.0.1:3000 pnpm --filter @dreamworkhq/mcp stdio).

Package-boundary decisions, tool-registration conventions (registerDreamworkTool), error/versioning rules, and deferred review triggers are recorded in ARCHITECTURE.md. The tool catalog above is drift-checked against the registered tools by test/tool-catalog.test.ts.

License

MIT

Available Tools

69 tools
add_contactAdd contactC
Destructive
Inspect

Adds a recruiter or referrer contact to the account using the supplied contact details.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesContact name
emailNoEmail
titleNoJob title
companyYesCompany
linkedinUrlNoLinkedIn URL

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so the description should add the context those hints cannot convey. Instead it says nothing about whether adding a duplicate is destructive, whether the record is removable, or which fields are mutable later — it merely restates the mutation the annotations already flag.

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. It is efficient, though its brevity is closer to under-specification than true economy.

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?

With full schema coverage and no output schema, the description only needs to cover behavior and routing, and it covers neither fully. For a destructive write tool it omits reversibility, duplicate handling and post-add state, leaving an agent with a workable but incomplete picture.

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 all five parameters are already documented in the schema. The description adds only the framing that the contact is a recruiter or referrer, which marginally hints at how fields like company/title are used, but supplies no syntax or format detail beyond the schema.

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 (adds) and resource (contact) plus the subtypes it covers (recruiter or referrer) tied to the account. It is clear in isolation, but it never distinguishes itself from the sibling list_contacts or explains how a contact relates to the surrounding account/application flow.

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?

No guidance on when to add a contact versus using list_contacts or other contact-related siblings, and no prerequisites or dedup conditions. Usage is only implied by the tool name.

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

add_jobsAdd job manuallyA
Destructive
Inspect

Adds a job to the account's private pipeline using title, company and optional description, URL, contact email and application method. For eligible accounts, a new job can also create and queue its application materials, using pack allowance. No application is submitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
titleYesJob title
companyYesCompany name
descriptionNo
contactEmailNo
applicationMethodNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so safety is partly covered. The description adds real value beyond them: it discloses the pack-allowance quota consumption and the crucial boundary that no application is submitted, which prevents an agent from assuming a full apply flow.

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 compact sentences, front-loaded with the action and its target, then the conditional side effect, then the negative scope constraint. No filler, and each sentence contributes distinct information.

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 6-param mutation tool with no output schema, the description covers the action, the accepted inputs, the conditional pack-allowance side effect, and the explicit non-effect (no submission) that an agent most needs to reason about. What remains (response shape, duplicate handling) 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?

Schema description coverage is only 33% (just title and company), so the description has to carry the load. It names all six fields and explicitly separates required (title, company) from optional (description, URL, contact email, application method), compensating for the schema gap even though it adds no format detail.

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 gives a specific verb and resource ("Adds a job to the account's private pipeline") and enumerates the fields it accepts, so the agent knows exactly what the tool does. It does not, however, distinguish itself from the similar siblings save_job and import_job, which is the main missing piece.

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?

It conditions a behavior ("For eligible accounts, a new job can also create and queue its application materials, using pack allowance") and bounds the action ("No application is submitted"), which implies when it applies. But it never states when to pick this over save_job or import_job, or what makes an account "eligible".

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

applyApply to a jobA
Destructive
Inspect

Submits one application to an employer under the account holder's name using the saved materials at expectedRevision. Submission requires existing materials and plan allowance and cannot be recalled. A confirmation hold returns the destination, material summary and a token bound to identical arguments; the reviewed revision is enforced.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYes
expectedRevisionYesThe materials revision the person reviewed. A mismatch fences the send.
confirmationTokenNoEcho the token from a previous `held` result to carry out the act it described, and only after the person has seen that result's summary and agreed to it. Send identical arguments: the token is bound to the exact call it was issued for, so a changed argument is held again with a fresh token and a fresh summary. It lasts two minutes and is spent once.

TDQS

A4/5.0
Behavior5/5

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

Even though annotations already declare destructiveHint=true and openWorldHint=true, the description adds substantial context beyond them: submission 'cannot be recalled', it needs pre-existing materials and plan allowance, a mismatch on expectedRevision 'fences the send', and the confirmation hold is a real two-phase protocol with a token bound to identical arguments. That is exactly the behavioral texture an agent needs for an irreversible action.

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 dense sentences with the core action front-loaded and no filler; each sentence carries new constraints (preconditions, irreversibility, hold/token protocol). The middle sentence is long but every clause earns its place.

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 destructive, open-world tool with no output schema, the description covers preconditions, irreversibility, and the shape of the held result (destination, material summary, token). It stops short of describing the successful-submission outcome or failure modes, which is a minor remaining 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?

With 67% schema coverage, only applicationId is undocumented in the schema. The description compensates by explaining that materials are taken at expectedRevision and that the token is bound to identical arguments, adding meaning over the schema text rather than repeating it.

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 ('Submits one application to an employer') plus the key scoping detail ('using the saved materials at expectedRevision'), which distinguishes it from preparation-oriented siblings like prepare_applications and strengthen_application. It does not, however, name or exclude any sibling explicitly, so an agent must infer the boundary itself.

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?

It conveys implied prerequisites ('requires existing materials and plan allowance') and the two-phase hold/confirm flow, which tells the agent the call is not a one-shot. But it never says when to reach for this tool instead of alternatives such as mark_applied_offsite, cancel_apply or generate_outreach, leaving the routing decision to inference.

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

browse_listingsBrowse job listingsA
Read-only
Inspect

Returns indexed listings filtered by title or company keywords, function, seniority, work setting, location, pay, benefits, industry, AI role, internship and posting or discovery age. Anonymous browsing is supported; a paid plan raises the page-size limit. A page holds 25 listings by default and limit accepts up to 100, which the API clamps to 25 without a key or on the free plan; the next page is the previous nextCursor. An unsorted cursor walk is stable and uncapped; sorted walks stop at 1,000. nextCursor requires identical filters and sort; null ends the walk. addedAfter supports overlapping discovery windows because listings can become servable after first discovery. Each listing's url is its Dreamwork page; sourceUrl is the employer's direct posting. Pay filters use whole annual US dollars and match posted bands reaching the bound, rather than guaranteed pay.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOrder. Omit it to walk every match in a stable, unranked order; any sort stops the walk at 1,000.
bonusNoOnly postings offering a bonus.
limitNoPage size, 25 when omitted. Without a key or on the free plan the API caps it at 25.
aiRoleNoAI-focused roles only.
cursorNo`nextCursor` from the previous page. Send the same filters and sort, or it is refused.
equityNoOnly postings offering equity.
remoteNoShorthand for workSettings ["remote"].
searchNoWords in the job title or company name.
companyNoCompany name or domain.
functionNoJob functions to keep, as a union.
industryNoEmployer industry. One of: Software & Technology, Financial Services, Insurance, Healthcare & Hospitals, Pharma & Biotech, Consulting & Professional Services, Retail & Consumer Goods, Manufacturing & Industrial, Media & Entertainment, Education, Government & Public Sector, Nonprofit & NGO, Energy & Utilities, Telecommunications, Transportation & Logistics, Real Estate & Construction, Aerospace & Defense, Hospitality & Travel, Agriculture & Food, Legal, Marketing & Advertising, Other.
locationNoCity, region, or country. Remote roles open to that country match too. A place Dreamwork cannot resolve is refused.
maxSalaryNoPay ceiling in whole annual US dollars.
minSalaryNoPay floor in whole annual US dollars, e.g. 200000. A listing passes when its posted band reaches it; listings with no posted pay drop out.
seniorityNoSeniority levels to keep, as a union.
addedAfterNoOnly listings Dreamwork first saw after this ISO date-time.
healthcareNoOnly postings offering healthcare.
internshipNoInternships, co-ops, and apprenticeships only.
workSettingsNoWork settings to keep, as a union. A posting that states none counts as onsite.
postedWithinDaysNoEmployer posting date within this many days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
totalYesMatching listings counted up to 1,000 for a sorted walk; null for an unsorted walk, which is not counted.
listingsYes
pageSizeYesRows this page was allocated by the API after plan clamping; advance a sorted walk by this, never by the rows received.
nextCursorYesPass it back with the same filters for the next page; null means done.
totalCappedYes
appliedFiltersYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and destructiveHint=false, yet the description adds substantial behavioral context: anonymous browsing support, plan-dependent page-size clamping (100 → 25), the 1,000-result cap on sorted walks versus the uncapped stable unsorted walk, cursor/filter consistency requirements, overlapping discovery windows via addedAfter, and the semantic gap between url and sourceUrl.

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

Conciseness4/5

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

The paragraph is dense but front-loaded with purpose and filter scope before the pagination and pay caveats. For a 20-parameter tool the length is defensible, though the run-on enumeration of filters and mechanics could be broken up for easier scanning.

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-shape explanation is optional, yet the description still clarifies url versus sourceUrl. Combined with the pagination limits, cursor rules, and pay-filter behavior, an agent has everything needed to call this 20-parameter 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 description coverage is 100%, so the schema already carries parameter meanings and a baseline of 3 applies. The description still adds value beyond it, notably the pay-filter semantics (whole annual US dollars matching posted bands that reach the bound), the url/sourceUrl return distinction, and the rationale for addedAfter overlapping windows.

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 indexed listings') and enumerates the filterable dimensions, which clearly separates it from single-listing tools like get_listing or AI-curated tools like list_matches. It does not explicitly name a sibling as the alternative, so it stops short of full differentiation.

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 described filters and pagination mechanics rather than stated ('use this to browse; use X to...'). The cursor-continuation rule ('nextCursor requires identical filters and sort') is genuinely useful operating guidance, but there is no explicit when-to-use versus alternatives language.

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

cancel_applyCancel an application that is still sendingA
Destructive
Inspect

Stops a queued or in-progress application when submission can still be prevented. Already submitted applications cannot be recalled; the receipt reports that boundary.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real context beyond that: the exact state boundary at which cancellation is impossible and the fact that the receipt reports that boundary, which is meaningful for a destructive operation.

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 filler, with the state constraint front-loaded and the failure boundary second. Every clause carries information.

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 explained, and the description still gestures at the receipt. For a one-parameter destructive tool the description is nearly complete; only the parameter's own semantics are unaddressed.

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 0%, so the description would need to compensate, and it does not mention applicationId at all. The single parameter is self-explanatory by name, which keeps this at a baseline 3 rather than lower.

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 (stops/cancel) plus the resource and its state (queued or in-progress application), so the action is unambiguous. It implicitly contrasts with the apply sibling by scoping itself to applications where submission can still be prevented, but never names an alternative tool.

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 a clear when-to-use condition (queued or in-progress, submission not yet sent) and an explicit when-not condition (already submitted applications cannot be recalled). No alternative tool is named for the submitted case, so it falls short of a 5.

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

confirm_hypothesisConfirm a guessA
Destructive
Inspect

Promotes a stored hypothesis after the person confirms it, then deletes the hypothesis. A stated refusal becomes a matching deal-breaker; other confirmations become work-vault notes that do not filter matches. The receipt identifies which record changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
hypothesisIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A3.7/5.0
Behavior5/5

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

Annotations only state destructiveHint=true/readOnlyHint=false. The description goes well beyond that, disclosing the delete-after-promote side effect, the branching outcome for a refusal (becomes a deal-breaker) vs other confirmations (become work-vault notes that do not filter matches), and the receipt behavior. This is exactly the kind of behavioral context a mutation tool needs.

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 tight sentences that are front-loaded with the core action, then branching semantics, then return info; little waste. Minor redundancy in the final sentence, since an output schema already exists to describe the receipt.

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 single-parameter mutation with annotations covering the destructive profile and an output schema covering the return value, the description supplies the essential branching and side-effect context. The remaining gap is the undocumented hypothesisId semantics, which is not compensated for anywhere.

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 there is a single required hypothesisId, yet the description never says what the id refers to, its format, or where to obtain it (presumably from remember_hypothesis). With low coverage the description should compensate and does not, leaving the one parameter undocumented everywhere.

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 gives a specific verb (promotes) and resource (a stored hypothesis) and adds the defining behavior (deletes the hypothesis afterward), so an agent can tell what it does. It does not name sibling hypotheses tools like remember_hypothesis/forget_hypothesis, so sibling differentiation is only implicit.

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 phrase 'after the person confirms it' implies the situational context and 'A stated refusal becomes a matching deal-breaker; other confirmations become work-vault notes' hints at branch outcomes, but there is no explicit when-to-use vs when-not guidance or named alternative for storing/forgetting hypotheses. Usage must be inferred.

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

dismiss_matchDismiss a matchA
Destructive
Inspect

Hides one listing from the account's match feed, job alerts and Autopilot until the account restores or saves it. The receipt offers undo for one minute; restore_match reverses it at any time and list_dismissed_matches lists dismissed listings. The supplied reason is not stored. It does not hide other listings from the same company and does not move or remove an existing pipeline card.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesListing id from the feed or `list_matches`.
reasonNoThe person's own words for why this role is wrong. Accepted but not stored, and it does not change later matches.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare destructiveHint=true, readOnlyHint=false, openWorldHint=false; the description goes well beyond by disclosing persistence scope (feed, alerts, Autopilot), the one-minute undo window, permanent reversibility via restore_match, that the reason is discarded, and two negative side-effect exclusions. That is the kind of context annotations cannot carry.

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 effect, then alternatives, then caveats, and nearly every sentence carries distinct information. The 'reason is not stored' sentence largely duplicates the schema description, which is the only real redundancy.

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 no explanation, and the description still supplies the return-relevant detail (an undo receipt). With only two params and full schema coverage, nothing an agent needs to call and reason about this tool is missing.

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 jobId sourcing and the reason field are already documented in the schema ('Accepted but not stored'). The description restates the reason-not-stored behavior rather than adding new semantics, so the baseline 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 (hides/dismisses) and resource (one listing), plus the exact surfaces affected: match feed, job alerts, Autopilot. It clearly distinguishes itself from the siblings restore_match and list_dismissed_matches by naming them and describing the inverse operation.

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 alternatives with conditions: restore_match reverses it at any time, list_dismissed_matches enumerates dismissed listings, and the receipt's undo window is time-boxed to one minute. It also states two explicit non-uses: it does not hide other listings from the same company and does not move or remove an existing pipeline card.

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

edit_answerEdit one application answerA
Destructive
Inspect

Revises one employer-question answer identified by questionId; other answers and documents remain unchanged. This edits application prose rather than the account's factual screening, work-authorization, compensation or availability settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionIdYes
instructionYes
applicationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
receiptYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the write/overwrite nature is covered. The description earns credit for adding blast-radius context beyond that: only the identified answer changes while 'other answers and documents remain unchanged', and it explicitly disclaims touching account settings. Missing is whether the change is reversible (an undo_last sibling exists) or what permissions are needed.

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 filler. The core action and its granularity are front-loaded, and the second sentence is a compact scope exclusion rather than padding.

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 the destructive/scope profile is well covered between annotations and text. The remaining gap is the semantics of the instruction parameter and any reversibility note for a destructive edit — minors against an otherwise complete picture.

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 0%, so the description carries the burden. It clarifies that questionId selects one employer question and that the edit is scoped to a single answer, which adds meaning. It says nothing about applicationId's role or, more importantly, what 'instruction' contains — a directive to be interpreted versus replacement prose — which is the highest-risk ambiguity here.

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 — 'Revises one employer-question answer identified by questionId' — and pins the granularity to a single answer. It also carves out what it is NOT (account-level factual screening, work-authorization, compensation, availability settings), which separates it from the settings siblings (update_preferences, update_autopilot_settings). It stops short of naming the closest sibling (save_application_answers) for a bulk-save case.

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 second sentence gives an implicit when-not by excluding account fact settings, so an agent can rule out the wrong tool family. But there is no explicit guidance on when to pick this over save_application_answers (bulk) or edit_cover_letter/edit_resume, and no prerequisites or ordering constraints are stated.

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

edit_cover_letterEdit the cover letterA
Destructive
Inspect

Revises an existing application's cover letter using the supplied instruction. scope can identify a paragraph or selected passage. Without scope, the targeted passage is located from the instruction; a whole-letter instruction revises the whole letter. Existing materials are required.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
instructionYesWhat to change, in the person's words.
applicationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
receiptYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=false, so the safety profile is covered. The description adds the prerequisite ('existing materials are required') and the scope-resolution fallback behavior, but never states whether the previous letter text is overwritten or recoverable — a relevant omission for a destructive edit. Useful additions, but not rich.

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?

Four tight sentences with no filler; the core action is stated first and the scope-resolution rules follow in the order an agent would need them. Slightly dense, but nothing is wasted.

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 no explanation, and the description covers the main ambiguity (scope vs. no scope) plus the prerequisite. The gap is the unmentioned section/answer scope kinds, which could lead an agent to believe only two target types exist for this non-trivial oneOf parameter.

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 only 33%, so the description must compensate, and it partially does by explaining scope's role and the no-scope fallback. However it describes scope as covering only 'a paragraph or selected passage', omitting the 'section' and 'answer' variants the schema's oneOf defines, leaving the parameter semantics incomplete.

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 (revises) and resource (an existing application's cover letter) plus the mechanism (supplied instruction). The resource alone separates it from edit_resume and edit_answer among the siblings, so an agent can route without opening the 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?

Explains the key conditional: a scope targets a paragraph/passage, no scope means the passage is inferred from the instruction, and a whole-letter instruction rewrites everything. It also states the prerequisite (existing materials required). No explicit sibling alternatives or exclusions are named, so it falls short of a 5.

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

edit_resumeEdit the tailored resumeA
Destructive
Inspect

Revises one application's tailored resume using the supplied instruction, preserving its formatting and regenerating the PDF. scope identifies a section block or selected passage; otherwise the target is located from the instruction. The person's default uploaded resume is not modified; an active default variant is refused. Existing materials are required.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo
instructionYes
applicationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
receiptYes

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, and the description goes further by disclosing side effects and boundaries: formatting is preserved, the PDF is regenerated, the user's default uploaded resume is untouched, and an active default variant is refused. For a mutation tool this is unusually strong disclosure of what changes and what is protected.

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?

Four compact sentences, front-loaded with the action and side effect before the scope and precondition details. The telegraphic register ('scope identifies a section block or selected passage') is efficient, though the clipped final sentence reads more like a note than a complete statement.

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 no explanation, and annotations cover the safety profile; the description adds preconditions, scope semantics, and side effects. Remaining gaps are peripheral: no mention of authorization requirements or reversibility (undo_last exists as a sibling), and the full set of scope kinds is left to the schema.

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 0%, so the description must compensate, and it only partially does: it explains that scope selects a section block or passage and that omitting scope falls back to instruction-based targeting. It never mentions the paragraph or answer scope variants that the schema supports, and it says nothing about applicationId or what the instruction string may contain.

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 ('Revises one application's tailored resume') and constrains the scope to a single application, which separates it in practice from cover-letter or base-resume siblings. It stops short of explicitly naming the adjacent tools (edit_cover_letter, replace_application_document, format_resume), so differentiation is inferred rather than stated.

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 real usage context: scope may target a block or passage, otherwise the target is derived from the instruction, and it states preconditions ('Existing materials are required') plus a refusal condition ('an active default variant is refused'). No alternative tool is named for the cases where this one does not apply, so it is context-rich but not a full when/when-not map.

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

forget_hypothesisForget a guessA
Destructive
Inspect

Deletes the specified unconfirmed career hypothesis from the account's stored hypotheses. Existing confirmed career facts and stated preferences are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
hypothesisIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds genuinely useful scope beyond that: it states that confirmed career facts and stated preferences are untouched, which bounds the blast radius of a delete. It stops short of saying whether the deletion is reversible, which would matter given the sibling undo_last.

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 tight sentences with zero filler. The destructive action is front-loaded and the scoping reassurance follows immediately.

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 cover the safety profile. The description covers what is deleted and what survives, but omits reversibility and how to discover a hypothesisId — minor gaps for a single-parameter destructive 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% for the single hypothesisId parameter, so the description carries the full burden. It only identifies the target entity ('the specified unconfirmed career hypothesis') and gives no format, source, or lookup guidance for obtaining a valid ID, leaving the parameter effectively 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 states a specific verb and resource — deletes a stored 'unconfirmed career hypothesis' — and the qualifier 'unconfirmed' implicitly separates it from confirm_hypothesis and remember_hypothesis. It is clear without opening the schema, though it never names a sibling tool 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 only implied: the agent can infer this is for discarding a guess rather than a confirmed fact. There is no explicit when-to-use statement, no mention of confirm_hypothesis as the alternative action, and no note on whether undo_last can reverse it.

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

format_resumeChange how part of the resume looksA
Destructive
Inspect

Changes alignment, bold, italic or underline formatting of a tailored resume without changing its words. line identifies a passage and section identifies a heading; selected text can supply the target when neither is given. No writing model or allowance is used. The receipt includes undo.

ParametersJSON Schema
NameRequiredDescriptionDefault
boldNo`false` removes the mark.
lineNoA few words that identify one non-blank line of the tailored resume, matched case-insensitively.
textNoA phrase within the targeted lines. When given, the marks apply to it alone; otherwise to the whole of each line.
alignNo
italicNo`false` removes the mark.
sectionNoA heading as it appears on the resume, such as SUMMARY or EXPERIENCE; the section's lines under it are styled together. The heading line itself is not — to style it, name it as a `line`.
underlineNo`false` removes the mark.
applicationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.2/5.0
Behavior4/5

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

Adds real value beyond the annotations: it discloses that no writing model or allowance is consumed (cost profile) and that 'the receipt includes undo' (reversibility), which materially softens the destructiveHint=true flag. It does not cover permission requirements or rate limits, so it stops 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?

Four tight sentences, front-loaded with the primary action, followed by targeting, cost, and receipt. Every sentence carries distinct information with no padding.

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 mutation tool with an output schema present, the description supplies the essentials: scope of change, targeting interaction, cost, and undo. An agent could invoke it correctly; only preconditions/permissions are left unaddressed.

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 75% (baseline 3), and the description goes further than the schema by defining the precedence logic the schema states only piecemeal: line identifies a passage, section identifies a heading, and selected text supplies the target when neither is given. This interaction rule is genuinely additive.

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 (changes) and resource (alignment, bold, italic, underline formatting of a tailored resume) and explicitly bounds the operation with 'without changing its words.' This cleanly separates it from content-editing siblings like edit_resume or generate_resume, so an agent can tell them apart 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 Guidelines3/5

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

Explains the targeting mechanism (line vs section vs selected text) but never states when to choose this tool over alternatives such as edit_resume, nor any preconditions. Usage is implied by context rather than asserted.

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

generate_outreachGenerate outreach emailB
Destructive
Inspect

Generates a personalized outreach-email draft for the specified contact and job. No email is sent by this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesJob ID
contactIdYesContact ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotent, and the description usefully clarifies that no email is sent. However, it does not explain what the destructive aspect actually is (e.g., overwriting an existing draft) or whether it requires the profile/resume to be populated.

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 tight sentences with the core action front-loaded and the safety clarification immediately following. Nothing is wasted.

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?

Covers both required parameters and the key side-effect question (nothing is sent), and annotations carry the safety profile. The only minor gap is not stating whether the generated draft is returned in the response, which matters given there is no output schema.

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 both UUID parameters are already documented by the schema. The description only restates that a contact and job are required, adding no format or validation detail beyond the schema.

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 (generates) and resource (personalized outreach-email draft) and scopes it to a contact and job. It's clearly distinguishable from siblings like generate_pack or reply_to_recruiter, though it doesn't explicitly name a sibling it is not.

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?

No when-to-use guidance, no prerequisites, and no routing to alternatives such as reply_to_recruiter or generate_pack. The agent must infer when an outreach draft is appropriate versus a different generation tool.

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

generate_packGenerate application materialsA
Destructive
Inspect

Queues a tailored resume, cover letter and employer-question answers for one saved role. assets optionally selects a subset; omission requests all three. Each request spends one pack allowance, regardless of subset, and generation settles asynchronously. Existing materials can be overwritten by generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesListing or private-job id, for a role not yet prepared.
assetsNoSubset to generate. Omit for all three.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations, which only flag destructiveHint=true and readOnlyHint=false. The description specifies exactly what destruction means ('Existing materials can be overwritten'), that generation is asynchronous, and that allowance is spent per request regardless of subset — details an agent cannot derive from structured fields.

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?

Four tight sentences, front-loaded with purpose before cost and async behavior. No filler; each sentence contributes a distinct fact (scope, subset handling, cost, side effects).

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 no explanation, and the annotations plus description cover the safety and behavioral profile. Cost, async settlement, overwrite risk, and subset defaults are all present — nothing needed to call it correctly is missing.

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% and the schema already documents both jobId and assets, including 'Omit for all three'. The description largely restates the assets semantics, adding only the allowance-per-subset angle. Baseline 3 is appropriate when the schema carries the parameter burden.

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 ('Queues') and enumerates exactly what a pack contains: resume, cover letter and employer-question answers for one saved role. This distinguishes it from single-asset siblings like generate_resume or generate_outreach implicitly, but never names them, so the differentiation is inferential rather than explicit.

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?

Conveys cost context ('one pack allowance regardless of subset') and the default (omission requests all three), which helps an agent decide whether to request the full pack. However, it never states when to choose this over generate_resume/generate_outreach or what preparation state the role must be in, leaving usage to inference.

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

generate_resumeGenerate tailored resumeB
Destructive
Inspect

Generates a tailored resume for the specified account-owned application and returns its result. This does not submit an application.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesApplication ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact (no application is submitted) but says nothing about whether existing resumes are overwritten, whether it consumes credits/quota, or what 'its result' contains.

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 short sentences, front-loaded with the action, with no filler. The trailing 'and returns its result' is slightly redundant and vague but does not bloat the definition.

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?

For a single-parameter generation tool with rich annotations and no output schema, the definition covers the essentials. It still leaves the return payload unexplained despite promising 'its result', and gives no hint about the destructive/non-idempotent consequences an agent should expect.

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?

Only one parameter and schema coverage is 100%, so the schema already documents applicationId fully. The description adds the ownership constraint ('account-owned'), which is minor added meaning, matching the baseline 3 for schema-covered params.

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?

Specific verb (generates) plus resource (a tailored resume) scoped to the account-owned application, which separates it from upload_resume, format_resume, and edit_resume. It stops short of explicitly naming those siblings, so the differentiation is inferred from scope rather than stated.

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 sentence 'This does not submit an application' draws a useful boundary against apply, which is real routing guidance. However it gives no positive when-to-use condition and never contrasts with format_resume, edit_resume, or generate_pack, which are the closest alternatives.

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

get_application_documentsGet links to one application's documentsA
Read-only
Inspect

Returns version-specific resume PDF and DOCX, cover-letter PDF and combined-pack PDF download links for one application, plus source, inclusion, lock state and revision. Links open without login for about ten minutes. Null links indicate missing or excluded documents. packPageUrl requires sign-in. There is no cover-letter DOCX.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksYes
lockedYesA send is in flight; nothing about it can be changed.
resumeYes
revisionYes
expiresAtYes
coverLetterYes
packPageUrlYes
applicationIdYes

TDQS

A4/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, non-destructive). The description adds substantial behavioral context beyond them: links expire in about ten minutes, open without login, packPageUrl requires sign-in, null links mean missing/excluded documents, and no cover-letter DOCX exists.

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 return content, then four tight sentences each carrying distinct operational facts. Slightly fragmented close ('There is no cover-letter DOCX') but no wasted 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?

An output schema exists, so return values need not be spelled out, yet the description still covers the critical caveats an agent needs (link expiry, auth exception, null semantics). Complete for a read-only document-link 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 description coverage is 0%, so the schema does not document applicationId. The description compensates partly by framing the tool as operating on 'one application', but it adds no format, source, or id-sourcing detail for the single parameter.

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?

Names a specific verb (Returns) and resource (version-specific resume PDF/DOCX, cover-letter PDF, combined-pack PDF download links for one application). An agent knows exactly what it gets back without opening the schema.

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?

The description never says when to use this tool versus alternatives such as get_application_materials, get_resume_download_link, or get_pack_status. It implies a per-application document fetch but provides no routing or exclusion guidance.

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

get_application_materialsGet application materialsA
Read-only
Inspect

Returns one account-owned application's resume and cover-letter materials plus draft employer-question answers with IDs, labels, current text and input type. Materials include default and tailored resume contents, selected variant, inclusion, lock state and optimistic revision for submission. Rendered resume PDFs are not included (pdfBase64 is null); get_application_documents returns download links for the files this application will send.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesApplication ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
answersNo
materialsYesRevisioned, per-application material selection. Revision zero is the legacy fallback view; an Apply confirmation must persist a positive revision.

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, openWorldHint=false, and destructiveHint=false, so the safe-read profile is covered. The description still adds useful behavioral context: material scope is 'account-owned,' the returned payload carries a lock state and optimistic revision for submission, and pdfBase64 is explicitly null. It stops short of describing pagination or size limits, but the added detail is meaningful.

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 what is returned before the exclusion and the routing to the sibling. Dense but every sentence carries information (contents, revision/lock fields, PDF exclusion, alternative tool); no filler.

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 no prose explanation, yet the description still enumerates the salient payload fields and clarifies the PDF/return-link split. For a single-parameter read tool, nothing an agent needs to call it correctly is missing.

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?

Only one parameter (applicationId) exists and its schema coverage is 100% with a UUID format and pattern, so the schema fully documents it. The description adds no syntax or format detail beyond the schema, making the baseline of 3 appropriate.

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 (Returns) and resource (an account-owned application's resume, cover-letter materials, and draft employer-question answers), enumerating the exact contents. It is clearly distinguishable from sibling tools like get_application_documents, 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 Guidelines5/5

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

Gives explicit when-not guidance (rendered resume PDFs are not included; pdfBase64 is null) and routes the agent to the correct alternative, get_application_documents, for download links. The condition selecting each tool is unambiguous.

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

get_application_readinessCheck what applying still needsA
Read-only
Inspect

Returns readiness for one-off submission and Autopilot, plan entitlement and missing onboarding answers. Missing items include question, answerShape, choices, current value, available suggestion and webUrl. A null answerShape means the step requires the person's action in the web app. This read sends nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
readyYesA one-off `apply` would pass every profile and plan check now.
missingYes
onboardingYes
entitlementYes
autopilotReadyYes
autopilotAvailableYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description reinforces it with 'This read sends nothing.' It goes further than the annotations by disclosing return-shape details and the meaningful semantic that a null answerShape means the user must act in the web app.

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 front-loaded sentences with no filler: what it returns, what the missing items contain, and the null-answerShape rule. The middle sentence is a dense enumeration but every item carries meaning, and the read-only caveat is kept to four words.

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 the description need not explain return values, yet it still surfaces the one semantic an agent cannot get from schema structure alone (null answerShape = user action required in web app). Zero parameters and full annotation coverage leave nothing else materially 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The field-level terms it does mention (question, answerShape, choices, webUrl) describe the payload rather than inputs.

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 ('Returns readiness for one-off submission and Autopilot, plan entitlement and missing onboarding answers'), which is far more concrete than the vague sibling get_application_status or the action-oriented prepare_applications. It does not, however, explicitly state how it differs from those adjacent tools, so an agent must infer the boundary.

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 explicit when-to-use guidance and no named alternatives, despite several plausible siblings (get_application_status, prepare_applications, strengthen_application). The reader can infer this is a pre-submission checklist, but nothing routes the agent between it and the alternatives.

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

get_application_statusRead what happened to one applicationA
Read-only
Inspect

Returns an application's event timeline and separate submitted, employerConfirmed and replied facts. An application id or pipeline matchId resolves the application. Coverage names the mail this read inspected, normally only mail sent to the account's Dreamwork application address; employer mail sent anywhere else is not visible here and stays unknown. personalInboxConnected false is the normal state, not a setup step. The board column alone is not submission evidence. submittedAnswers contains captured employer-form values and cover-letter delivery for the proven submitted attempt, or null when submission, the attempt or a capture is unproven or unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesApplication id. A pipeline card's `matchId` is accepted and resolved to the application behind it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
truthYes
statusYes
companyYes
timelineYes
applicationIdYes
recoveryStateYes
submittedAnswersYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already mark this readOnly/no-destructive, so the safety profile is covered; the description adds real behavioral context beyond that: what Coverage means, that personalInboxConnected=false is normal rather than a setup step, that the board column is not submission evidence, and that submittedAnswers is null when the attempt or capture is unproven. It stops short of return-shape or ordering details, but the semantic caveats are substantive.

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?

Purpose is front-loaded in the first sentence and every following sentence carries a distinct constraint (coverage, inbox flag, board-column caveat, submittedAnswers nullability), so there is little dead weight. Density and unexplained domain jargon ('Dreamwork application address', 'proven submitted attempt') make it harder to parse than it needs to be.

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 structure need not be re-explained, and the description focuses on the interpretive semantics an agent needs (coverage scope, null semantics, what does not count as evidence). For a single-parameter read tool this is close to complete; only explicit sibling routing is missing.

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 one parameter and 100% schema description coverage, the schema already documents applicationId and even the matchId resolution rule. The description only restates 'An application id or pipeline matchId resolves the application', adding no format or edge-case 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.

Purpose4/5

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

The opening sentence names a specific verb (Returns) and resource (an application's event timeline plus submitted/employerConfirmed/replied facts), which an agent can act on immediately. It does not, however, name or contrast with the nearest siblings (get_application_readiness, get_application_documents, get_pipeline), so differentiation is left to inference.

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?

It says the tool resolves via an application id or a pipeline matchId, which implies when it applies, and it warns that employer mail sent elsewhere 'is not visible here and stays unknown'. But there is no explicit when-to-use vs. sibling guidance (e.g. versus get_application_readiness or list_matches), so usage is implied rather than stated.

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

get_autopilot_settingsRead Autopilot settingsA
Read-only
Inspect

Returns the saved minimum Matches score and default-versus-tailored resume choice for Autopilot. Reading settings starts no applications.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreFloorYes
resumeVariantYes
scoreFloorDefaultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by clarifying that reading settings does not start any applications — a side-effect guarantee an agent might otherwise worry about for an Autopilot tool.

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, front-loaded with the returned values and closed with the non-triggering guarantee. No padding or 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-value detail is not strictly required, yet the description usefully summarizes the two key fields. The remaining gap is routing: it never distinguishes itself from the closely named get_autopilot_status and update_autopilot_settings siblings in the same Autopilot cluster.

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 per the rubric. There is nothing for the description to clarify at the parameter level, and the schema is trivially complete.

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 (returns) and identifies the exact settings returned: the minimum Matches score and the default-vs-tailored resume choice. That is far more than a restatement of the title. It stops short of naming how it differs from siblings like get_autopilot_status or update_autopilot_settings, leaving the agent to infer from the 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: the sentence 'Reading settings starts no applications' hints at a safe, non-triggering read but does not state when to call this versus get_autopilot_status or update_autopilot_settings. No exclusions or prerequisites are given.

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

get_autopilot_statusRead Autopilot statusA
Read-only
Inspect

Returns Autopilot state (on or off, matching the product switch, or unavailable when the plan does not include it), daily and monthly sent counts and plan limits, match-score floor, eligible and in-flight counts and nextRunAt, which is null unless the state is on. dailyLimit is today's allowance and usualDailyLimit is the plan's usual daily limit. On the first day Autopilot sends in a monthly window, dailyLimit is a larger first-day allowance; after that day it equals usualDailyLimit. That first day is the first day it sends in the window, not the first day of the calendar month. unavailableReason explains plan restrictions. No last-run timestamp is provided.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
nextRunAtYes
sentTodayYes
dailyLimitYes
scoreFloorYes
monthlyLimitYes
eligibleCountYes
inFlightCountYes
sentThisMonthYes
usualDailyLimitYes
unavailableReasonYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the read-only safety profile, but the description adds real behavioral context: the on/off/unavailable state semantics, the null condition on nextRunAt, plan-restriction explanation via unavailableReason, and an explicit negative disclosure ('No last-run timestamp is provided'). This is well beyond what annotations convey, though it stays focused on output semantics rather than access constraints.

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

Conciseness3/5

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

It is front-loaded with the state values, but the middle is a long digression on dailyLimit vs usualDailyLimit first-day allowance logic that repeats itself and is partly redundant with the output schema. Some sentences earn their place, but the definition is longer than a zero-parameter status tool needs.

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 no-arg, read-only status tool with an output schema present, the description is essentially complete on the data model, including edge cases like the first-send-day allowance and unavailable plans. The one missing piece is any guidance on when to prefer this over sibling status/settings tools.

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 adds nothing parameter-related and instead spends its budget on output semantics, which is appropriate for a no-arg status read.

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 ('Returns Autopilot state') and enumerates the returned fields, so an agent knows exactly what it reads. However, it never distinguishes itself from the closely-named siblings get_autopilot_settings or set_autopilot, leaving the agent to infer that this reads runtime status rather than configuration.

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?

The description contains no when-to-use, when-not-to-use, or alternative-tool guidance. With siblings like get_autopilot_settings, set_autopilot, and get_usage available, an agent gets no routing help about which to call to answer an Autopilot question.

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

get_career_recordRead the career recordA
Read-only
Inspect

Returns resume-derived professional facts, document-vault metadata, person-stated preferences, writing preferences and unconfirmed hypotheses as separate fields. Resume text and document bodies are excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoNarrow the read. Omit for all four. A section you leave out comes back empty rather than absent, so do not read an omitted section as "they have none".

Output Schema

ParametersJSON Schema
NameRequiredDescription
factsYesNull when no resume has been analyzed yet.
vaultYesWork-vault card titles and ids. Never their contents.
statedYes
hypothesesYes
writingPreferencesYesComes with `hypotheses`; both live in the same record.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine content-boundary information beyond that: it names the excluded material (resume text and document bodies), which tells the caller what they will not receive and therefore when another tool is needed.

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 tight sentences, front-loaded with the verb and the returned categories, with the exclusion caveat following. No filler, no repetition of the title 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, so return-value explanation is unnecessary, and annotations cover the read-only safety profile; the description completes the picture with inclusion and exclusion scope. The remaining gap is routing guidance relative to the overlapping sibling reads, which is the one thing an agent could still get wrong.

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% and the 'include' parameter already carries a detailed, well-explained description (omit for all four; omitted sections return empty rather than absent). The description adds no syntactic or semantic detail beyond the schema, 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?

The description states a specific verb (returns) and resource (career record) and enumerates the five content categories returned as separate fields, which is well beyond a tautology of the name/title. However, it does not distinguish this consolidated read from overlapping siblings such as get_resume_work_history, get_preferences, or get_application_documents, so an agent can't tell from the text alone why it should pick this tool over those.

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 statement of when to use this tool versus the many sibling reads that surface the same subject matter (get_resume_work_history, get_preferences, get_profile, get_application_documents). The only guidance present is parameter-level (how to use 'include'), which belongs to the schema rather than tool selection.

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

get_communication_preferencesRead email preferencesA
Read-only
Inspect

Returns job-alert settings and cadence, Autopilot result-email mode, product-update consent and the all-optional-emails-off state. jobAlertEligibility separately reports delivery restrictions such as bounce or unsubscribe. Account, security, billing and essential employer mail are outside these settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobAlertsYes
productUpdatesYes
autopilotResultsYes
jobAlertEligibilityYes
allOptionalEmailsOffYes
autopilotResultsOffAtYesWhen Autopilot results were last turned off.

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, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the inclusion of the 'all-optional-emails-off state' and the separate jobAlertEligibility channel for bounce/unsubscribe restrictions, plus explicit out-of-scope boundaries. It does not address auth, rate limits, or freshness, so it earns moderate credit rather than high.

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 tightly written sentences: what is returned first, then the jobAlertEligibility nuance, then the exclusion boundary. Nothing is padded, and the most important content is front-loaded.

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 shapes need not be described, and the description correctly focuses on scope: what categories are included and which mail types are excluded. For a zero-parameter read tool this is nearly complete; only the routing relationship to sibling preference tools 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?

The tool takes zero parameters, so there is nothing for the schema or description to disambiguate; baseline is 4 for an argument-free 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?

The description names a specific verb ('Returns') and enumerates the exact preference categories covered: job-alert settings and cadence, Autopilot result-email mode, product-update consent, and the all-optional-emails-off state. This makes the tool's scope legible against sibling preference readers, though it does not explicitly name the alternative tools (e.g. get_preferences or update_communication_preferences) to sharpen the distinction.

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 scoping sentence: 'Account, security, billing and essential employer mail are outside these settings' tells the agent what this tool does not cover, which is genuinely useful routing information. However, there is no explicit when-to-use versus alternatives guidance, and the read/write split with update_communication_preferences is left to inference from the tool name.

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

get_generated_resumesGet generated resumesA
Read-only
Inspect

Returns tailored resumes generated for the specified account-owned application. Rendered PDFs are not included (pdfBase64 is null).

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesApplication ID

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds genuinely useful behavioral context beyond them by disclosing that rendered PDFs are excluded and pdfBase64 will be null, which prevents a wasted expectation about binary content.

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 tight sentences with zero waste. The core behavior and the notable PDF exclusion are both front-loaded.

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 simple read-only lookup with full annotation coverage, the description is nearly complete and even flags the null PDF field. Without an output schema it could say more about the returned resume fields, but nothing essential for calling it correctly is missing.

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% for the single applicationId parameter, so the schema already documents it. The description reinforces that the ID must be account-owned but adds no format or syntax detail beyond the schema, matching the baseline.

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 (Returns) and resource (tailored resumes) scoped to an account-owned application. It implicitly distinguishes itself from generate_resume by being the retrieval side, but it does not name any sibling 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: call it to read resumes already generated for an application. There is no explicit when-to-use vs alternatives (e.g., get_application_materials, get_resume_download_link, generate_resume), so the agent must infer the correct tool.

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

get_inboxRead recruiter conversationsA
Read-only
Inspect

Returns recruiter conversations ordered by newest activity, including role, message kind, unread state and whether the employer wrote last. unanswered means the employer wrote last; needsReply means that message asks for a response. A threadId returns its messages. Reading does not mark mail read. limit and nextOffset support pagination; mail bodies are third-party content. A page holds 20 threads by default and limit accepts up to 50; for the next page, send the previous nextOffset as offset, and null means the end.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNoThreads to skip; the previous result's `nextOffset`.
threadIdNoRead one thread in full instead of listing.
unreadOnlyNoOnly threads holding mail the person has not been shown.
unansweredOnlyNoOnly threads whose last employer mail needs a reply.

Output Schema

ParametersJSON Schema
NameRequiredDescription
threadsYes
messagesYesPopulated only when `threadId` was given.
nextOffsetYes
totalThreadsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/destructiveHint, but the description adds genuinely useful behavior: reading does NOT mark mail read, threads are ordered by newest activity, and mail bodies are third-party content. It stops short of naming mark_messages_read or noting auth/rate-limit constraints, so it is strong but not exhaustive.

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 purpose and scope, then filters, then pagination, then the side-effect caveat. Sentences are dense and each carries information, though the middle clauses about unanswered/needsReply are somewhat compressed.

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

Completeness5/5

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

Given an output schema exists, the description needn't explain return values and instead covers everything else an agent needs: mode selection, filter semantics, pagination flow, and the non-marking read behavior. Nothing required to call it correctly 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?

With schema coverage at 80%, the schema already documents offset and the filter flags, so the baseline is 3. The description goes further by tying pagination together: 20-thread default page, limit up to 50, send previous nextOffset as offset, and null signals the end.

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 opens with a specific verb and resource ("Returns recruiter conversations ordered by newest activity") and enumerates the fields returned, so the agent knows exactly what it gets. It does not name any sibling tool, so differentiation from tools like get_unread_reminders or mark_messages_read is only implied.

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 clearly distinguishes the two modes (listing vs. a single threadId) and explains the two filter flags (unreadOnly, unansweredOnly) with precise definitions. It also signals the safe-read behavior, but never explicitly names an alternative tool or an exclusion condition for when not to use it.

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

get_jobRead one roleA
Read-only
Inspect

Returns one saved or corpus role by id with full description, company, location and remote terms, salary, posted date, match score, saved state, board column, application id, material readiness and work-eligibility verdict. url is the Dreamwork listing page; sourceUrl is the employer's direct posting. eligible is true for an unrestricted role or a confirmed allowed country, false for a high-confidence restriction excluding confirmed countries, and null when eligibility is unknown. Only false blocks applying or Autopilot: null means eligibility is not yet known, so proceed with applying — the application itself surfaces any real restriction. whyItMatches may be empty when no matcher explanation is stored.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesListing id or private-job id from the feed or envelope.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description goes well beyond them by defining the eligible tri-state and its concrete effect ('Only false blocks applying or Autopilot'), plus the url vs sourceUrl distinction and the possibility of an empty whyItMatches. That is genuinely useful behavioral context the agent cannot get from the annotations or 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?

The lead sentence is front-loaded and field-dense, and the eligibility paragraph earns its length because it changes agent behavior. The url/sourceUrl sentence is a slight digression given an output schema exists, keeping it just short of a 5.

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-value explanation is technically redundant, and the description nonetheless supplies the interpretation the schema cannot (what null vs false eligibility means for applying). Nothing needed to invoke it correctly is missing; only sibling disambiguation is absent.

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 a single parameter with 100% schema description coverage, so the schema already carries the semantics; per the baseline this is a 3. The description adds no syntax, format, or sourcing detail about jobId beyond what the schema states.

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 one saved or corpus role by id') and enumerates the payload fields, so the agent knows exactly what it gets back. It does not, however, distinguish itself from siblings like get_listing or browse_listings, leaving the agent to infer the boundary between the corpus/private-job lookup and listing browsing.

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 statement of when to call this versus get_listing, browse_listings, or list_matches, which is the primary selection problem for a single-role fetch. The eligibility paragraph guides downstream behavior (apply or not) rather than tool choice, so no real selection guidance is provided.

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

get_listingGet listing detailsA
Read-only
Inspect

Returns full details of a platform job listing identified by id. No login is required. url is the Dreamwork listing page; sourceUrl is the employer's direct posting.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesListing ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the bar is lower. The description adds real value by clarifying the two URL fields (url = Dreamwork page, sourceUrl = employer posting) and stating 'No login is required' — auth context beyond annotations. Still no pagination/return-shape notes, so it stays at 3.

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 front-loaded sentences, each carrying distinct payload (what it returns, no login needed, meaning of the two URL fields). Zero waste and no 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?

For a single-param read tool with annotations covering safety and no output schema, the description is largely sufficient. It could go further by explaining the distinction from get_job, but nothing needed to call it correctly is missing.

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% and the single id parameter is fully described in the schema, so the baseline is 3. The description doesn't add id format or semantics beyond what the schema enforces.

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 ('Returns full details of a platform job listing') scoped by the identifying id, and distinguishes 'platform job listing' from adjacent tools like get_job and browse_listings. An agent knows exactly what this retrieves.

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?

Implied usage (fetch details for a known listing id), but there is no explicit when-to-use vs get_job/browse_listings, and no stated condition for picking this over a sibling. Adequate but with a clear gap given the crowded sibling set.

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

get_pack_statusCheck whether materials are readyA
Read-only
Inspect

Returns material preparation state for the specified application, board-card or listing ids: queued, generating, ready, partial, failed, stale, not_started or not_found. Includes requested and completed assets, edit and lock state, material revision and review-page URL. Reading starts no generation and changes no materials.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdsYesApplication ids from a receipt or a result; a card or listing id on the board also resolves.

Output Schema

ParametersJSON Schema
NameRequiredDescription
packsYes

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, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful nuance that a read will not kick off generation, plus the shape of returned fields (assets, edit/lock state, revision, review URL). It adds modest value on top of the annotations, hence a 3.

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 enumerated states and followed by scope/behavior. Efficient, though the status enumeration is somewhat long.

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 spelled out, and annotations carry the safety profile. The description supplies the state vocabulary and the no-generation caveat, leaving only the relative positioning against sibling status tools implicit.

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% and the schema itself explains that a card or listing id also resolves, which the description largely restates. With only one well-documented parameter, the baseline 3 is appropriate and the description adds little beyond the schema.

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 (Returns) and resource (material preparation state) and enumerates the concrete status values (queued, generating, ready, partial, failed, stale, not_started, not_found). This is well beyond a tautology, but it does not explicitly distinguish itself from look-alike siblings like get_application_materials or get_application_readiness.

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 closing clause 'Reading starts no generation and changes no materials' gives clear when-to-use context, implicitly steering the agent here when it wants status without triggering work (as opposed to generate_pack). It stops short of naming any alternative explicitly, so it is clear context without exclusions.

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

get_pipelineRead the pipelineA
Read-only
Inspect

Returns saved and applied roles as board cards with column, application id and last-updated time. total and counts cover all matching records; complete identifies whether cards are truncated by limit. limit defaults to 50 cards and accepts up to 100; there is no next page, so when complete is false narrow the read with status. Column values describe board state and do not establish employer receipt or response.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cardsYes
totalYes
countsYes
completeYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description earns credit for adding real behavior: no next page, limit bounds, truncation signaled by 'complete', and the caveat that column values reflect board state rather than employer receipt. These are details an agent cannot infer from 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?

Front-loaded with what is returned, then pagination mechanics, then a semantic caveat. Every sentence carries distinct information; 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.

Completeness5/5

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

With an output schema handling return structure and annotations handling safety, the description fills the remaining gaps: pagination limits, truncation semantics, and how to narrow results. An agent has everything needed to call it 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 0%, so the description must carry the burden. It documents 'limit' fully (default 50, max 100) and explains the purpose of 'status' (narrowing a truncated read), which meaningfully compensates for the missing schema descriptions, though it does not interpret the individual enum values.

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 saved and applied roles as board cards') plus the payload shape (column, application id, last-updated time), so an agent can tell it apart from get_application_status or list_matches. It does not explicitly name a sibling, but the resource scope is distinctive enough.

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?

Provides operational guidance ('when complete is false narrow the read with status'), which is invocation-level rather than tool-selection guidance. It never says when to choose this over sibling read tools like get_application_status or list_matches, leaving selection implied.

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

get_platform_contextGet platform contextB
Read-onlyIdempotent
Inspect

Returns Dreamwork's job-search, pipeline, resume-tailoring, application, outreach and interview capabilities, plus its product context.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
thesisYes
platformYes
agentGuidanceYes
systemsOfRecordYes
systemOfIntelligenceYes

TDQS

B3.4/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 without description help. The description's added value is limited to naming the content categories returned; it does not disclose size, structure, or freshness of that context.

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 capability list is long but informative rather than redundant. Nothing is wasted, though the enumeration could have been trimmed in favor of the more useful 'when to use' sentence.

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 the description need not describe return values, and as a zero-parameter read-only tool the contract is simple. The description adequately frames what the tool is, with the only real gap being the absence of usage positioning relative to siblings.

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-vs-description burden is nil and the baseline is 4. Nothing in the description contradicts or misrepresents the empty input contract.

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 Dreamwork's ... capabilities, plus its product context') and enumerates the capability areas covered (job-search, pipeline, resume-tailoring, application, outreach, interview). It is clearly distinguishable from any sibling, none of which is an overview/context tool, though it does not explicitly say so.

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 call this versus the ~50 sibling tools. For an orientation/context tool the natural guidance would be 'call this first to discover platform capabilities before invoking domain tools', but nothing like that is stated or implied.

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

get_preferencesRead job preferencesA
Read-only
Inspect

Returns stated target functions, work locations and modes, relocation, pay floor, availability, deal-breakers, excluded companies, places and levels, seniority, AI-role interest and cover-letter settings. unanswered identifies preference keys the account holder has not supplied. It does not return resume content or work history.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
unansweredYesPreference keys the person has never answered.
preferencesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile needs no restating. The description adds genuine behavioral context with 'unanswered identifies preference keys the account holder has not supplied', which tells the agent the response can signal missing data rather than simply being empty.

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 returned resource before the boundary statement. The long field enumeration partially duplicates what an output schema already carries, but it is compact enough to stay useful for relevance judgement rather than padding.

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 zero parameters and an output schema present, the description need not describe return structure, and it instead supplies the two things structured fields cannot: the 'unanswered' semantics and the explicit boundary against resume/work-history siblings. Only a pointer to update_preferences for the write path 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?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly does not invent parameter guidance.

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 (Returns) plus the exact resource content: target functions, locations, relocation, pay floor, deal-breakers, seniority, cover-letter settings. It also scopes itself negatively ('does not return resume content or work history'), which cleanly separates it from get_resume_work_history and get_profile.

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 exclusion of resume content and work history effectively routes the agent to other tools when the need is different, and the enumeration of returned keys tells the agent what this call is good for. However, no sibling is named as a direct alternative (e.g., update_preferences for writes, get_communication_preferences for channel settings), so selection still requires inference.

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

get_profileGet profileA
Read-only
Inspect

Returns the authenticated account's profile, resume text, preferences and profileIdentityVersion snapshot. resumeUrl is null when the stored resume file is inline rather than a link; resumeText carries its contents.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
profileYesFull user_profiles row (client-safe preferences) as returned by GET /profile.
prefsVerifyPendingYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish the safe read-only, non-destructive, closed-world profile. The description goes beyond them by disclosing return-shape behavior: the profileIdentityVersion snapshot and the resumeUrl=null / resumeText fallback semantics for inline resumes. It stops short of covering freshness or caching, but the added context is real.

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 verb and the payload list, followed by one targeted edge-case clarification. No filler, no 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 zero parameters, the description only needs to frame what the call fetches and flag non-obvious return semantics, which it does. The one gap is sibling disambiguation against get_preferences and get_career_record, which the description never addresses.

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 imposes nothing to explain; the baseline for a no-param tool is 4. The description correctly spends no space on parameter syntax and instead documents the return 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 ('Returns') and resource (the authenticated account's profile) and enumerates the payload contents (resume text, preferences, profileIdentityVersion). It is clear, though it does not distinguish itself from close siblings like get_preferences or get_career_record, which also return overlapping profile-adjacent data.

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 alternative named. With siblings such as get_preferences, get_resume_download_link, and get_career_record in the same namespace, the agent gets no help deciding when this consolidated profile call is the right one.

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

get_resume_work_historyRead how the resume's experience was understoodA
Read-only
Inspect

Returns the account's main resume grouped by role: each employer with its title, location, dates and bullets as read from the file's page layout, plus achievements placed under no role and a count of bullets whose extracted-text position disagrees with the layout. status is ready, pending (still being read; call again shortly) or unavailable (no resume, or it could not be read).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
rolesYes
sourceYes`pdf` when read from the uploaded file's layout, `text` when only the extracted text was available (a DOCX, or a file too large to read as pages).
statusYes`ready` carries the grouping. `pending` and `unavailable` carry empty lists.
derivedAtYes
unattributedYesAchievements the resume lists under no role, such as a Key Achievements section, or lines the layout left unplaced. Generated materials never attach these to an employer.
bulletsOutOfTextOrderYesHow many bullets the resume's extracted text places under a different role than its page layout does, which usually means a two-column file. Zero means none detected.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, non-destructive, closed-world behavior, so the burden is lighter, and the description layers on real value: the three status states with their meanings, the fact that data is parsed from page layout, and that a count is returned for bullets whose extracted position disagrees with the layout. It does not cover auth or rate limits, but the domain-specific caveats are unusually informative.

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?

Effectively two sentences, front-loaded with the return shape and then the status semantics. Dense but every clause carries meaning; slightly heavy for a single paragraph, though nothing is padding.

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 parameterless and read-only, with an output schema present, so the description need not restate return values. It still proactively explains the grouping model, residual anomalies, and the polling implication of 'pending', leaving no gap an agent must guess at before calling.

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 of 4 applies. There is nothing for the description to disambiguate, and it does not invent or confuse any input contract.

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 (returns the account's main resume) and adds precise scope: 'grouped by role' with employer, title, location, dates, bullets, plus orphaned achievements and an anomaly count. This is clearly distinguishable from siblings like edit_resume, upload_resume, or get_resume_download_link.

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?

There is no explicit routing against alternatives (e.g., versus get_generated_resumes or edit_resume), but the description does give operational guidance for the pending state ('still being read; call again shortly') and defines when 'unavailable' applies. Usage is implied rather than stated.

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

get_statsGet pipeline statsA
Read-only
Inspect

Returns aggregate account-owned job, application, escalation and outreach statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYesJob counts for the user, total and by worker status.
outreachYesOutreach counts for the user, total and by status.
escalationsYesEscalation counts for the user's applications.
applicationsYesApplication counts by status plus derived quality metrics.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds the meaningful scope qualifier 'account-owned' and enumerates the statistical domains, but says nothing about freshness, caching or aggregation window, which would be valuable for a stats tool.

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?

A single, front-loaded sentence with no redundant or filler content. It is exactly the right size for a zero-parameter read tool.

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 explained, and the zero-parameter schema plus read-only annotations cover structure. The scope is stated, so the definition is largely complete, though a hint about when to prefer this over similar siblings is absent.

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 document beyond what the empty schema shows. Baseline 4 applies; no parameter meaning is missing.

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 gives a specific verb ('Returns') and enumerates the exact resources covered: job, application, escalation and outreach statistics, scoped to account-owned data. This is clear, but it does not distinguish this tool from adjacent siblings like get_usage, get_pipeline or get_application_status, which also surface account-level data.

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 call this versus the many other get_* siblings, nor any stated prerequisites or context. The agent must infer usage entirely from the purpose statement.

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

get_taskRead one entry in the record of what ranA
Read-only
Inspect

Returns one account-owned assistant ledger entry by taskId, including action, status, receipt, error code, and creation and update times. Queued work can be followed through its recorded status.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
taskYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the entry includes action, status, receipt, error code, and timestamps, which is useful but largely restates what the existing output schema already carries.

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 core verb+resource and scoped by taskId, then a follow-on usage note. Efficient, though the field enumeration is somewhat redundant against the output 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?

For a single-parameter read tool with an output schema and full annotation coverage, the description supplies enough to invoke it correctly. The only gap is not naming list_tasks as the alternative when the agent wants more than one entry.

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?

The description names taskId as the lookup key, but with 0% schema description coverage it adds no format, origin, or source detail (e.g. where a taskId comes from). It marginally exceeds the bare schema without compensating for the coverage gap.

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 (Returns) and resource (one account-owned assistant ledger entry) keyed by taskId, which is clear. It implies but never names list_tasks, so sibling differentiation relies on the reader inferring 'one entry' vs a list.

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 sentence 'Queued work can be followed through its recorded status' gives a usage context for following in-flight work. However, it never explicitly says when to use this over list_tasks or get_pack_status/get_autopilot_status, leaving the choice implied rather than stated.

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

get_unread_remindersCheck for unread recruiter mailA
Read-only
Inspect

Returns unread recruiter-message and thread counts, oldest unread time and recent message previews with thread, company, role and kind. Reading does not mark messages read. Previews contain third-party email content.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
messagesYesThe newest unread messages, at most ten.
unreadThreadsYes
oldestUnreadAtYes
unreadMessagesYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description nonetheless earns credit for adding two things annotations cannot: that reading has no side effect on read state (idempotent polling), and that previews contain third-party email content.

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 return payload, then the side-effect guarantee, then the privacy caveat. No filler and nothing restated from the title.

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?

With an output schema present the description need not detail the return shape, yet it still summarizes it usefully for selection. Annotations cover safety and a zero-param schema needs no explanation, so nothing an agent needs to invoke this correctly 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; schema coverage is 100% with an empty object. Baseline of 4 for a parameterless tool 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 and enumerates exactly what is returned (unread counts, oldest unread time, previews with thread/company/role/kind). It distinguishes itself from a general inbox tool by the 'unread' scope. It never names the closest siblings (get_inbox, mark_messages_read) explicitly, so a small differentiation gap remains.

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 name and the 'unread' scoping rather than stated: an agent can infer 'use this to check whether anything needs attention.' The line 'Reading does not mark messages read' hints that mark_messages_read is a separate action, but neither the when-to-use condition nor the alternative is spelled out.

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

get_updates_sinceRead what changed since a momentA
Read-only
Inspect

Returns new matches, board-status changes, employer-mail threads and Autopilot state since the supplied timestamp. asOf is the next watermark. Match discovery includes overlapHours, defaulting to 72, before since because listings may become servable after first discovery; repeated ids can appear. Truncation counts identify older changes excluded by caps. Reading marks no mail read and creates no schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceYesThe previous result's `asOf`, or when the person last checked.
overlapHoursNoHow far before `since` to look for new matches; 72 when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
asOfYes
notesYes
newMailYesThreads where the employer wrote since `since`, newest first, at most ten.
autopilotYes
newMatchesYes
moreMatchesYes
matchPoolStatusYes
matchesAddedAfterYes
applicationChangesYesBoard cards that moved since `since`, newest first, at most twenty.
applicationChangesTruncatedYesHow many older board moves were cut off by that cap. They fall before the next call's watermark, so a nonzero value means: do not advance past these changes - call get_pipeline (or repeat with an earlier `since`) before moving the watermark, or they are lost.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnly/openWorld annotations by disclosing that reading marks no mail read and creates no schedule, that repeated ids can appear (dedup is not guaranteed), and that truncation counts indicate older changes excluded by caps. These are exactly the behavioral traits an agent cannot infer from structured fields.

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 resource and change types, then the pagination contract, then side-effect guarantees. Dense but every sentence contributes; the overlapHours rationale is slightly interpolated mid-sentence, which mildly hurts readability.

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?

With an output schema present, return shape need not be described, and the description still covers the chaining watermark, overlap semantics, duplicate ids, truncation signaling, and absence of side effects. Nothing needed to call or continue-iterate this tool 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 the schema already documents both parameters, but the description adds meaning beyond it: asOf is framed as the next watermark and overlapHours is justified by late-servable listings rather than merely restating its default.

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 ('Returns new matches, board-status changes, employer-mail threads and Autopilot state since the supplied timestamp'), enumerating the exact change types covered. This makes it clearly distinguishable from point-in-time siblings like list_matches, get_inbox, or get_autopilot_status.

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?

Explains the invocation pattern precisely: pass the previous result's asOf as the next since, and the overlapHours default exists because listings may become servable after first discovery. It does not explicitly name alternatives or say when a full re-list (e.g. list_matches) is preferable, so it falls short of a 5.

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

get_usageRead what the plan still allowsA
Read-only
Inspect

Returns the account's plan tier, packs and applications used today, their allowance limits and the next reset time. A null limit represents an unlimited allowance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
tierYes
resetsAtYes
packsLimitYes
packsUsedTodayYes
applicationsLimitYes
applicationsUsedTodayYes

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, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds one genuine behavioral detail beyond that: a null limit means unlimited allowance, which prevents a misread of the returned data. It says nothing about auth requirements, rate limits, or refresh cadence, so it is adequate rather than rich.

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, both load-bearing. The returned fields are front-loaded, and the null-limit caveat follows immediately as the one non-obvious interpretation rule. No filler, no restatement of the title or name.

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?

With an output schema present, the description is not obligated to enumerate return values, and with zero parameters and full annotation coverage there is little else to specify. The description still covers the account state, the consumed allowances, and the reset timing, plus the null semantics, which is everything an agent needs to call and interpret this 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The schema is empty and complete, and the description introduces no parameter confusion.

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 gives a specific verb (returns) and an explicit enumeration of the resource contents: plan tier, packs, applications used today, allowance limits, and reset time. An agent immediately knows this is a read of current quota/consumption state. It does not, however, distinguish itself from nearby siblings such as get_stats or get_upgrade_link, 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 Guidelines2/5

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

There is no statement of when to call this tool versus alternatives. With get_upgrade_link and get_stats present in the sibling list, an agent has no guidance on whether this is the tool to check remaining quota, or whether get_stats is the right call instead. Usage context is left entirely to inference.

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

import_jobImport a job from a URLA
Destructive
Inspect

Fetches a public job-posting URL and imports it as a private role in the account's pipeline. Extraction runs asynchronously and the card appears when it finishes. A posting already held by Dreamwork returns completed without another fetch.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesJob posting URL, as the person gave it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=true), and the description adds real context beyond them: extraction is asynchronous, the card appears only on completion, and an already-held posting returns completed without a re-fetch (idempotency). It does not clarify why destructiveHint is set, given the import reads as additive.

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 tight sentences, purpose front-loaded, then behavior, then the idempotency edge case. Every sentence carries information an agent would otherwise have to guess.

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 the description covers scope, async timing, and the duplicate-posting case. It leaves the destructiveHint annotation unexplained, which is the one gap an agent might care about before calling it.

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% for the single parameter, so the baseline is 3. The description adds a small but meaningful constraint ('public' URL), yet no format or validation detail beyond what the schema already declares.

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 gives a specific verb (fetches/imports) and resource (a public job-posting URL into a private role in the pipeline), so an agent knows exactly what happens. It stops short of distinguishing itself from close siblings like add_jobs or save_job, leaving the agent to infer which one applies.

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: the tool is for turning a URL into a pipeline role, but there is no explicit when-to-use, when-not, or named alternative. The note about postings already held by Dreamwork returning 'completed' is a behavioral fact, not routing guidance.

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

list_contactsList contactsA
Read-only
Inspect

Returns the account's saved recruiter and referrer contacts, optionally filtered by company.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNoFilter by company

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, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that results are limited to the account's saved recruiter/referrer contacts and that filtering is optional, but says nothing about ordering, pagination, or result size, which matter for a list tool.

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?

A single front-loaded sentence that states the resource, its scope, and the optional filter, with no filler. Appropriately sized for a one-parameter read tool.

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?

There is no output schema, but for a simple filtered-list read tool whose safety semantics are already in annotations, the description covers what the agent needs before calling. It would be slightly stronger with a note on result ordering or volume, which is the only real 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 description coverage is 100% and there is only one optional parameter, so the schema fully documents 'company'. The description's 'optionally filtered by company' merely restates that; 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 (returns/lists) and resource (the account's saved recruiter and referrer contacts), and the 'recruiter and referrer' qualifier narrows scope beyond a generic contacts list. It does not explicitly name the sibling add_contact, but the read/write distinction is obvious from the names, so clarity is high.

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 — the description tells you the tool lists saved contacts with an optional company filter, but gives no when-to-use guidance, no prerequisites, and no explicit pointer to the complement (e.g. add_contact for creating contacts). Minimum viable.

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

list_dismissed_matchesList dismissed matchesA
Read-only
Inspect

Returns the account's dismissed listings, newest first, with listing id, title, company, Dreamwork page url, dismissal time and whether the listing is still active. total counts all dismissed listings. limit defaults to 20 and accepts up to 50; nextOffset continues the list and null ends it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, 20 when omitted.
offsetNo`nextOffset` from the previous page; 0 when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
matchesYes
nextOffsetYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds useful behavioral details beyond that: results are newest first, total counts all dismissals, limit caps at 50, and pagination ends when nextOffset is null. It does not discuss auth or rate limits, but those are less critical for a read-only list.

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?

The description is front-loaded with purpose in the first sentence, then compactly covers total count, page size limits, and pagination continuation. Every sentence earns its place with no redundant filler.

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?

The tool is a read-only list with an output schema and fully described parameters. The description supplies the ordering, total-count semantics, and pagination behavior, which is sufficient for an agent to call it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description still adds meaning by clarifying that 'nextOffset continues the list and null ends it,' which helps an agent understand pagination termination beyond the schema's offset 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?

The description names the specific verb (Returns) and resource (account's dismissed listings), and the word 'dismissed' distinguishes it from the sibling list_matches. It also immediately states the ordering and returned fields, so an agent can tell what the tool does without opening the schema.

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 purpose: retrieve dismissed listings. However, the description does not explicitly say when to choose this over list_matches, dismiss_match, or restore_match, nor does it provide exclusions or alternative-routing guidance.

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

list_interviewsList interviewsA
Read-only
Inspect

Returns all interviews detected for the account, including role, company, time and platform when known. No role filter is applied.

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the useful 'when known' caveat about partial data and the field list, but says nothing about ordering, pagination or result size, so it adds only modest 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.

Conciseness4/5

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

Two tight sentences with the core purpose front-loaded and the scope caveat last. The 'No role filter is applied' clause is slightly awkward given the tool accepts no parameters at all, but the text is otherwise waste-free.

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 parameterless read-only list tool whose annotations cover safety, the description substitutes for the absent output schema by naming the fields returned. Ordering and pagination behavior remain unstated, which is a minor gap rather than a blocking one.

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 the baseline is 4. There is nothing for the description to disambiguate beyond confirming that no role filter is available.

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 all interviews detected for the account') and enumerates the fields returned (role, company, time, platform). There is no interview-specific sibling in the tool list, so no sibling routing is needed, but the description never explicitly frames itself against the list_* family.

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: you call it to see interviews. The clause 'No role filter is applied' is a scope caveat that hints at a filtered alternative but names none and states no when-to-use/when-not conditions.

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

list_matchesList matchesA
Read-only
Inspect

Returns the account's ranked live match pool with job id, its Dreamwork page url, title, company, location, remote terms, salary, dates, match percent and saved/applied state. Filters narrow that pool; nextCursor continues a page with identical filters, and null ends the walk. A page holds 10 jobs by default and limit accepts up to 50; the next page is the previous nextCursor, which keeps the page size it was issued with. addedAfter supports overlapping discovery windows because listings can become servable after first discovery. notes describe applied filters and coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOrder; relevance when omitted.
bonusNo
limitNoPage size, 10 when omitted. A cursor keeps the size it was issued with.
queryNoFree-text search across the person's match pool.
aiRoleNoAI roles only.
cursorNo`nextCursor` from the previous page. Send the same filters and sort, or it is refused.
equityNo
functionNoJob-function labels, comma-separated for a union, e.g. "Engineering,Product". An unknown label is refused with the list.
industryNoEmployer industry, e.g. "Pharma & Biotech". An unknown name is refused with the list.
locationNoCity, region, or country; a place the gazetteer cannot resolve is refused.
maxSalaryNoPay ceiling in whole annual USD.
minSalaryNoPay floor in whole annual USD, e.g. 200000. Jobs with no posted pay drop out.
seniorityNoSeniority labels, comma-separated for a union: Junior, Mid-Level, Senior, Staff+, Director+. A hard filter: pass it when the person names a level they want only, because the stored level ranks matches but never removes other levels. It also drops roles whose level was never classified.
addedAfterNoOnly jobs Dreamwork first saw after this ISO date-time.
healthcareNo
internshipNoInternships, co-ops, and apprenticeships only.
remoteOnlyNoShorthand for workSettings ["remote"].
workSettingsNoWork settings to keep, as a union; an unstated setting counts as onsite.
minMatchPercentNoLowest match percent to keep, on the 40-97 scale shown.
postedWithinDaysNoEmployer posting date within this many days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobsYes
notesYes
totalYesJobs these filters keep, across all pages. Following every nextCursor returns this many while poolChanged stays false.
poolSizeYesJobs a walk of this pool returns before this call's filters narrow it, so it equals total when no filter is set. Dismissed and saved roles, excluded companies and same-company same-title duplicates are already left out, and so are onsite roles outside the area of someone who will not relocate, unless location or workSettings is set. query, functions and location also choose which pool is built.
nextCursorYes
poolStatusYes
poolChangedYes
appliedFiltersYes
filteredToEmptyYesTrue when this call's filters left none of the poolSize jobs. total 0 with this false means the pool itself is empty or still building.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive/closed-world, so the bar is lower. The description adds real behavior: default page size of 10, a 50 cap, cursors preserving their issued page size, and notes describing applied filters and coverage. It stops short of stating failure modes beyond cursor/filter mismatch.

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 return payload, then pagination, then edge-case rationale. Dense but mostly earns its place; nextCursor is explained twice (once for continuation, once for page-size retention), a slight 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 re-explained, yet the description covers pagination, filter narrowing, and notes semantics adequately for a 20-parameter list tool. Filter-interaction details (e.g. how filters combine) remain slightly thin.

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 high (85%), so the per-parameter docs already do the heavy lifting. The description adds cross-parameter semantics (cursor must reuse identical filters/sort, cursor keeps issued page size), but largely restates what limit and addedAfter already document.

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 the account's ranked live match pool, and enumerates returned fields (job id, company, salary, match percent, saved/applied state). The word 'live' implicitly scopes it apart from list_dismissed_matches, 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?

Explains pagination usage (nextCursor continues a page, null ends the walk) and the addedAfter overlap rationale, but gives no guidance on when to choose this over browse_listings, get_listing, or list_dismissed_matches. Usage is implied rather than stated.

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

list_tasksList what the assistant has done recentlyA
Read-only
Inspect

Returns recent account-owned assistant actions, newest first, across the site and MCP. status filters ongoing, completed or failed work; limit bounds the result. The ledger records actions rather than conversation text.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
tasksYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely non-structured context: results are newest-first, scoped to account-owned actions from both the site and MCP, and the ledger stores action records rather than conversation text. Pagination and the default page size are not addressed.

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 tight sentences: purpose and ordering first, then the two parameters, then a clarifying note about what the ledger contains. No filler, though the mid-sentence parameter enumeration makes the middle clause slightly denser than needed.

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 the low-complexity two-parameter surface keeps the bar modest. However, the description leaves the status enum largely undocumented and gives no sibling differentiation, which are the two gaps an agent would most likely hit.

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 0%, so the description must carry the burden and it only partially does: it says status filters ongoing/completed/failed work and limit bounds the result. The enum actually has seven values including queued, verifying, cancelled, and undone, and the description never mentions the default of 20 or the maximum of 50.

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 ('Returns recent account-owned assistant actions') plus ordering ('newest first') and scope ('across the site and MCP'). It does not distinguish itself from sibling tools like get_task or get_updates_since, so an agent cannot route between them from this text alone.

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: 'recent account-owned assistant actions' tells an agent this is an activity-listing call, and the mention of filtering by status/limit hints at the use case. There is no explicit when-to-use or when-not, and no pointer to the adjacent get_task, get_updates_since, or undo_last tools.

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

mark_applied_offsiteRecord an application made elsewhereA
Destructive
Inspect

Records an application the account holder submitted outside Dreamwork. Exactly one of matchId, listingId or url names the role; a role not yet in the pipeline is added in Applied without generating materials, and an unlisted URL is imported in the background. appliedAt (YYYY-MM-DD or ISO 8601, not in the future) is the reported application date and defaults to now; repeating the call with a new appliedAt corrects it. attestation:true is required and represents the person's confirmation that submission occurred. Recorded roles are excluded from matches and Autopilot. Applications Dreamwork is still sending are refused. There is no undo. This call does not send an application.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe job posting's URL, for a role Dreamwork does not list.
matchIdNoBoard card id from `get_pipeline`.
appliedAtNoWhen they applied, as YYYY-MM-DD or an ISO 8601 timestamp. Not in the future. Omitted means now.
listingIdNoDreamwork listing id, from `list_matches` or `get_job`. The role does not have to be saved.
attestationYesThe person stated they applied to this role themselves. Never assumed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructive=true and openWorld=true, and the description substantiates both with non-obvious side effects: 'There is no undo,' 'Recorded roles are excluded from matches and Autopilot,' background URL import, and refusal of in-flight applications. This is materially more than the annotations convey.

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?

Effectively front-loaded: role identification, then date/idempotency, then attestation, then side effects and constraints. It is dense and slightly run-on in the middle clauses, but nearly every sentence carries a distinct operational fact.

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?

With an output schema present, return values need not be described, and the description instead covers everything an agent must know before writing: the exclusivity of the three identifying params, the required attestation, the mutation's irreversibility, and its effect on matches/Autopilot.

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, but the description adds genuine constraints absent from the schema: 'Exactly one of matchId, listingId or url names the role' (a mutual-exclusivity rule the schema does not enforce), appliedAt defaulting and future-date prohibition, and the meaning of attestation. This is real added value over structured fields.

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 ('Records an application the account holder submitted outside Dreamwork') and immediately scopes it against the sibling `apply` with 'This call does not send an application.' An agent can distinguish this from `apply`, `import_job`, and `add_jobs` 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 Guidelines5/5

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

Explicitly defines the trigger condition (application submitted elsewhere) and the inverse case ('Applications Dreamwork is still sending are refused'). It also names the correction path ('repeating the call with a new appliedAt corrects it'), so the agent knows both when to call and when to re-call.

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

mark_messages_readMark recruiter messages readA
Destructive
Inspect

Marks the specified recruiter messages read within one thread. Message ids identify the exact messages presented to the account holder; other messages remain unread. The change has no undo.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYesThe thread the messages were shown from, as `get_inbox` gave it.
messageIdsYesIds of the messages the person was shown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation is flagged. The description adds the crucial detail that 'the change has no undo' (irreversibility) and that only the listed messages are affected, which goes beyond what the annotations convey.

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 scope, then the effect, then the irreversibility warning. Every sentence carries distinct information with no repetition of the name or schema.

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 no explanation, and annotations cover the safety profile. For a two-parameter mutation tool, the description supplies scope, effect on other messages, and irreversibility — everything needed to call it 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 100%, so the baseline is 3. The description nevertheless adds meaning by explaining what messageIds represent ('the exact messages presented to the account holder') and constraining threadId to a single thread, clarifying the intended values beyond the schema text.

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 (marks read) and resource (recruiter messages) with an explicit scope boundary ('within one thread'). The clause 'other messages remain unread' pins down exactly what is and isn't affected, which separates it cleanly from siblings like get_inbox and get_unread_reminders.

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: the reference to 'messages presented to the account holder' and the schema note 'as get_inbox gave it' suggest this follows a get_inbox call. There is no explicit when-to-use statement, no prerequisites, and no named alternative, though no sibling competes for this action.

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

move_pipelineMove a pipeline cardA
Destructive
Inspect

Moves one role's board card to the requested column using the account holder's reported state. No employer is contacted. APPLIED records an application rather than submitting one; INTERVIEWING creates a durable interview record. WITHDRAWN removes the card from the active board. Closing a role can remove its listing from the feed. A receipt offers undo only when reversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYes
matchIdYesBoard card id from `get_pipeline`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: it discloses side effects per status (INTERVIEWING creates a durable interview record, WITHDRAWN removes the card, closing a role removes its listing from the feed), confirms no employer contact, and explains that undo is only offered when reversible. This goes well past the destructiveHint/openWorldHint flags.

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 core action, then layers the status semantics in tight clauses with no filler. Slightly list-like and dense, but every sentence carries signal.

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 the safety profile and an output schema covering return values, the description focuses correctly on behavioral meaning. It is nearly complete, missing only full coverage of the remaining enum statuses.

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 50% (matchId documented, status enum undocumented), and the description compensates by explaining the semantics of several enum values (APPLIED, INTERVIEWING, WITHDRAWN). It leaves other enum values (SAVED, CONFIRMED, OFFER_RECEIVED, ACCEPTED, REJECTED, NO_RESPONSE) unexplained, so it adds meaning but not completely.

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 (moves) and resource (a role's board card to the requested column), and explicitly distinguishes the operation from submitting an application ('APPLIED records an application rather than submitting one'). An agent can separate this from apply/mark_applied_offsite without opening their schemas.

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?

Clarifies the intent boundary ('No employer is contacted'; APPLIED records rather than submits), which tells the agent when this is the right tool versus an actual apply flow. It stops short of naming sibling alternatives or explicit exclusions, so it is clear context rather than full routing guidance.

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

parse_preferences_textSet several preferences from one sentenceB
Destructive
Inspect

Parses a sentence describing job preferences, applies supported fields and returns applied values and unparsed fragments. Compensation and seniority are not set by this parser and remain unparsed.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe person's sentence, verbatim.

Output Schema

ParametersJSON Schema
NameRequiredDescription
appliedYes
unparsedYesFragments no preference key could carry.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already flag this as a mutating, destructive, closed-world operation. The description usefully adds that unmatched fragments are returned rather than silently dropped and that compensation/seniority are untouched, but it never warns that applying fields may overwrite existing preference values — the key behavior implied by destructiveHint=true.

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 compact sentences, front-loaded with the action and followed by the exclusion rule. Every clause carries information; 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.

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 describing return values is a bonus rather than a necessity. For a destructive mutation, however, the description leaves the overwrite semantics of existing preferences unstated, which is the most consequential detail an agent needs before invoking it.

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?

Only one parameter and schema coverage is 100%, so the schema already fully documents the input. The description adds nothing about format, length limits, or expected phrasing beyond what the schema states, which is the baseline case.

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 (parses) and resource (a sentence describing job preferences) plus the side effect (applies supported fields) and the response shape (applied values plus unparsed fragments). It is clearly distinct from update_preferences, though it never names that sibling to sharpen the distinction.

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 sentence about compensation and seniority staying unparsed is a useful boundary, effectively 'when-not' guidance for those fields. But there is no explicit statement of when to reach for this tool versus update_preferences or get_preferences, so usage is only implied.

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

prepare_applicationsPrepare applications for several rolesA
Destructive
Inspect

Saves and prepares materials for up to ten specified roles sequentially without submitting applications. Unsaved roles consume the daily save allowance; generation for saved roles consumes pack allowance. Finished or in-flight preparation is reused, and person-edited materials are preserved. Each role returns its own outcome.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetsNoSubset to write for every role. Omit for all three.
jobIdsYesListing or private-job ids, each once.

Output Schema

ParametersJSON Schema
NameRequiredDescription
receiptYes
resultsYes
allowanceYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the two distinct allowance costs (daily save allowance for unsaved roles, pack allowance for saved roles), idempotent reuse of finished/in-flight preparation, and preservation of person-edited materials. These are exactly the destructive/consumptive side effects an agent needs before committing, which the destructiveHint=true annotation alone cannot convey.

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?

Four tight sentences, front-loaded with the core action and the non-submission constraint before the allowance and reuse details. Dense but every clause carries actionable information; no filler.

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, the per-role outcome sentence is a sufficient pointer to the return shape, and the allowance/reuse rules cover the main behavioral risk. What remains unstated is failure semantics (e.g., partial batch failure handling), a minor gap for a batch mutation 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 100%, so both parameters (jobIds, assets) are already documented, including the 'omit for all three' default. The description adds only the count bound ('up to ten'), which mirrors maxItems, so it does not meaningfully extend parameter meaning.

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 ('Saves and prepares materials'), a bounded scope ('up to ten specified roles'), and a critical negative constraint ('without submitting applications') that separates it from apply. An agent can immediately tell this is a batch-preparation tool, not a submission tool.

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 'without submitting applications' clause clearly frames when this tool applies versus apply/cancel_apply, and the reuse rule tells the agent it is safe to call for already-prepared roles. It stops short of explicitly naming the alternative tool or stating when-not to use it.

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

remember_hypothesisRemember a guess about the personA
Destructive
Inspect

Stores an unconfirmed career hypothesis separately from established facts. At most twenty hypotheses may be pending; further writes are refused at that limit. The statement does not change matching preferences or become a confirmed profile fact.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe belief, in one sentence, phrased as a guess.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.5/5.0
Behavior5/5

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

With destructiveHint/readOnlyHint already declared, the description still adds genuinely new operational facts: a hard quota of twenty pending hypotheses with writes refused at the limit, and explicit non-effects (does not alter matching preferences, does not become a confirmed fact). This is exactly the kind of side-effect and capacity disclosure the annotations cannot carry.

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 core action, then the quota, then the non-effects. Every sentence carries distinct information with no repetition of the title or annotations.

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 no explanation, and the description plus annotations cover safety profile, capacity limits, and side effects. Nothing an agent needs to invoke this correctly is missing.

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?

Single parameter with 100% schema description coverage ('The belief, in one sentence, phrased as a guess'), so the schema already handles semantics. The description adds no format, length, or phrasing detail beyond it, making the baseline 3 correct.

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 ('Stores an unconfirmed career hypothesis') and immediately scopes it against confirmed material ('separately from established facts'), which implicitly separates it from the confirm_hypothesis sibling. An agent can tell what this creates without opening the 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 clear context for use (unconfirmed guesses) and a when-not ('does not ... become a confirmed profile fact'), but never names the alternative tools (confirm_hypothesis, forget_hypothesis, get_career_record) that an agent would need to route between pending and confirmed states.

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

reopen_application_materialsEdit materials for a safe retryA
DestructiveIdempotent
Inspect

Opens a new editable material revision only after the API establishes that a failed application cannot still submit. Access is restricted to the Applications rollout cohort admitted by the API.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesFailed application ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
materialsYesRevisioned, per-application material selection. Revision zero is the legacy fallback view; an Apply confirmation must persist a positive revision.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=true), but the description adds real value beyond them: the API-side precondition check and the cohort-based access restriction. It does not, however, say what happens to the prior material revision when the new editable one is opened, which matters given destructiveHint=true.

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 action and followed by the precondition and access rule. No filler, though the API/cohort phrasing is jargon-heavy and could be tightened.

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 the precondition plus access restriction are covered. The notable gap is the destructive side effect: with destructiveHint=true, an agent still lacks any statement about whether the prior revision is overwritten, preserved, or versioned.

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% and the single parameter (applicationId, UUID, 'Failed application ID') is fully documented in the schema. The description's phrase 'a failed application' loosely reinforces that constraint but adds no syntax or format detail, 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 concrete action on a concrete resource: opening a new editable material revision for a failed application. The gating condition ('only after the API establishes that a failed application cannot still submit') distinguishes it from siblings like update_application_materials or restore_material, though it never names those alternatives.

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?

Gives an implied trigger (a failed application that cannot still submit) and an access restriction to a rollout cohort, but never says explicitly when to prefer this over update_application_materials, restore_material, or replace_application_document. The agent must infer the routing.

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

replace_application_documentUse the person's own document for one applicationA
Destructive
Inspect

Replaces one application's resume or cover letter with the person's supplied text or raw-base64 PDF, DOCX, TXT or MD. The stored content is not rewritten by a model. A resume becomes the selected tailored copy; a letter becomes included. PDF resumes retain their original file, while other formats are rendered from extracted text. expectedRevision is required; locked or sent applications are refused. The account's main resume is unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNo
textNoThe whole document as the person wrote it. Send this or `file`.
documentYes
applicationIdYes
expectedRevisionYesThe `revision` from get_application_documents or get_application_materials.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations flag it as destructive and non-readonly, and the description adds substantial context beyond that: content is not model-rewritten, PDFs keep their original file while other formats are rendered from extracted text, the resume becomes the selected tailored copy, the letter becomes included, and locked/sent applications are refused. That is exactly the behavioral detail a mutation tool needs.

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?

Five dense sentences, all load-bearing, with the core action and input modes front-loaded before the storage/refusal caveats. Slightly heavy for one paragraph, but no filler.

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

Completeness5/5

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

For a destructive mutation with a nested object, 3 required params, and an output schema, the description covers concurrency (expectedRevision), refusal conditions, storage/rendering behavior, and collateral effects (main resume untouched). An agent has everything needed to invoke it safely.

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?

With only 40% schema description coverage, the description compensates well: it explains the text-vs-file choice, enumerates the accepted formats (PDF, DOCX, TXT, MD), and clarifies the document enum semantics ('a resume becomes the selected tailored copy; a letter becomes included'). It adds nothing about applicationId or filename, so it is not fully compensating.

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 (Replaces), a bounded resource (one application's resume or cover letter), and the accepted inputs. It is clearly distinguishable from sibling generators such as generate_resume or edit_cover_letter because it explicitly imports the person's own artifact rather than producing one.

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 establishes context ('with the person's supplied text') and gives explicit preconditions and exclusions: expectedRevision is required, locked or sent applications are refused, and the account's main resume is unaffected (routing away from upload_resume's effect). It never names a sibling alternative by name, so it stops short of a 5.

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

reply_to_recruiterReply to a recruiterA
Destructive
Inspect

Sends the supplied reply text to one existing recruiter conversation under the account holder's identity. Sending requires explicit consent and an unambiguous thread; otherwise the result is a confirmation hold containing the draft. Sent mail cannot be recalled. Threads whose ids begin with inbound: cannot receive replies through this endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe full reply text, as it will be sent.
threadIdYes
confirmationTokenNoEcho the token from a previous `held` result to carry out the act it described, and only after the person has seen that result's summary and agreed to it. Send identical arguments: the token is bound to the exact call it was issued for, so a changed argument is held again with a fresh token and a fresh summary. It lasts two minutes and is spent once.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, destructive=true, openWorld=true) by disclosing the confirmation-hold behavior, the fact that sent mail cannot be recalled, and the inbound: thread restriction. These are the exact traits an agent needs before attempting a send.

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 sentences, no filler, with the core action stated first and the safety constraints following in priority order (consent, thread validity, irreversibility, id exclusion).

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 no output schema, the description carries the burden of explaining the held/confirmation outcome, and it does so concisely. It stops just short of describing how a caller recovers from a hold beyond what the confirmationToken schema already says.

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 67% (threadId undocumented in the schema), and the description compensates by constraining threadId to an existing thread whose id does not start with inbound:. The confirmationToken flow is already well described in the schema, so the description adds targeted value rather than restating.

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 (sends), resource (reply text to one existing recruiter conversation), and the acting identity. It is clearly distinct from siblings such as generate_outreach or add_contact, and the scope 'one existing recruiter conversation' 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 Guidelines4/5

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

Gives real preconditions: explicit consent and an unambiguous thread, plus an explicit exclusion (threads whose ids begin with inbound: cannot receive replies here). It does not name a sibling alternative for the inbound case, so it stops short of full when/when-not routing.

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

restore_matchRestore a dismissed matchA
Destructive
Inspect

Reverses a dismissal of one listing so it can return to the account's match feed, job alerts and Autopilot. Restoring a listing that is not dismissed returns a no-op receipt. Restoring does not save the listing. A closed listing stays out of the feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesListing id, as `dismiss_match` and `list_dismissed_matches` give it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context the annotations lack: no-op on a non-dismissed listing, no saving side effect, and a closed listing remaining out of the feed.

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?

Four short sentences, front-loaded with the primary effect and then the edge cases. Each sentence carries distinct information, though the no-op and not-saved sentences could be tightened.

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 the return contract needn't be spelled out, and the description still covers the notable return case (no-op receipt). For a single-param mutation tool this is near-complete; only an explicit link to dismiss_match as the inverse is missing.

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?

Only one parameter and schema description coverage is 100%, with the schema itself pointing to dismiss_match and list_dismissed_matches as id sources. Baseline 3 applies; the description adds nothing about the id format.

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?

Specific verb+resource ('reverses a dismissal of one listing') with the exact downstream effects named (match feed, job alerts, Autopilot). It is unmistakably distinct from dismiss_match and list_dismissed_matches.

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?

States the condition of applicability (the listing must be dismissed) and what happens to the wrong input (no-op receipt). It also contrasts with save_job via 'Restoring does not save the listing.' It does not explicitly name the sibling to use for the inverse action (dismiss_match), so it falls just short of a full routing statement.

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

restore_materialPut a document back the way it wasA
Destructive
Inspect

Restores a cover letter, tailored resume or answer to a recorded pre-edit version within its undo window. Arguments must match the recorded edit; arbitrary replacement text is refused. Resume restoration uses resumeRevisionId and restores the application's sendable copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoThe text that stood before the edit, from its receipt. Required for `coverLetter` and `answers`; a resume restore names a revision instead.
assetYesWhich asset the edit changed.
questionNoThe answer's question text; required for `answers`.
applicationIdYes
resumeRevisionIdNoThe tailored-resume revision to put back, from the `edit_resume` receipt. Required for `resume`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds genuine context beyond that: the undo-window time limit, the requirement that arguments match the recorded edit (arbitrary replacement is refused), and that a resume restore reinstates the application's sendable copy. It stops short of stating what happens on an expired window or a non-matching argument.

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 front-loaded sentences: purpose first, then behavioral constraint, then the resume-specific parameter note. No filler, though the third sentence is narrowly scoped and slightly scattered within an otherwise tight block.

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 the return values need no explanation, and annotations carry the destructive profile. Combined with the undo-window and argument-matching details, an agent has enough to call it correctly, though the asset-to-parameter mapping for each enum branch is only partially spelled out.

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 80%, so the schema already documents text, asset, question and resumeRevisionId. The description only adds the resume-specific note (resumeRevisionId restores the sendable copy) and leaves applicationId undescribed in both places, so the baseline 3 is appropriate.

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 ('Restores') and resource set (cover letter, tailored resume, answer) scoped to 'a recorded pre-edit version within its undo window.' This is clearly the undo counterpart to edit_resume/edit_cover_letter/edit_answer, but the description never names a sibling, so differentiation is inferred from the verb rather than stated.

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 'within its undo window' clause and the argument-matching constraint imply when the tool is applicable (immediately after an edit you want to revert), but there is no explicit when-to-use/when-not guidance and no routing against potentially confusable siblings like undo_last or restore_match.

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

save_application_answersSave the person's application answersA
Destructive
Inspect

Saves person-stated application-answer and contact groups through onboarding validation, then rechecks readiness and completes setup when no requirements remain. statedByPerson:true attests that supplied values came from the person. eligibility.countries replaces the stored list. An empty answer set can finish otherwise-complete onboarding. Returns ready and stillMissing; no application is sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
answersNo
contactNo
statedByPersonYesThe person gave every value here in this conversation. Never assumed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
readyYes
receiptYes
stillMissingYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true/readOnly=false, and the description meaningfully extends them: it explains the replace-vs-merge semantics, that an empty answer set can finish onboarding, that readiness is rechecked, and critically that no application is sent. That last point usefully bounds the blast radius of a destructive-classified 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?

Dense and front-loaded – the core action leads, followed by flag semantics, replacement behavior, the empty-set edge case, and the return contract. No filler sentences, though the single unbroken paragraph is dense to parse.

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 destructive, deeply nested, 3-param tool with an output schema, the description covers the operation's scope, side-effect boundary, edge case, and return fields (ready/stillMissing) without re-explaining the schema. Only the contact-group parameter semantics remain unaddressed.

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 only 33%, so the description must carry load. It does add the literal meaning of the required statedByPerson:true flag and the replace semantics of eligibility.countries, but says nothing about the contact group fields or how the nested answer groups are validated. Partial compensation, not full.

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 ('Saves person-stated application-answer and contact groups') and describes the downstream effect (validation, readiness recheck, setup completion). It is distinguishable from siblings like edit_answer and update_profile, though it never names an alternative to route against.

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: the reader infers this is the write path for onboarding answers and that an empty set is legal, but there is no explicit when-to-use versus edit_answer or update_profile, and no stated prerequisites or exclusions.

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

save_jobSave a jobA
Destructive
Inspect

Saves one role to the account's pipeline at SAVED as a bookmark. No application is submitted or queued until apply is called. Application materials may start preparing in the background. An already saved role returns a no-op receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesListing id or private-job id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.1/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: idempotent re-saves 'return a no-op receipt' and background 'Application materials may start preparing.' The one gap is that annotations declare destructiveHint=true while the description frames the operation as a benign bookmark, and it never explains what is at risk or why the destructive flag applies.

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?

Four short sentences, each carrying distinct information (target state, no submission, background prep, idempotency) and the core action is front-loaded. Minor redundancy between 'No application is submitted or queued' and 'until apply is called,' but nothing padding.

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, the description needn't explain the returned receipt, and it covers the key behavioral facts an agent needs (bookmark semantics, deferred application, background prep, idempotency). The only omission is any note on required permissions or the source of the destructive annotation.

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% for the single jobId param (which accepts 'Listing id or private-job id'), so the schema already carries the semantics. The description adds nothing about the identifier, which is the correct baseline-3 behavior.

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 ('Saves one role to the account's pipeline at SAVED as a bookmark') and immediately distinguishes the action from apply, so the agent can tell a bookmark-save apart from an application submission without opening sibling schemas.

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?

Clearly frames the boundary against the alternative: 'No application is submitted or queued until apply is called,' which tells the agent when this tool is and isn't the right step. It doesn't enumerate other alternatives (e.g. import_job, get_pipeline), but the key branch point with apply is explicit.

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

set_autopilotTurn Autopilot on or offA
Destructive
Inspect

Sets Autopilot on or off after explicit consent. On authorizes recurring real employer submissions under the account holder's name without per-application approval. Off stops sending and keeps the minimum match, resume choice and queue; paused is accepted and means off. Daily and monthly limits remain determined by the plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateYes
confirmationTokenNoEcho the token from a previous `held` result to carry out the act it described, and only after the person has seen that result's summary and agreed to it. Send identical arguments: the token is bound to the exact call it was issued for, so a changed argument is held again with a fresh token and a fresh summary. It lasts two minutes and is spent once.

TDQS

A4.1/5.0
Behavior5/5

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

Despite destructiveHint=true already being present, the description discloses consequences the annotations cannot: turning on authorizes recurring real employer submissions under the account holder's name without per-application approval, while off stops sending but preserves minimum match, resume choice and queue. It also states the consent prerequisite and that plan limits still govern.

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 dense but front-loaded sentences: the action first, then the consequence of each state, then the invariant limits. No filler and no repetition of schema or annotation content.

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 an open-world, destructive mutation with no output schema, the description covers consent, both state outcomes and the persistence rules. The held-result/token handshake is left mostly to the schema description, so the description is nearly but not fully self-sufficient.

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 50%: the enum values are listed but undescribed, and confirmationToken carries its own rich schema text. The description compensates for the enum gap by explaining that 'paused' is accepted and semantically equals off, and it ties the operation to explicit consent, which is the token's purpose.

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 (sets) and resource (Autopilot) plus the state transition on/off, so an agent immediately knows the operation. It does not explicitly distinguish itself from the adjacent update_autopilot_settings / get_autopilot_status siblings, which is the only gap.

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?

It supplies a precondition (only after explicit consent) and accepts 'paused' as an alias for off, implying usage context. However it never names update_autopilot_settings as the alternative for non-toggle changes, so the routing decision is left to inference.

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

start_checkoutStart checkoutA
Destructive
Inspect

Returns a checkout URL for the requested plan change after explicit consent. A confirmation hold precedes checkout creation. This call does not charge the account; payment details and payment confirmation occur on the billing page.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesThe plan the person asked for.
promoCodeNoOnly when the person supplied one.
billingIntervalNoHow often to invoice, only when the person named one; omitted means monthly. Quarterly is one invoice every three months at about 15% less than three monthly ones. A promo code prices a monthly invoice, so the two cannot be combined.
confirmationTokenNoEcho the token from a previous `held` result to carry out the act it described, and only after the person has seen that result's summary and agreed to it. Send identical arguments: the token is bound to the exact call it was issued for, so a changed argument is held again with a fresh token and a fresh summary. It lasts two minutes and is spent once.

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark this as a destructive, open-world write, so the bar is lowered, yet the description still adds valuable context: it does not charge the account and payment is completed on the billing page. It also discloses the consent gate and confirmation-hold sequencing, which the annotations do not convey.

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 tight sentences, front-loaded with the return value and the consent condition, and each sentence earns its place by adding a distinct fact (URL return, hold sequence, no-charge scope).

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 mutation tool with no output schema but full annotation coverage, the description supplies the consent requirement, the hold mechanics, and the charging scope. The only real gap is sibling differentiation against get_upgrade_link.

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 all four parameters are already well documented in the schema, including the confirmationToken two-step flow. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 is appropriate.

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 a checkout URL for the requested plan change,' which is concrete and actionable. However, it does not differentiate itself from the nearby sibling get_upgrade_link, leaving the agent to infer which plan-change entry point applies.

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?

'after explicit consent' and 'A confirmation hold precedes checkout creation' give clear preconditions for calling the tool. It does not name an alternative tool or explicitly state when not to use it, so it stops short of full routing guidance.

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

strengthen_applicationStrengthen a whole applicationA
Destructive
Inspect

Improves an application's existing materials against its role and recorded career evidence, spending one refine allowance per changed asset. emphasis adding numbers, titles, employers, dates or credentials requires evidenceIds. Unsupported resume entry headers are rejected; previously completed asset edits are retained if a later asset fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
emphasisNoWhat the person wants foregrounded, when they said. Omit otherwise.
evidenceIdsNoIds of the person's work-vault documents, or of facts on them, that support a claim the emphasis adds.
applicationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
receiptYes

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true annotation: it discloses the cost model (one refine allowance per changed asset), an input precondition (evidenceIds required when emphasis adds numbers/titles/employers/dates/credentials), a rejection rule (unsupported resume entry headers), and partial-failure semantics (completed edits retained if a later asset fails). That is exactly the behavioral context an agent needs before a destructive multi-asset write.

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 dense sentences, front-loaded with the core action and cost, then preconditions, then failure behavior. No filler, though the clause 'emphasis adding numbers, titles...' is grammatically compressed and takes a second read to parse as a conditional.

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 destructive mutation with an output schema present, the description covers cost, preconditions, rejection, and failure behavior. The main gap is absent guidance on when to prefer this over the sibling editing tools, but nothing needed to call it correctly 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 67% and the description meaningfully supplements it by defining the dependency between the two optional parameters: emphasis that introduces new factual claims requires evidenceIds. It does not clarify the applicationId parameter or the maxItems/format expectations, but it adds real cross-parameter semantics.

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 ('Improves') and resource ('an application's existing materials') scoped to a role and recorded career evidence. It is distinguishable from narrow siblings like edit_resume or edit_cover_letter by operating on the whole application, though it never explicitly names which sibling it replaces.

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 context is implied through constraints (one refine allowance per changed asset, evidence needed for certain emphasis), but there is no explicit 'use this when / use X instead' guidance relative to update_application_materials, edit_resume, or generate_pack. The agent must infer the selection condition.

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

undo_lastUndo the last thing that can be undoneA
Destructive
Inspect

Reverses the latest action with an available undo, or the action identified by taskId. Sent applications, settled charges, expired undo windows and actions without a reversible outcome are refused with a reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdNoUndo this specific task instead of the most recent one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real substance: the undoable-window concept, the 'picks the latest available' default, and the enumerated refusal classes with reasons. It stops short of saying whether the reversal is itself recoverable or what the refusal response looks like, but with annotations carrying the safety profile this is solid added context.

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?

A single tight sentence with the primary behavior front-loaded and the refusal conditions appended. Every clause carries information; nothing is repeated from the title or 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?

With an output schema present, return format needn't be described, and the description covers the default selection rule and refusal classes. The remaining omission is interaction with the narrower restore/reopen siblings, which an agent would benefit from knowing.

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% and the taskId description already says 'instead of the most recent one,' so the description's mention of taskId adds little new detail. Baseline 3 applies; the description neither documents format nor failure behavior for an invalid taskId.

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 ('Reverses the latest action') plus the optional targeting mode via taskId. No sibling tool performs undo, so an agent can immediately place it as the general reversal primitive versus narrowly-scoped siblings like restore_match or restore_material.

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 explicit when-not conditions: sent applications, settled charges, expired undo windows, and non-reversible actions are refused. It clearly explains the default (latest undoable action) versus targeted use. It does not point at narrower restore/reopen siblings when those would be the more specific route, which is the only gap.

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

update_application_materialsUpdate application materialsA
Destructive
Inspect

Updates an application's resume selection, resume or cover-letter contents or inclusion at the expected optimistic revision. Access is restricted to the Applications rollout cohort admitted by the API. Locked or conflicting revisions are refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
resumeHtmlNo
coverLetterNo
applicationIdYesApplication ID
resumeVariantNo
expectedRevisionYes
coverLetterIncludedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
materialsYesRevisioned, per-application material selection. Revision zero is the legacy fallback view; an Apply confirmation must persist a positive revision.

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description goes beyond that by disclosing optimistic concurrency via expectedRevision, an access-cohort restriction, and refusal of locked or conflicting revisions. It stops short of saying what the destructive write actually overwrites (e.g. that supplied fields replace existing contents) or whether omitted fields are preserved.

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 sentences, no filler, and the core action and its scope are front-loaded before the access and concurrency caveats. Every clause carries distinct information.

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 the description covers mutation semantics, concurrency control, and access gating for a 6-parameter destructive write. The remaining gap is whether this is a full or partial update and what happens to unspecified fields, which matters given destructiveHint=true.

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

Parameters4/5

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

Schema description coverage is only 17%, so the description must carry the load, and it does map most parameters to concepts: 'resume selection' (resumeVariant), 'resume or cover-letter contents' (resumeHtml, coverLetter), 'inclusion' (coverLetterIncluded), and 'expected optimistic revision' (expectedRevision), with applicationId implied by 'an application's'. It does not explain field formats, partial-update semantics for omitted fields, or how resumeVariant interacts with resumeHtml.

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 (updates) and enumerates the resource scope precisely: resume selection, resume contents, cover-letter contents, and cover-letter inclusion. It distinguishes this application-scoped material update from sibling resume/cover-letter editors such as edit_resume and edit_cover_letter by anchoring everything to 'an application', though it never explicitly names those siblings as alternatives.

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?

It states a real prerequisite (access restricted to the Applications rollout cohort admitted by the API) and a failure condition (locked or conflicting revisions are refused), which is useful context for deciding whether the call can succeed. However, it gives no guidance on when to use this tool versus edit_resume, edit_cover_letter, replace_application_document, or restore_material, leaving the agent to infer routing from tool names alone.

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

update_autopilot_settingsChange Autopilot settingsA
Destructive
Inspect

Changes the minimum Matches score from 70 to 97, with null restoring 70, or the default-versus-tailored resume choice. Explicit consent is required. Changes apply to waiting applications and are rechecked before submission. This does not enable or resume Autopilot, recall sent applications or retry stopped applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
scoreFloorNo
resumeVariantNo
confirmationTokenNoEcho the token from a previous `held` result to carry out the act it described, and only after the person has seen that result's summary and agreed to it. Send identical arguments: the token is bound to the exact call it was issued for, so a changed argument is held again with a fresh token and a fresh summary. It lasts two minutes and is spent once.

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 readOnlyHint=false, but the description adds real context beyond them: consent is mandatory, changes affect waiting applications, and those changes are rechecked before submission. It does not describe reversibility or what a held/confirmed result looks like, but the confirmationToken schema covers the consent flow.

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

Conciseness3/5

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

Front-loads the effect and exclusions compactly, but the opening sentence is a run-on whose 'or' makes it read as if only one setting is changed, muddying the two-parameter effect.

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 mutation tool with no output schema and partial parameter documentation, the description covers consent, scope of application, recheck behavior, and non-goals. Only the consent token lifecycle is left to the schema, which documents it fully.

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?

With only 33% schema coverage, the description compensates well: it explains null restores the floor to 70, the valid range 70-97, and the default-versus-tailored choice matching the enum. Only the confirmationToken semantics rely entirely on the schema.

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 (changes) and the exact resources affected: the minimum Matches score (70-97) and the resume variant. Distinguishes itself from siblings like get_autopilot_settings and set_autopilot through explicit exclusions, though the first sentence is slightly garbled by the 'or' construction.

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 when-not guidance ('does not enable or resume Autopilot, recall sent applications or retry stopped applications') and a prerequisite ('Explicit consent is required'). It stops short of naming set_autopilot as the tool to use for enabling, so routing is implied rather than explicit.

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

update_communication_preferencesChange email preferencesA
Destructive
Inspect

Changes the supplied optional email categories while preserving omitted settings. allOptionalEmailsOff:true must be supplied alone; conflicting category settings are refused. Disabling Autopilot result mail does not stop applications. Account, security, billing and essential employer mail are unaffected.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobAlertsNo
productUpdatesNo
autopilotResultsNo
allOptionalEmailsOffNoTurn every optional email off. Send it on its own.

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=true; the description goes further by disclosing that omitted settings are preserved, that conflicting category settings are refused, that disabling autopilot mail does not stop applications, and which mail categories are unaffected. It stops short of describing reversibility of disabled preferences or the response shape, but adds substantial value over 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.

Conciseness4/5

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

Four tightly packed sentences that each carry a distinct rule, with the core update behavior front-loaded. No filler, though the density makes it slightly list-like rather than flowing.

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 the description covers the key mutation semantics, validation constraints, and side-effect nuances for a 4-parameter tool at 25% schema coverage. The main omission is explicit routing against the sibling preference-update 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?

With only 25% schema coverage the description must compensate, and it does add meaning for allOptionalEmailsOff (must be supplied alone) and autopilotResults (does not stop applications). However it doesn't clarify jobAlerts or productUpdates semantics beyond the schema's enums, leaving half the parameters thinly covered.

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 ('Changes') and resource ('supplied optional email categories') with the partial-update scope made explicit. It is clearly distinguishable from the read-only get_communication_preferences sibling, though it never names the update_preferences neighbor, so sibling routing is only implied.

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?

Provides operational rules (allOptionalEmailsOff must be sent alone, conflicts are refused) but no explicit when-to-use-this-vs-alternative guidance and no mention of the closely related update_preferences tool. Usage context is implied by the partial-update semantics rather than stated.

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

update_preferencesUpdate job preferencesA
Destructive
Inspect

Merges the supplied preference fields into the account's stored preferences and refreshes matching. compensation.kind is open or minimum; minimum requires minimumAmount, an ISO-4217 currency and an hour or year period. seniorities accepts one override level; an empty list restores resume-derived seniority. excludedCompanies, excludedPlaces and excludedSeniorities replace the lists of companies, places and levels hidden from matches, alerts and Autopilot; an excludedPlaces name that cannot be placed refuses the write. Autopilot never applies below the pay floor or outside the accepted work modes. Work modes and relocation are stored together, with omitted values preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
undoYes
cancelYes
objectYes
sourceYes
statusYes
taskIdYes
webUrlYes
handoffYes
summaryYes
actionIdYes
createdAtYes
revisionAfterYes
revisionBeforeYes

TDQS

A3.9/5.0
Behavior4/5

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

Adds substantive behavioral context beyond the annotations: the merge semantics of the top-level patch versus the REPLACE semantics of exclusion lists, the refusal-on-unplaceable-place behavior, and the Autopilot constraints. The annotations already declare destructiveHint=true and openWorldHint=false; the description explains what destruction looks like (full list replacement) and what refusals occur, which is genuinely valuable. It doesn't disclose auth/permission requirements, but for a settings tool that's less critical.

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

Conciseness3/5

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

Front-loaded with the operation semantics, which is good. However, the description runs long (over 100 words) and stitches together several independent concepts (compensation, seniorities, exclusions, Autopilot, work modes) in a dense paragraph. It's information-dense but reads more like a compressed field-by-field manual than a crisp tool description.

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?

Given the complexity (nested patch with 12+ fields, no explicit output schema shown plumbing, destructive write), the description covers the highest-risk behavioral details (list replacement, write refusal, Autopilot effects). It omits some fields (availability, coverLettersEnabled, preferredLocations, dealBreakers), but the schema's nested object descriptions fill most of those. An agent could call this correctly with the combined description + schema.

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

Parameters4/5

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

Schema description coverage is reported as 0% (likely a measurement artifact given the rich per-property descriptions) and parameter count is 1 (the wrapper 'patch'). The description compensates strongly for the shallow structured surface by naming and explaining the key patch fields (compensation.kind, seniorities, excludedCompanies/Places/Seniorities). Some fields like availability, dealBreakers, aiRoleInterest, coverLettersEnabled, preferredLocations, willingToRelocate are not mentioned. This is solid parameter coverage but not exhaustive.

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 first clause states a specific verb and resource: 'Merges the supplied preference fields into the account's stored preferences and refreshes matching.' This clearly distinguishes it from siblings like get_preferences (read) and parse_preferences_text (parsing free text). It's clear but doesn't explicitly differentiate from update_communication_preferences or update_autopilot_settings, which is a minor sibling-differentiation gap.

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?

Strong embedded conditionality: e.g. 'To keep roles at other levels out of matches and Autopilot, use excludedSeniorities', 'When a deal-breaker names one of those, offer to set the key instead.' However, it doesn't explicitly route from get_preferences first (the schema's nested field descriptions do carry this 'include the current ones from get_preferences' instruction, so the description could be clearer on the merge-then-replace interaction).

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

update_profileUpdate profileA
DestructiveIdempotent
Inspect

Updates profile text fields such as name, email, phone and tone. Identity-bound changes require profileIdentityVersion matching the current profile snapshot. This endpoint does not upload a resume file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
emailNo
phoneNo
tonePreferencesNo
coverLettersEnabledNoWhether generated application packs include a cover letter. false turns cover letters off; Autopilot then skips jobs that require one.
expectedProfileIdentityVersionNoExact profileIdentityVersion from the prior get_profile snapshot used to prepare identity-bound changes; omit for a tone-only update.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the write/destructive/idempotent profile, so credit goes to what the description adds: an optimistic-concurrency requirement tying identity-bound edits to a snapshot version. It does not explain what happens on a version mismatch or whether omitted fields are cleared, leaving the destructiveHint partly unexplained.

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 core action, followed by the key precondition and a boundary exclusion. No filler and every sentence carries information.

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 zero-required-parameter mutation with no output schema, the description covers scope, the version precondition, and one boundary case. It stops short of stating whether updates are partial or full replacements, which matters for a tool flagged destructive.

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 33%, and the description compensates by naming the undescribed fields (name, email, phone, tone). The version requirement is also stated in prose, reinforcing the schema's expectedProfileIdentityVersion description, though coverLettersEnabled is never acknowledged.

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 and enumerates the responsible fields (name, email, phone, tone), which is more specific than the title 'Update profile'. It partially differentiates from siblings by ruling out resume upload, but does not distinguish itself from update_preferences or update_communication_preferences.

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 a clear precondition: identity-bound changes require a profileIdentityVersion matching the current snapshot, which implicitly directs the agent to get_profile first. It also provides an explicit exclusion ('does not upload a resume file'), though it never names the alternative tool (upload_resume) for that case.

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

upload_resumeUpload resumeA
DestructiveIdempotent
Inspect

Uploads original resume-file bytes encoded as base64 with PDF, DOCX, TXT, MD, PNG, JPG, JPEG or WEBP format and the current profileIdentityVersion. The server parses text, performs image OCR and generates PDF output. This replaces the account's main resume; stale identity versions are refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYesFile format
contentYesBase64-encoded file content. Send the raw file bytes, not converted text.
filenameNoOriginal filename
expectedProfileIdentityVersionNoExact profileIdentityVersion from the prior get_profile snapshot used to choose this resume.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true, and the description adds meaningful context beyond them: the server parses text, performs OCR, generates PDF output, replaces the main resume, and refuses stale identity versions. That is substantive behavioral disclosure 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.

Conciseness5/5

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

Three sentences, front-loaded with the action and encoding, followed by processing behavior and the replacement/staleness constraint. No filler; every sentence carries information.

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 no output schema, the description still covers the processing pipeline and the replacement semantics, which is what an agent needs to call this safely. It could note auth/permission expectations or that OCR output may be lossy, but the core is complete.

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 content (base64), format enum, filename, and the identity-version parameter. The description restates the format list and references the current profileIdentityVersion but adds no syntax or constraints beyond the schema; 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 ('Uploads') and resource ('original resume-file bytes') plus the encoding and format scope. It distinguishes itself from generation tools by emphasizing 'original' bytes and 'replaces the account's main resume', though it does not explicitly name siblings like edit_resume or generate_resume.

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?

'This replaces the account's main resume' implies scope and that this is not for generated/edited resumes, but there is no explicit when-to-use vs the several sibling resume tools (edit_resume, format_resume, generate_resume). Usage is inferable rather than stated.

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. 69 tool updatesv0.1.0
    • First observedadd_contact
    • First observedadd_jobs
    • First observedapply
    • First observedbrowse_listings
    • First observedcancel_apply
    • First observedconfirm_hypothesis
    • First observeddismiss_match
    • First observededit_answer
    • First observededit_cover_letter
    • First observededit_resume
    • First observedforget_hypothesis
    • First observedformat_resume
    • First observedgenerate_outreach
    • First observedgenerate_pack
    • First observedgenerate_resume
    • First observedget_application_documents
    • First observedget_application_materials
    • First observedget_application_readiness
    • First observedget_application_status
    • First observedget_autopilot_settings
    • First observedget_autopilot_status
    • First observedget_career_record
    • First observedget_communication_preferences
    • First observedget_generated_resumes
    • First observedget_inbox
    • First observedget_job
    • First observedget_listing
    • First observedget_pack_status
    • First observedget_pipeline
    • First observedget_platform_context
    • First observedget_preferences
    • First observedget_profile
    • First observedget_resume_download_link
    • First observedget_resume_work_history
    • First observedget_stats
    • First observedget_task
    • First observedget_unread_reminders
    • First observedget_updates_since
    • First observedget_upgrade_link
    • First observedget_usage
    • First observedimport_job
    • First observedlist_contacts
    • First observedlist_dismissed_matches
    • First observedlist_interviews
    • First observedlist_matches
    • First observedlist_tasks
    • First observedmark_applied_offsite
    • First observedmark_messages_read
    • First observedmove_pipeline
    • First observedparse_preferences_text
    • First observedprepare_applications
    • First observedremember_hypothesis
    • First observedreopen_application_materials
    • First observedreplace_application_document
    • First observedreply_to_recruiter
    • First observedrestore_match
    • First observedrestore_material
    • First observedsave_application_answers
    • First observedsave_job
    • First observedset_autopilot
    • First observedstart_checkout
    • First observedstrengthen_application
    • First observedundo_last
    • First observedupdate_application_materials
    • First observedupdate_autopilot_settings
    • First observedupdate_communication_preferences
    • First observedupdate_preferences
    • First observedupdate_profile
    • First observedupload_resume

TDQS

B3.4/5.0

Scored across 69 tools

Disambiguation3/5

The set covers distinct lifecycle stages, but with 69 tools there are many near-overlapping operations: four listing/job retrieval tools (browse_listings, list_matches, get_listing, get_job), multiple material-generation and editing tools (generate_pack, prepare_applications, generate_resume, generate_outreach, edit_*), and several application-recording tools (apply, mark_applied_offsite, save_job, move_pipeline). The descriptions are unusually detailed and often clarify boundaries, which prevents a lower score, but an agent must read carefully to avoid misselection.

Naming Consistency5/5

All tool names use snake_case with a leading verb (get_, list_, update_, save_, generate_, edit_, etc.) and follow a predictable verb_noun or verb_noun_phrase pattern. Minor variations like apply, add_jobs, or mark_applied_offsite are still readable and consistent with the overall convention.

Tool Count1/5

69 tools is far beyond the 3–15 range that supports reliable tool selection, and this count falls into the extreme mismatch band (50+). While the domain is broad, the surface is overloaded with many specialized operations that could be consolidated.

Completeness4/5

The surface covers discovery, matching, pipeline, application submission, material generation/editing, profile/resume, preferences, Autopilot, inbox, tasks, billing, and undo. Gaps remain around contact management (no update/delete contact) and cold outreach (generate_outreach drafts but no send tool), which are minor but create dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    AI job search and job application tracker. Search live jobs by title, location, salary, date posted, and remote or on-site, and see each one checked on real data: pay against market rates, ghost-job signals, visa sponsorship history, and how well it matches your resume. Check how hiring software reads your resume, track applications, set follow-up reminders, and get email alerts.
    2
    21
    172 npm
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    Auto-Apply That Ends on an Interview. Job matches, applications submitted on the employer's own hiring system automatically or after your approval, employer-receipt tracking, a resume rewritten for each role, cover letters and interview prep. Hosted remote server over Streamable HTTP with OAuth 2.1.
    23
    291 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP-compatible agents to search live job postings, score resumes against specific postings, and create or update tracked applications through their pipeline.
    4
    MIT

Appeared in Searches