Skip to main content
Glama

Workopia — Job Search

Server Details

Search 6.3M+ live jobs from companies' own career pages, plus resume tailoring & cover letters.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
workopia/workopia-mcp
GitHub Stars
10
Server Listing
workopia-mcp

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 5 of 5 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clear, distinct purpose: job_tool for search/list, job_detail_tool for detail view, cover_letter_tool for generating cover letters, tailor_resume_tool for resume tailoring, and dashboard_tool for user activity. There is no functional overlap between tools.

Naming Consistency3/5

All tool names use lowercase and underscores with '_tool' suffix, but the structure is inconsistent: some are compound nouns (cover_letter_tool, tailor_resume_tool) while others are simpler (job_tool, dashboard_tool). No verb_noun pattern is followed, though names remain descriptive.

Tool Count5/5

With 5 tools, the server is tightly scoped for a job search assistant. Each tool is essential and there is no bloat or oversimplification.

Completeness4/5

The tool set covers core job search workflows: search, view details, save jobs, tailor resumes, and generate cover letters. Missing features like direct application or resume editing are out of scope or handled externally, so the surface is mostly complete.

Available Tools

5 tools
cover_letter_toolA
Destructive
Inspect

Write a cover letter for a SPECIFIC job — TWO steps. STEP 1 (default; action omitted or 'prepare'): the server returns the job's JD and the candidate's background, plus writing instructions. YOU (the model) then WRITE the cover letter (250–350 words, specific to the role, mapping the candidate's real achievements to the JD — never fabricate). STEP 2: call this tool again with action:'save', cover_letter_text:, and job_id — the server renders a PDF and saves it to the candidate's Workopia dashboard (requires sign-in). Use whenever the user asks for a cover letter for a specific job. Resolving job_id (same rules as tailor_resume_tool / job_detail_tool): pass the Job Id value from the most recent prior search/refine result VERBATIM; no placeholders like 'JOB_1' or '#1'. For STEP 1 supply ONE of job_id (preferred — server fetches the JD from Mongo) OR job_description, plus the candidate's resume via resume_text / resume_content / json_resume / user_profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOmit or 'prepare' = STEP 1 (server returns JD + background + instructions for you to write). 'save' = STEP 2 (pass cover_letter_text; server renders a PDF and saves it to the dashboard; requires sign-in).
job_idNoID of a job from a prior search/refine result. Use the **Job Id** value from the prior search result's content text VERBATIM. Server fetches full JD from Mongo.
companyNoOptional; used in the confirmation line.
job_titleNoOptional; used in the 'for <role> at <company>' confirmation line.
parametersNo
session_idNo
user_emailNoIf provided, server fetches the full Workopia profile for the cover letter header + writes the generated cover letter back to profile.applications[jobId].coverLetter.
json_resumeNoOptional JSON Resume object (basics/work/skills). Takes precedence over resume_text when both present.
resume_textNoUser's resume content (plain text or JSON Resume as string).
cover_letterNoOptional wrapper containing the same fields above (legacy shape).
user_profileNoOptional main-site profile object; used as a fallback source for summary/skills/experience and for the cover letter header (firstName, lastName, email, phone, city, country).
resume_contentNo
job_descriptionNoFull JD text when the user pastes it directly (alternative to job_id).
cover_letter_textNoSTEP 2 only: the cover letter you wrote (plain text). The server renders it to PDF and stores it on profile.applications[job_id].coverLetter.
Behavior5/5

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

Annotations set destructiveHint=true, and the description fully explains the destructive save step: 'the server renders a PDF and saves it to the candidate's Workopia dashboard (requires sign-in).' It also clarifies the read-only nature of step 1. No contradiction with annotations is present.

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

Conciseness4/5

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

The description is front-loaded with the two-step overview and is well-structured. It is somewhat lengthy but every sentence adds value—covering workflow, parameter rules, and behavioral guidelines. Could be slightly tighter, but it's still effective and not bloated.

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?

Despite having 14 parameters, no required fields, and no output schema, the description is highly complete. It covers the two-step process, parameter selection rules, sign-in requirement, and even includes model behavior instructions (never fabricate). References to sibling tools help the agent navigate related APIs.

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

Parameters5/5

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

Schema coverage is high at 79%, and the description adds significant context: it organizes parameters by step, explains the purpose of user_email, json_resume, etc., and gives precise instructions for job_id ('use the **Job Id** value from the most recent prior search/refine result VERBATIM'). This goes well beyond the schema descriptions.

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 explicitly states the tool's purpose: 'Write a cover letter for a SPECIFIC job — TWO steps.' It clearly distinguishes from sibling tools (tailor_resume_tool, job_detail_tool) by noting shared job_id rules and by focusing on cover letters, not resumes or job details.

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

Usage Guidelines5/5

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

The description tells the agent when to use the tool: 'Use whenever the user asks for a cover letter for a specific job.' It provides a detailed two-step procedure, explains when to omit or set the 'action' parameter, and gives guidance on choosing between job_id and job_description. Cross-references to sibling tools for job_id resolution further clarify usage.

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

dashboard_toolA
Read-only
Inspect

Show the signed-in user's Workopia dashboard (saved, tailored, and applied jobs + latest resume). Requires OAuth. Default action is list; optional status_filter (all | saved | tailored | applied). Use whenever the user asks to recall their Workopia activity: 'my applications', 'what jobs have I saved / applied to / tailored', 'show my dashboard', 'where did I leave off'. Returns a secure link to open the full dashboard on the web.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo
status_filterNo
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by stating 'Requires OAuth' and explaining the default action (list) and status_filter options. It also mentions returning a secure link, providing behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is very concise, with only four sentences, each serving a purpose: stating what it does, authentication requirement, default and optional filter, usage examples, and output type. No wasted words.

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 no output schema, the description covers return value (secure link), required auth (OAuth), default and optional parameters, and example use cases. This is sufficient for an agent to understand the tool's functionality and when to invoke 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?

The schema has two parameters (action, status_filter) with enums. The description mentions status_filter and its values, adding meaning beyond the schema. However, schema coverage is 0%, and the description does not explain the 'action' parameter beyond its default value, leaving some ambiguity.

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 clearly states the tool shows the user's Workopia dashboard including saved, tailored, and applied jobs plus resume. It provides specific query examples like 'my applications' and 'show my dashboard', distinguishing it from sibling tools that handle individual job details, cover letters, or resume tailoring.

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 description explicitly lists when to use the tool (e.g., 'my applications', 'what jobs have I saved') and mentions the default action and optional filter. It does not explicitly exclude use cases, but the provided examples and sibling context make the scope clear.

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

job_detail_toolA
Read-only
Inspect

Render the full job-detail card for a specific job the user asks about. Use this whenever the user references a particular job from a prior search result — by number (#1, '1', 'first', 'the 3rd one', 'job 3'), by company name (partial or full, e.g. 'Morgan Stanley', 'Morstan'), by role/title phrase ('the analyst role', 'the credit risk one'), or by any 'show me this job' / 'tell me more about X' / 'view this role' style request. Resolving job_id from user reference: identify the right job from the most recent prior search/refine result (the numbered list you generated): (a) numeric/ordinal → the Nth job; (b) company name → substring match on Company field; (c) role/title phrase → substring match on Job Title field. Then pass that job's Job Id value from the prior search result's content text VERBATIM as job_id. Do NOT use a placeholder like 'JOB_1', '#1', or any synthetic id — only the real Job Id string from the prior result is server-valid. Required: job_id. OUTPUT BEHAVIOR: Render the response as a structured markdown card with the job's title (linked to the apply URL), company, location, salary, employment type, work mode, must-have skills, key requirements, highlights, and summary. Follow it with a brief next-step hint (e.g. 'Want to save it, find similar roles, ask about the company, or tailor your resume for this role?').

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNoThe id from a prior search result's job_cards[].card.id. Required.
parametersNo
user_emailNo
get_job_detailNo
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds detailed output behavior (structured markdown card) and resolution logic, providing useful context beyond annotations without contradiction.

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

Conciseness4/5

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

The description is long but well-structured: purpose first, then usage, resolution logic, output format, and next-step hint. Every sentence is informative; no wasted words, though it could be slightly more concise.

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 (4 parameters, nested objects, no output schema), the description covers the main parameter thoroughly and describes output behavior. It lacks explanation for other parameters but is still fairly complete for the core use case.

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 low (25% for job_id). The description thoroughly explains job_id resolution, but ignores other parameters (user_email, get_job_detail). It adds value for the main parameter but does not fully compensate for the coverage gap.

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

Purpose5/5

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

The description clearly states it renders the full job-detail card for a specific job, with specific verb 'Render' and resource. It distinguishes from siblings by focusing on reference to a prior search result, not listing or other actions.

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 description explicitly tells when to use: whenever the user references a particular job from a prior search, with examples. It implies alternatives (other tools) by context but does not name them explicitly, so one step below the highest standard.

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

job_toolA
Destructive
Inspect

Search jobs across 90+ countries by title, location, salary, remote/hybrid work mode, or employment type. Find roles in tech, finance, product, design, marketing, and every other vertical — aggregated from 1000+ ATS sources globally. Default action is search; use refine when the user asks for more matches or gives feedback on a prior result set; use save to bookmark a job for the signed-in user (requires OAuth). REFINE PROTOCOL (action=refine has THREE distinct modes): (1) Pure continuation / 'show me more' / 'next batch' / 'another set' / 'more like these': pass refine_recommendations.exclude_ids = the full array of Job Id values from the most recent search/refine result's content text (verbatim) + refine_recommendations.session_id = prior response's session_id if present. Server returns next 10 unique jobs. (2) 'Show me more like #N' / 'similar to the Atlassian one' / 'jobs like #2': pass refine_recommendations.liked_indexes = [N] (1-based position from prior numbered list) + exclude_ids + session_id. Equivalently you may pass refine_recommendations.liked_job_ids = [<that job's **Job Id** value verbatim>]. Server seeds the recommendation from that job's title/skills/company profile. (3) 'Less like #N' / 'no more N-style jobs' / 'avoid jobs like that': pass refine_recommendations.disliked_indexes = [N] (or disliked_job_ids = []) + exclude_ids + session_id. Server suppresses similar jobs. All three modes: if you skip exclude_ids, the user sees duplicates — that's a failure. The handler layers exclude_ids with server-side AgentKit memory, so partial lists still work. NEVER invent 'JOB_1' / '#1' as job_id values — always use the real Job Id string from the prior result's content text. For detail requests (user asks about a specific job from the list, e.g. 'details for #1', 'show me this job', 'tell me more about '), DO NOT call this tool — call job_detail_tool instead. That separate tool binds to the job-detail widget card so the full job card renders in chat. OUTPUT BEHAVIOR: Render the search results as a numbered markdown list, one line per job, in this exact compact format: N. **[Job Title](View_Job_URL)** — Company · Location · Job Type · Compensation · Posted MMM DD. Embed the View Job URL as a markdown link on the title (so the user can click to apply). Keep URLs intact — don't strip parameters. Skip a field entirely if it's missing — never print 'N/A' placeholders. The numbered list IS the canonical user-facing answer. REQUIRED follow-up: after the list, output EXACTLY these two sentences as two parallel questions (same pattern for action=search and action=refine): Sentence 1 — 'Would you like to see full details on any of these? Reply with the number (#1), the company name, or the role title.' Sentence 2 — 'Or would you like to refine the list — what should change (work mode, level, salary, sector)?' These two sentences must be separate and parallel; do NOT merge them into one 'detail ... or refine' clause (that buries the detail CTA). Both questions must be asked every time after a search or refine result. When the user replies referring to a specific job from the list, identify which job they mean and call job_detail_tool immediately. Identifying the job (use flexibly — users rarely type '#N' literally): (a) any numeric or ordinal reference ('#1', '1', 'first', 'the 1st', 'top one', 'job 3', 'the third') → the Nth job in your prior numbered list; (b) a company name, partial or full ('Morgan Stanley', 'Morstan', 'Capital One') → case-insensitive substring match on the Company field of the prior list, pick the first match; (c) a role/title phrase ('the analyst role', 'the credit risk one') → case-insensitive substring match on the Job Title field. If multiple jobs match, prefer the earliest. Only if no reasonable match exists, ask a one-line clarifying question. Then pass that job's Job Id value from the prior search result's content text VERBATIM as job_id to job_detail_tool / tailor_resume_tool / cover_letter_tool. Do NOT invent a placeholder like 'JOB_1' or '#1' — those are not server-valid IDs. For save, pass job_id + optional job_title/company/job_url in save_job. Put search fields in search_jobs or parameters; refine in refine_recommendations; save in save_job.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOptional; omitted = search. refine = after results/feedback; save = bookmark a job for the signed-in user.
save_jobNoSave args. Required: job_id (from job_cards[].card.id in a prior search result). Optional: job_title, company, job_url.
parametersNo
search_jobsNoSearch args. Required: city. Optional filters surface only when the user explicitly mentions them — omit otherwise. job_title+city uses indexed snapshot; company+city (optional job_title) uses legacy DB match.
refine_recommendationsNoRefine args. Pass exclude_ids (array of Job Id strings from prior result) and session_id always. For 'more like #N': pass liked_indexes=[N] or liked_job_ids=[<Job Id>]. For 'less like #N': pass disliked_indexes=[N] or disliked_job_ids=[<Job Id>]. job_title/city optional — auto-filled from prior search via session memory.
Behavior4/5

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

Annotations provide readOnlyHint=false and destructiveHint=true. Description adds context: save requires OAuth, the output format, and the required follow-up sentences. It warns about consequences of missing exclude_ids (duplicates). However, the destructive aspect isn't clarified beyond save (which creates a bookmark).

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?

Though long, the description is well-structured with clear sections (search, refine, save, output behavior, follow-up). Front-loaded with key usage. Not overly concise but earns its length through necessary detail for a complex tool.

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?

Covers all actions comprehensively: input schema, output behavior, follow-up protocol, error avoidance, prerequisites (OAuth for save), and relationships to sibling tools. No output schema, but the description fully compensates with precise formatting instructions.

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 high (80%), and description adds significant value: outlines three refine modes, cautions about passing parameters only when explicitly mentioned, and clarifies when to use exact key names. For example, it explains that 'job_title+city uses indexed snapshot' vs 'company+city uses legacy DB match.'

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 clearly states the tool's purpose: searching jobs across 90+ countries with various filters. It distinguishes from siblings like job_detail_tool (details) and cover_letter_tool/ tailor_resume_tool (other actions). The verb 'search' plus resource 'jobs' with scope is explicit.

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?

Provides explicit when-to-use guidance: 'Default action is search; use refine when the user asks for more matches or gives feedback; use save to bookmark for signed-in user.' Also tells when NOT to call this tool (for details, use job_detail_tool) and when to use alternatives.

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

tailor_resume_toolA
Destructive
Inspect

Tailor a resume to a SPECIFIC job — TWO steps. STEP 1 (default; action omitted or 'prepare'): the server returns the job's full JD, its must-have skills/requirements, and the candidate's current resume, plus tailoring instructions. YOU (the model) then WRITE the tailored resume as JSON Resume, following the instructions — weave JD keywords into existing bullets only where the candidate genuinely has the experience, never fabricate experience/titles/dates/employers, keep all dates and company names, and flag any keyword you couldn't honestly add. STEP 2: call this tool again with action:'save', tailored_resume:, and job_id — the server renders a PDF and saves it to the candidate's Workopia dashboard (requires sign-in). Use whenever the user references a specific job to tailor for: 'tailor for #1', 'for Morgan Stanley', 'tailor my resume for this role: '. Resolving job_id (same rules as job_detail_tool): from the most recent prior search/refine result — (a) numeric/ordinal → the Nth job; (b) company name → Company-field match; (c) role/title phrase → Job-Title match — then pass that job's Job Id value VERBATIM. Do NOT use placeholders like 'JOB_1' or '#1'. For STEP 1 supply ONE of job_id (preferred — server fetches the JD from Mongo) OR job_description, plus the candidate's resume via resume_text / resume_content / resume_data. For general 'improve my resume' (no specific job), do NOT call this tool — call resume_tool action=improve instead. Note: the tailored resume is written by your AI client's own model — the assistant you are already using — so it works out of the box with nothing to configure; Workopia runs no LLM of its own and never charges for the AI.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoOmit or 'prepare' = STEP 1 (server returns JD + resume + instructions for you to tailor). 'save' = STEP 2 (pass tailored_resume; server renders a PDF and saves it to the dashboard; requires sign-in).
job_idNoID of a job from a prior search/refine result. Use the **Job Id** value from the prior search result's content text VERBATIM. Server fetches full JD from Mongo.
companyNo
job_titleNo
parametersNo
session_idNo
user_emailNo
resume_dataNoPREFERRED shape — structured resume per utils/tailor/types.ts ResumeTree. Server, widget, and main-site PDF template all consume this exact shape. Collect these fields from the user before calling when possible.
resume_textNoUser's resume content (plain text or JSON Resume as string). Fallback when resume_data is not provided.
user_profileNoOptional main-site profile object; used as a fallback source for name/title/contact/experience when resume_data and resume_text are both absent.
tailor_resumeNoOptional wrapper containing the same fields above (legacy shape).
resume_contentNo
job_descriptionNoFull JD text when the user pastes it directly (alternative to job_id).
tailored_resumeNoSTEP 2 only: the tailored resume you generated, as a JSON Resume object (or a JSON string). The server renders it to PDF and stores it on profile.applications[job_id].resumeTailor.
customization_levelNo
Behavior4/5

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

Annotations show destructiveHint=true; the description confirms step 2 saves a PDF and requires sign-in. Adds critical context that the AI client writes the tailored resume (no external LLM) and that Workopia never charges for AI. Clearly states never to fabricate experience. Lacks full detail on what happens to existing resume data but is largely transparent.

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?

Well-structured with numbered steps and clear sections, but verbose. Repeats some points (e.g., instructions for job_id resolution appear twice). Could be tightened while retaining clarity.

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 15 parameters, no output schema, and complex two-step workflow, the description covers key aspects: workflow, parameter resolution, usage boundaries, and the AI's role. Lacks explicit mention of return values but is sufficient for correct usage.

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?

Description adds significant meaning beyond schema: explains action enum ('prepare' vs 'save'), how to resolve job_id via prior search, and that resume_data is the preferred structured shape used by server/UI. Job_description is described as alternative to job_id. Fallback fields (resume_text, user_profile) are clarified. Schema coverage is 53%, and the description compensates well.

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 explicitly states the tool tailors a resume to a specific job in a two-step process, using specific verbs ('Tailor', 'prepare', 'save') and clearly identifies the resource (resume). It distinguishes from sibling tool resume_tool for general improvement.

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?

Provides explicit when-to-use (user references a specific job) and when-not-to-use (general improvement, pointing to resume_tool). Includes detailed instructions for resolving job_id from prior search results with matching rules (numeric/ordinal, company, title) and warns against placeholders. Offers alternatives like job_description.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.