quantjobs
Allows scraping and ingesting job postings from Greenhouse job boards for tracking quant roles.
Enables generation of LaTeX-based PDF CVs, tailoring them to specific job descriptions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@quantjobstailor my CV for the best matching job"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
QuantJobs
A terminal app for hunting quant roles and managing a tailored LaTeX CV — with a Claude MCP server so you can drive the whole thing in conversation.
It does four things:
Finds jobs — scrapes stable public job boards (Greenhouse/Lever) for London quant roles, or lets Claude web-search and ingest jobs for you via MCP.
Scores & curates — a fit score (0–100) per job, bucketed into Strong match / Stretch / Long shot, plus star ★ and archive. The scorer is deliberately optimistic about skills you're learning, so genuine stretch roles surface instead of being filtered.
Builds your CV — generates a LaTeX → PDF CV from a single source of truth (
profile.yaml), either as your base CV or tailored to a specific job. Tailoring only reorders and selects your real experience — it never invents anything. If a job wants a skill you don't have, it adds a pending project (with an honest time estimate) and flags the skill to learn instead of fabricating a bullet.Spots trends — aggregates skill demand across the jobs you're tracking and flags the in-demand skills you're missing (e.g. "C++ in 20% of roles — learn it").

Setup
Prereqs: uv and a LaTeX engine (latexmk/xelatex, e.g. MacTeX
or BasicTeX — already on this machine).
uv sync
uv run quantjobs init # create the DB + seed your CV profile
uv run quantjobs scrape # pull London quant jobs from the configured firms
uv run quantjobs # launch the TUIData (DB, your editable profile.yaml, generated CVs) lives in ./data/ by default.
Override with QUANTJOBS_HOME=/some/path.
Related MCP server: Whoishiring MCP Server
The TUI
uv run quantjobs opens the dashboard. Left = job list, right = detail (fit %, the skills you
have vs miss, and the job description).
Key | Action | Key | Action |
| search (Enter apply, Esc clear) |
| skill trends screen |
| star / unstar |
| pending projects screen |
| archive |
| skills gap screen |
| generate tailored CV for this job |
| your skills profile |
| open the last generated CV (PDF) |
| cycle filter (active/★/strong/stretch/all) |
| run the scrapers |
| reload · |
CV management
Your CV is defined entirely by data/profile.yaml (seeded from your current CV). Edit it to
change anything. The LaTeX template is quantjobs/cv/template.tex — drop your own .tex into
data/template.tex to override it.
uv run quantjobs cv --base # your standard CV
uv run quantjobs cv --job 42 --stretch aggressive --open--stretch (conservative | balanced | aggressive) controls how hard the tailoring leans
into reach roles: it reorders bullets/skills to surface what the job asks for, and in
aggressive mode selects the strongest few bullets per role. It never adds experience you
don't have — missing skills become pending projects + flags. Generated CVs land in
data/output/. The template is a dense one-page modern-sans design (Helvetica Neue via xelatex).
Building a CV is best done as a conversation through the MCP (below): Claude drafts a tailored
CV for a job, you refine the bullets/order/summary together, then render — see cv_draft_* tools.
Adding job sources
Edit quantjobs/scrapers/firms.yaml (or data/firms.yaml to override). A firm's Greenhouse/Lever
token is the slug in its careers URL:
location_filter: London # applied to every firm; set "" for all locations
firms:
- {name: Jane Street, type: greenhouse, token: janestreet}
- {name: DRW, type: greenhouse, token: drweng}
- {name: Some Fund, type: lever, token: somefund}uv run quantjobs scrape --list # show configured sources
uv run quantjobs scrape --source "Jane Street" # one firm
uv run quantjobs trends # skill demand + flags to learn
uv run quantjobs gap # missing skills + suggested projectseFinancialCareers HTML scraping is included as a best-effort fallback (--source efc) but the
robust paths are the JSON boards above and Claude-driven ingestion below.
Talk to it: the Claude MCP server
Register the server so Claude can search, analyse and act on your job DB in conversation:
claude mcp add quantjobs -- uv run --directory "$(pwd)" quantjobs-mcp{
"mcpServers": {
"quantjobs": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/quantjobs", "quantjobs-mcp"]
}
}
}Note: Claude Desktop may not inherit your shell PATH; if CV compilation fails, ensure
/Library/TeX/texbin is on PATH for the server process.
Then just ask Claude things like:
"Find London quant-developer roles and add them" → web search →
add_jobs"What in-demand skills am I missing?" →
analyze_trends+skills_gap_report"Which firms are hiring for C++?" →
run_query(read-only SQL over the DB)"Star 42 and add a pending project to learn kdb+" →
star_job+add_pending_project"I finished the order-book project — mark C++ as a skill I have" →
add_or_update_skill
Build a CV conversationally (the recommended way):
"Build my CV for job 107" →
cv_draft_create(Claude shows the proposed summary, the selected/reordered bullets, and the skills) → "tighten the second UBS bullet and lead with the ML one; drop the Excel bullet" →cv_draft_update(re-shows) → "render it" →cv_draft_render→ PDF. Drafts persist between messages, so you can iterate. Claude only rephrases your real experience (same facts/metrics) — it never invents anything.
29 tools are exposed. run_query is restricted to a single read-only SELECT/WITH on a
read-only connection, so Claude can freely explore patterns without being able to mutate data
except through the explicit, audited tools.
Useful tables for run_query: jobs, job_skills(job_id, skill), skills_profile,
pending_projects, skill_flags, cv_versions, saved_searches.
Development
uv run pytest # test suite
uv run ruff check . # lintLayout: core data layer (db, repo, models, ingest, fit), cv/ (template +
generator + compile), scrapers/, analysis/ (trends, skills gap), tui/, mcp_server/.
Available Tools
32 toolsadd_jobsA
Add jobs to the database (use after a web search for quant roles).
Each job dict should include at least firm and title. Useful fields:
role_type (quant_dev|quant_researcher|quant_trader|quant_analyst|other),
location, url, description, must_have (list), nice_to_have (list),
skills (list), comp_min, comp_max, currency, posted_at. Skills are
normalised, role type inferred, fit scored, and duplicates merged.
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses non-obvious behaviors: skills normalization, role type inference, fit scoring, and duplicate merging. This adds significant value beyond a simple add operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first provides purpose and usage context, the second lists key fields. Every sentence earns its place with no redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter and absence of output schema or annotations, the description covers purpose, usage context, parameter details, and behavioral notes. It lacks mention of return values or side effects, but for a straightforward add tool, this is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines a generic array of objects with additionalProperties. The description lists specific useful fields (e.g., role_type enum, comp_min, skills) and their purposes, compensating fully for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds jobs to the database and specifies usage after a web search for quant roles. It distinguishes from sibling tools like search_jobs and update_job by its focus on adding new entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: 'use after a web search for quant roles'. While it doesn't explicitly state when not to use or list alternatives, the context is clear and differentiates this tool from modification or search siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_or_update_skillA
Record that you have/are learning a skill (updates profile + fit scoring). source: have | learning | pending. Use this when you complete a project.
| Name | Required | Description | Default |
|---|---|---|---|
| skill | Yes | ||
| source | No | have | |
| category | No | other | |
| proficiency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states 'updates profile + fit scoring', indicating mutation and side effects, but does not mention auth needs, rate limits, or any destructive actions. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver purpose, source options, and usage context. Every sentence adds value; no wasted words. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description covers purpose and when to use, but neglects explanation of 'category' and 'proficiency'. Return values are not described, though no output schema exists. Somewhat incomplete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It explains the 'source' parameter with values 'have | learning | pending', adding meaning beyond the schema. However, it does not clarify 'skill', 'category', or 'proficiency', leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records a skill and updates profile and fit scoring. It specifies the verb 'Record' and resource 'skill', and includes source options. However, it does not explicitly distinguish from sibling tools, though no other skill tools exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when you complete a project', providing clear context for when to use. It does not mention when not to use or alternatives, but the tools list shows no other skill-add tool, so guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_pending_projectC
Add a project to your backlog (e.g. to earn a missing skill). Always
record an honest time estimate in est_hours.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| priority | No | ||
| est_hours | Yes | ||
| rationale | No | ||
| target_skills | Yes | ||
| linked_job_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only states it adds to backlog, but no details on side effects, idempotency, permissions, or other behavioral traits. The instruction about 'honest time estimate' is not a behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no fluff, clear and to the point. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 0% parameter documentation, the description is too sparse. It lacks details on prerequisites, required parameters, behavior, and what happens on success/failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must explain parameters. Only 'est_hours' is mentioned explicitly; 'target_skills' is implied by the example. The other 4 parameters (title, priority, rationale, linked_job_ids) are not described, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a project to a backlog, with an example of earning a missing skill. However, it does not distinguish from sibling tools like 'add_jobs' or 'update_pending_project', so it is not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The only guideline is to record an honest time estimate, which is parameter-specific and not about overall usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_trendsC
Skill demand across tracked jobs; flags in-demand skills you don't have.
| Name | Required | Description | Default |
|---|---|---|---|
| window_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should convey behavioral traits. It mentions 'flags in-demand skills you don't have' indicating a gap analysis, but does not explain what 'window_days' does (default 0 is ambiguous), the data source, or any side effects. Transparency is low.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that gets to the point quickly. While it lacks structure with bullet points or sections, it is efficiently front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool has only one parameter and appears simple, the description omits crucial details about 'window_days'. Without explanation, agents may misuse the default value. The presence of an output schema does not compensate for missing input semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the only parameter 'window_days'. No added meaning over the schema, which itself lacks description. The parameter's default 0 is unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: analyzing skill demand across tracked jobs and flagging in-demand skills that the user lacks. This distinguishes it from sibling tools like 'skills_gap_report' which might focus on gaps differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., 'skills_gap_report', 'add_or_update_skill'). The description implies usage for identifying missing in-demand skills but does not provide context on when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_jobA
Archive a job (sets status='archived'); kept for pattern history.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the status change and retention, but lacks side effects like search visibility, permissions, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly concise single sentence. However, it could be slightly more structured or incorporate additional useful details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is minimally adequate but lacks details on post-archive behavior (e.g., whether job remains searchable or retrievable).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (job_id) with no description in schema (0% coverage). Description does not add meaning beyond the schema, such as requiring an existing job ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'archive' and resource 'job', and specifies it sets status to 'archived' for pattern history, distinguishing from sibling tools like 'set_status' or 'update_job'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative tools mentioned; only implicit through the action description. A clear usage scenario is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_draft_createA
Start a conversational CV draft — base (job_id=0) or tailored to a job.
Returns {draft_id, content, missing_skills, suggested_projects}. content is the
editable CV (contact, profile summary, education, experience-with-selected-bullets,
skills_rows, volunteering, awards). Show it to the user, then refine it with
cv_draft_update / cv_reframe_bullet and render with cv_draft_render.
POLICY: bullets may be reframed and strengthened (the user wants punchy bullets). Any change that goes beyond a literal restatement MUST be logged via cv_reframe_bullet (preferred — it edits and logs atomically) or cv_note_add, classified as reframe | stretch | fabrication, so it lands in cv_notes.md. Never silently invent. Missing skills are returned (and logged as pending projects).
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| stretch_level | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses behavioral traits: bullets may be reframed and strengthened, any change beyond literal restatement must be logged, missing skills are returned and logged. This is reasonably transparent for a draft creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise, with a clear first sentence and structured blocks for returns and policy. It could be slightly tighter but is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 2 parameters, no output schema, and the description covers workflow, return structure, and policy, it is largely complete for its complexity. The missing explanation of stretch_level is the main gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, meaning the description should fully explain parameters. It partially explains job_id ('base (job_id=0) or tailored to a job') but does not explain stretch_level at all. This leaves a significant gap in understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a conversational CV draft, either base or tailored to a job, and lists return fields. It distinguishes from siblings like cv_draft_update and cv_draft_render by mentioning them as subsequent steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to start a draft) and provides a policy for subsequent actions (refine with cv_draft_update, log changes). However, it does not explicitly state when not to use it or contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_draft_getA
Get the current state of a CV draft (id, content, status, timestamps).
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states 'Get the current state,' which implies a safe, read-only operation. However, it does not explicitly confirm non-destructive behavior or mention any prerequisites, rate limits, or access controls. The description is adequate but not thorough for a no-annotation context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, front-loaded with the action 'Get'. It contains no superfluous information and efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and an existing output schema, the description covers the essential: what the tool returns (fields of a draft). It does not address error states or relationships with siblings, but these are less critical given the output schema and straightforward nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not elaborate on the required parameter 'draft_id'. It only lists the fields in the returned data. The parameter name is self-explanatory, but the description adds no value beyond the schema's minimal 'Draft Id' title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the resource 'CV draft' with the fields returned (id, content, status, timestamps). It clearly distinguishes from sibling tools like cv_draft_create (creation) and cv_draft_list (listing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a specific draft's current state is needed, but it provides no explicit guidance on when not to use it or alternative tools. Without context on alternatives like cv_draft_get vs cv_draft_list, the agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_draft_listC
List recent CV drafts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lacks disclosure of what 'recent' means (e.g., date field), ordering, pagination details, or side effects. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence but under-specified; lacks necessary details like sorting or definition of 'recent'. Not concise due to missing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description still fails to clarify listing semantics (e.g., recent by what?), sorting, or pagination. Incomplete for a list tool with many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0%; description does not mention the 'limit' parameter. Adds no meaning beyond the schema's type and default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List recent CV drafts' with a specific verb 'list' and resource 'CV drafts'. Distinguishes from sibling tools like cv_draft_get (specific draft) and cv_draft_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. No context about filtering, ordering, or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_draft_renderA
Render the agreed CV draft to a PDF. Returns {tex_path, pdf_path}.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | ||
| open_pdf | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavioral traits. It states the action and output, but does not disclose side effects (e.g., whether the draft is modified), authentication needs, or rate limits. It is transparent about the return paths, but misses other behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a return note with no extraneous words. It is front-loaded with the verb 'Render' and efficiently conveys the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-param tool with no output schema, the description covers the action, resource, and output format. However, it omits the meaning of open_pdf and does not mention prerequisites like draft existence or state, leaving minor gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should explain parameter meanings. It does not mention what draft_id refers to or the purpose of open_pdf. The description fails to compensate for the lack of schema descriptions, making it harder for an agent to use correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Render', the resource 'agreed CV draft', and the output format 'PDF', and even specifies the return structure. This distinguishes it well from sibling tools like cv_draft_get or cv_draft_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after a draft is agreed, but does not explicitly state when to use it vs. alternatives, nor does it mention prerequisites or exclusions. It lacks guidance like 'use only after finalizing the draft'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_draft_updateA
Apply a structural edit to a CV draft (summary, ordering, skills) and return content.
Use this for the summary, reordering, and skills. For rewording individual experience bullets, prefer cv_reframe_bullet (it logs the change). Patch keys: profile (str summary), contact (dict), experience ([{org, role?, location?, start?, end?, bullets?}] merged by org), skills_rows ([{label, value}] merged by label), education/awards/volunteering (replace the list). If you reword bullets here, also call cv_note_add for anything beyond a literal restatement.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | ||
| draft_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It explains the tool applies a structural edit, returns content, and details merging behavior for certain patch keys. It also notes that cv_draft_update does not log changes, implicitly distinguishing it from cv_reframe_bullet. However, it could be more explicit about whether the tool saves or versions the draft.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with purposeful sentences. It starts with the main purpose, followed by usage guidance, then detailed patch key documentation. Every sentence adds value; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (2 params, one nested object), no annotations, and no output schema, the description provides sufficient context for an AI agent. It explains the tool's functionality, usage boundaries, and patch key structure. However, it omits details about the return value format, which could be useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the input schema has minimal description (0% coverage), the description fully compensates by listing all valid patch keys with their types and examples (e.g., profile, contact, experience, skills_rows, education/awards/volunteering). This adds crucial meaning that the generic schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies a structural edit to a CV draft (summary, ordering, skills) and returns content. It also explicitly distinguishes from the sibling cv_reframe_bullet for rewording bullets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool ('Use this for the summary, reordering, and skills') and when to prefer an alternative ('For rewording individual experience bullets, prefer cv_reframe_bullet'). Also includes additional instruction to call cv_note_add for non-literal rewording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_note_addA
Log a CV claim change to cv_notes.md (reframe | stretch | fabrication).
Use when you reframe/embellish a bullet or summary outside cv_reframe_bullet, so the
audit trail stays complete. scope is free text (e.g. 'summary' or 'job 107').
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | reframe | |
| scope | No | ||
| original | No | ||
| rewritten | Yes | ||
| justification | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'log a claim change' but does not explain whether it appends, overwrites, or requires authentication. There is no mention of side effects, idempotency, or file access permissions. This is insufficient for a logging tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first defines the action and types, the second clarifies when to use and explains a parameter. Every sentence earns its place; no fluff. Information is front-loaded with the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters and no output schema or annotations, the description needs to be more thorough. It lacks details on parameter constraints, return behavior (e.g., confirmation message), and edge cases. The tool is simple but the description under-delivers for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It only explains 'scope' as free text with an example. The other four parameters ('kind', 'original', 'rewritten', 'justification') are not described at all. The meaning of 'kind' defaults to 'reframe' but no allowed values are listed. This leaves significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it logs a CV claim change to cv_notes.md, specifying three types (reframe, stretch, fabrication). It distinguishes from sibling tool cv_reframe_bullet by stating usage 'outside cv_reframe_bullet'. This is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use ('when you reframe/embellish a bullet or summary outside cv_reframe_bullet') and why ('so the audit trail stays complete'). It also indirectly names the alternative tool (cv_reframe_bullet) and provides context for when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_notes_getA
Return the CV claim notes (cv_notes.md) — review before interviews.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Return' indicating a read operation, which is consistent with a getter. However, it does not disclose any side effects, permissions, or additional behavioral traits beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose. It is concise with no wasted words, earning a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with no parameters and an existing output schema, the description is sufficiently complete. It covers the essential purpose and usage context ('review before interviews'). No further details are necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so the description naturally adds no parameter information. According to guidelines, with 0 parameters the baseline is 4. The description does not need to elaborate on parameters as none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'CV claim notes (cv_notes.md)', making the tool's purpose unambiguous. It also adds context with 'review before interviews', which distinguishes it from sibling tools like cv_note_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context ('review before interviews'), implying when the tool should be used. However, it does not explicitly mention when not to use it or provide alternatives, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cv_reframe_bulletA
Reword (or add) one experience bullet on a draft AND log it to cv_notes.md.
This is the right tool for making bullets punchy. org selects the experience entry;
if original matches an existing bullet it is replaced, otherwise rewritten is added
as a net-new bullet. kind MUST reflect how far you went:
reframe — same facts, stronger wording (safe)
stretch — plausible extrapolation/quantification the user must be ready to justify
fabrication — a claim not actually done (a conscious, flagged choice)
Provide justification (how the user backs it up). The change is appended to cv_notes.md.
| Name | Required | Description | Default |
|---|---|---|---|
| org | Yes | ||
| kind | No | reframe | |
| draft_id | Yes | ||
| original | No | ||
| rewritten | Yes | ||
| justification | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the main behavioral traits: modification of the draft (replacement or addition) and logging to cv_notes.md. However, it does not mention potential destructive nature (overwriting an existing bullet), error conditions, or state whether changes are reversible. Some behavioral context is given, but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear first-line summary followed by parameter explanations. Every sentence adds value, and there is no redundant or irrelevant content. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations, output schema, and low schema coverage, the description is expected to be thorough. It covers the main function, parameter roles, and side effect. However, it does not specify prerequisites (e.g., draft must exist), error handling, or the exact content logged to cv_notes.md. It also omits the return value or success confirmation, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It describes org as selecting the experience entry, explains the logic between original and rewritten, and defines kind with its three options. It also covers justification. However, the required parameter draft_id is not explained at all, and org's format is not specified. This leaves gaps for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action 'Reword (or add) one experience bullet on a draft AND log it to cv_notes.md', identifying the verb ('reword/add'), resource ('experience bullet on a draft'), and side effect ('log to cv_notes.md'). It distinguishes itself from sibling tools by positioning itself as the tool for making bullets punchy, which is unique among the listed siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'This is the right tool for making bullets punchy' and explains the roles of the parameters (org, original, rewritten, kind) to guide usage. It defines the three 'kind' values (reframe, stretch, fabrication) with their implications. However, it does not explicitly mention when not to use this tool or suggest alternatives, but the context of siblings implies it's the only bullet reframing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_cvA
Generate a CV PDF — base (job_id=0) or tailored to a job. Tailoring only reorders/selects your real experience; missing skills become pending projects + flags rather than fabricated bullets. stretch_level: conservative | balanced | aggressive.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| stretch_level | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: it reorders/selects experience, handles missing skills by adding pending projects and flags, and offers stretch_level options. However, it omits details about output format (e.g., how the PDF is returned) and potential side effects like saving or modifying state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, using two sentences to cover purpose, behavior, and parameters. No redundant information; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description provides a solid understanding. Missing elements include the format of the output PDF and prerequisites (e.g., having a profile or jobs). Still, it adequately covers the core functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds critical meaning: job_id determines base vs tailored, and stretch_level is explained with its values (conservative, balanced, aggressive). It could be improved by specifying that job_id refers to a job in the user's saved jobs list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a CV PDF' and distinguishes between base (job_id=0) and tailored to a job. This specificity differentiates it from sibling tools like cv_draft_create, which likely handle different aspects of CV creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage contexts (base vs tailored) but does not explicitly guide the agent on when to choose this tool over alternatives like cv_draft_create or cv_draft_update. No exclusions or when-not-to-use 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_jobB
Get a single job by id, including full description and skills.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It mentions the inclusion of description and skills but does not discuss authorization, rate limits, error handling, or whether the job data is mutable. The transparency is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that conveys the essential information without any waste or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one integer parameter, presumably a read operation) and the existence of an output schema, the description is moderately complete. However, it lacks mention of potential errors, performance considerations, or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines a single parameter 'job_id' as integer. The description adds no additional meaning beyond the schema, such as how to obtain the ID or expected format. Since schema description coverage is 0%, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('get') and resource ('a single job by id'), and specifies what is included ('full description and skills'), distinguishing it from siblings like 'search_jobs' which retrieve multiple jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as 'search_jobs' for filtering or 'list_saved_searches' for other scenarios. The description only states what it does, not when it should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileA
Return your CV profile (contact, experience, skills, etc.) from profile.yaml.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description implies a read-only operation by stating 'Return your CV profile'. It identifies the data source (profile.yaml), offering context beyond the schema. Could mention no side effects explicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise, front-loaded with the verb 'Return', and contains all necessary information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and a simple read operation, the description fully covers what the tool does. It specifies the content and source, which is sufficient for the agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema coverage is 100%. The description adds no parameter info, but none is needed. The tool is parameterless.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the CV profile with specific sections (contact, experience, skills) from a known file. It effectively distinguishes from sibling CV tools like generate_cv or cv_draft_*.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when-not or alternatives are given, the simple nature of a getter makes usage clear. It's the obvious choice for retrieving profile data, distinct from other operations on CV drafts or generation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_settingsA
Get current settings (stretch_level, trend thresholds, location filter).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully convey behavior. It correctly identifies the tool as read-only ('Get'), but lacks details on authentication, rate limits, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence (8 words) that efficiently conveys the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema) and the rich set of sibling tools, the description succinctly covers what the agent needs to know for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema coverage is 100%. The description adds value by listing the specific settings returned, which is not captured in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'settings', listing specific attributes (stretch_level, trend thresholds, location filter). This distinguishes it from sibling tools like 'set_setting'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving current settings but does not explicitly state when to use vs. alternatives like 'set_setting'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
init_dbA
Create the database and seed your CV profile (safe to call repeatedly).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It mentions safety and repeatability but does not specify what happens if the database already exists (e.g., reset, update, skip). More detail on side effects would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential purpose and idempotency without extraneous words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and no annotations, the description sufficiently covers the tool's action and safety. However, it could elaborate on the exact behavior of repeated calls (e.g., does it overwrite or skip?).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description correctly adds no parameter details. Baseline score of 4 applies for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates the database and seeds the CV profile, with a specific verb and resource. It distinguishes itself from sibling tools, which focus on jobs, skills, CV drafts, etc., none of which perform initialization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through 'safe to call repeatedly' but lacks explicit guidance on when to use versus alternatives or any prerequisites. It could state that this should be the first tool called before using others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_flagsB
List flagged skills (recommendations to learn). Optionally filter by status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic function. It does not disclose whether the tool is read-only, requires authentication, or any side effects. For a list operation, it's minimally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is front-loaded with the key action and resource. Every word serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description lacks context about what 'flagged skills' are, possible status values, and how results are structured. It is barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'status' parameter as an optional filter, which is not explained in the schema (0% coverage). However, it does not specify valid status values or format, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'flagged skills (recommendations to learn)', and mentions an optional filter. It distinguishes from sibling tools that deal with jobs, projects, or CVs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the optional filter, but lacks explicit guidance on when to use this tool versus alternatives like 'add_jobs' or 'search_jobs'. No exclusions or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pending_projectsB
List backlog projects (optionally filter: idea|planned|in_progress|done).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does not state whether the tool is read-only, destructive, or requires any permissions. The optional filter is mentioned but no side effects or behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence front-loading the core purpose and adding a relevant filter option. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not explain return values. However, it lacks explanation of 'backlog projects', pagination, or how the filter affects results. Adequate for a simple list tool but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter with 0% description coverage, but the tool description adds meaning by listing possible filter values (idea|planned|in_progress|done). This compensates for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'list' and the resource 'backlog projects', and mentions an optional filter. However, 'backlog' is not explicitly defined, and the tool name uses 'pending', causing slight ambiguity. It distinguishes from siblings like 'add_pending_project' and 'update_pending_project'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides filter options but no guidance on when to use this tool versus alternatives like 'search_jobs' or 'analyze_trends'. There is no mention of prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_saved_searchesB
List saved searches/patterns.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose whether the operation is read-only, the format of results, or any pagination behavior. The presence of an output schema is not leveraged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (five words). It is front-loaded and to the point, though it could be slightly more explicit by using a complete sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema exists), the description is minimally adequate. However, it omits context such as what constitutes a saved search, how results are ordered, or whether there are limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema description coverage is 100%. Per guidelines, baseline is 4. The description does not add parameter information, but it is not needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List saved searches/patterns' clearly specifies the action (list) and the resource (saved searches/patterns). It distinguishes from sibling tools like save_search (create) and search_jobs (execute).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives like save_search or search_jobs. The agent receives no context about pre-conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_queryA
Run a READ-ONLY SQL query against the job DB for ad-hoc pattern analysis.
Only a single SELECT/WITH statement is permitted (enforced on a read-only connection). Handy tables: jobs, job_skills(job_id, skill), skills_profile, pending_projects, skill_flags. Example: SELECT skill, COUNT(*) n FROM job_skills GROUP BY skill ORDER BY n DESC
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly states the tool is read-only and only permits SELECT/WITH statements. It does not mention authentication, rate limits, or error handling, but the key behavioral trait (safety) is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences plus an example, all front-loaded with the core purpose. Every sentence adds useful information without redundancy. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to explain return values. It covers purpose, constraints, and provides an example. It could mention performance or error handling, but for a simple SQL tool, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, but it does not explain the 'sql' or 'limit' parameters individually. The example shows usage but does not clarify that 'limit' defaults to 200. The description adds minimal semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states 'Run a READ-ONLY SQL query against the job DB for ad-hoc pattern analysis', clearly specifying the action, resource, and purpose. It distinguishes itself from sibling tools which are mostly mutation tools (e.g., add_jobs, update_job).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly restricts usage to SELECT/WITH statements and mentions enforcement on a read-only connection. It provides a list of handy tables and an example, guiding the user on when to use it (ad-hoc analysis). It does not explicitly state when not to use, but the read-only constraint is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_scrapersA
Run the job-board scrapers (Greenhouse/Lever). Empty = all firms; or pass a source kind ('greenhouse'/'lever') or a firm name.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It says 'Run the job-board scrapers' but does not clarify if this is a read-only operation or a mutation, nor does it mention side effects like job creation, rate limits, or errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise with two sentences, no redundancy, and front-loaded key information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description is fairly complete. It covers what the tool does and parameter usage, though it lacks details on return values or success/error feedback.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema by explaining that an empty string runs all firms, and that 'source' can be 'greenhouse', 'lever', or a firm name. This compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' and the resource 'job-board scrapers (Greenhouse/Lever)'. It specifies parameter options, distinguishing it from sibling tools like add_jobs or search_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use empty vs specific source kinds or firm names, providing clear context. However, it does not explicitly mention when not to use this tool or alternatives like manually adding jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_searchB
Save a search/pattern so you can re-run it later.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| params | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Indicates a write operation (mutating state) but does not disclose behavior on duplicate names, validation of params, or confirmations. With no annotations, description should offer more but is adequate for a simple save.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, front-loaded with key action and purpose. Slightly under-informative but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing details on return value, side effects, or error handling. No output schema or annotations, so description should compensate but does not, leaving gaps for confident agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Does not explain the two parameters (name and params) beyond the schema. Schema coverage is 0%, and description adds no meaning, leaving the agent to guess what 'params' should contain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'save' and resource 'search/pattern', and distinguishes from siblings like run_query and list_saved_searches by focusing on persistence for later reuse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when wanting to persist a search for later execution, but does not provide explicit when-to-use vs alternatives or prerequisites. Context from sibling tools somewhat clarifies but description lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsC
Search the job database. Empty filters are ignored. Returns job records.
| Name | Required | Description | Default |
|---|---|---|---|
| firm | No | ||
| limit | No | ||
| query | No | ||
| status | No | ||
| min_fit | No | ||
| starred | No | ||
| location | No | ||
| role_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It notes empty filters are ignored and returns job records, but omits details like pagination, sorting, rate limits, auth requirements, or side effects. This is insufficient for an 8-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but it omits critical information. While concise, it sacrifices completeness for brevity, earning a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, returning values need not be explained. However, the description fails to cover 8 parameters with no schema descriptions, lacks usage guidance, and provides minimal behavioral context, making it incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameter meaning. It only mentions that empty filters are ignored, providing no detail on what each of the 8 parameters (firm, limit, query, etc.) does. This leaves agents to guess from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches the job database and returns job records. The verb 'Search' and resource 'job database' are specific, and it distinguishes from siblings like 'get_job' (single retrieval) and 'add_jobs' (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Empty filters are ignored,' which provides some usage context but does not specify when to use this tool versus alternatives like 'get_job' or 'archive_job'. No explicit when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_settingB
Update a setting, e.g. stretch_level=aggressive or location_filter=New York.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states 'Update a setting' without disclosing behavioral traits such as whether updates are destructive, require authentication, or have validation rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence with front-loaded purpose and examples, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description omits important context like what settings exist, how updates are applied, and what the result is, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; description adds examples for key and value (e.g., stretch_level=aggressive), providing some meaning but not systematic guidance on valid keys or value formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Update' and resource 'setting', with concrete examples (e.g., stretch_level=aggressive). It clearly distinguishes from sibling tools like get_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_settings for reading). No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_statusB
Set a job's status: active | applied | archived | closed.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose side effects, permissions required, or consequences (e.g., what happens to related data when status changes). For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb and resource, and lists options efficiently. Every word earns its place, though it could benefit from a bit more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 params, no nested objects), the description is adequate but lacks information on return values or confirmation. Sibling tools exist, but no context on when to prefer this over alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description adds value by listing valid status values. However, it does not specify format for job_id or constraints on status (e.g., enum). It partially compensates but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'a job's status', and lists four possible status values. It distinguishes itself from siblings like 'archive_job' and 'update_job' by focusing solely on status changes, though without explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when changing a job's status, but provides no guidance on when not to use it or alternatives among siblings like 'archive_job' (which might also change status). No contextual hints are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skills_gap_reportA
Skills you're missing (overall, for a job, or across starred jobs), each with a suggested project + hours to close the gap.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | ||
| starred | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It explains the tool returns missing skills with suggestions, implying a read-only operation. However, it does not mention permissions, side effects, or data handling. Still, it gives a clear behavioral summary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, but the first is a grammatical fragment. It is reasonably concise but could be better structured and more informative without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (2 params, no required, no output schema), the description covers the core purpose but lacks details on parameter usage and output format. Could be more complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It mentions scope options (overall, job, starred) but does not explicitly map them to parameters job_id and starred. The meaning of defaults (job_id=0, starred=false) is unclear. More detail is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports missing skills with three scope options (overall, for a job, across starred jobs) and provides suggestions. It is distinct from sibling tools like add_jobs or analyze_trends.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage scenarios (overall, job-specific, starred jobs) but does not explicitly guide when to use this tool versus alternatives like analyze_trends. No exclusions or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
star_jobC
Star (save) or unstar a job you like.
| Name | Required | Description | Default |
|---|---|---|---|
| on | No | ||
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits such as whether the action is idempotent, what happens if the job is already starred, or any rate limits or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence with no filler, but it sacrifices important details for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given minimal schema coverage and no output schema, the description is too sparse to fully inform an agent about usage, parameters, or outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds no meaning beyond the parameter names. The 'on' parameter is not explained (e.g., true=star, false=unstar), leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (star/unstar) and the resource (job), clearly distinguishing it from sibling tools like 'archive_job' or 'add_jobs'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'archive_job' or 'save_search'. It does not mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_flagB
Update a skill flag's status: new | acknowledged | learning | dismissed.
| Name | Required | Description | Default |
|---|---|---|---|
| skill | Yes | ||
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only states it updates a status, but does not mention mutability, idempotency, error conditions, permissions, or side effects (e.g., whether it requires the flag to exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Front-loaded with the purpose and immediately clarifies the allowed statuses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and minimal parameter documentation. The description lacks return value details, error handling, and prerequisites, making it insufficient for a mutation tool with no structural aids.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists allowed status values, adding some meaning beyond the schema (which has no descriptions for params). However, it does not explain what 'skill' refers to (e.g., name or ID), so the other parameter is not fully documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'a skill flag's status', and lists the allowed values (new, acknowledged, learning, dismissed). This distinguishes it from siblings like list_flags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., list_flags). The description implies it is for changing the status of an existing flag, but does not state prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_jobC
Update editable fields on a job (e.g. notes, status, comp_min, role_type).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| job_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. Only states 'update editable fields' without disclosing mutation details like idempotency, failure behavior, or permission requirements. Insufficient for an agent to understand side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy. Could be expanded without becoming verbose, but current length is acceptable given the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no annotations, no output schema, and only 2 parameters. The description omits response format, error scenarios, and scope of updates, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no property descriptions), and the description only lists example field names without specifying constraints, formats, or allowed values. The 'fields' parameter is an open object, adding ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and the resource 'job', with examples of editable fields. It is specific enough to distinguish from siblings like 'archive_job', but does not explicitly differentiate from 'set_status' which might be a more focused tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'set_status' or 'update_flag'. Does not mention prerequisites, restrictions, or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pending_projectA
Update a pending project (e.g. status, priority, est_hours, notes).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only says 'Update' without disclosing idempotency, permissions, validation, or return behavior. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words. Could be slightly more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and only partial parameter hints. The description omits return value, side effects, and prerequisites, making it incomplete for an update tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (0% coverage), but the description lists example field values (status, priority, est_hours, notes), adding meaning beyond the schema's bare structure. However, the 'fields' object remains vague.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'pending project', with examples of fields like status, priority, est_hours, notes. It distinguishes from sibling tools such as add_pending_project and list_pending_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like add_pending_project or update_job. The context is implied but not 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. Dates show when Glama detected each change.
32 tool updates
v0.1.0- First observed
add_jobs - First observed
add_or_update_skill - First observed
add_pending_project - First observed
analyze_trends - First observed
archive_job - First observed
cv_draft_create - First observed
cv_draft_get - First observed
cv_draft_list - First observed
cv_draft_render - First observed
cv_draft_update - First observed
cv_note_add - First observed
cv_notes_get - First observed
cv_reframe_bullet - First observed
generate_cv - First observed
get_job - First observed
get_profile - First observed
get_settings - First observed
init_db - First observed
list_flags - First observed
list_pending_projects - First observed
list_saved_searches - First observed
run_query - First observed
run_scrapers - First observed
save_search - First observed
search_jobs - First observed
set_setting - First observed
set_status - First observed
skills_gap_report - First observed
star_job - First observed
update_flag - First observed
update_job - First observed
update_pending_project
TDQS
Each tool has a clearly distinct purpose, with no overlapping functionality. For example, CV drafting tools are separated by action (create, update, get, list, render), and job tools cover distinct operations (add, search, get, update, archive, star). Even similar tools like analyze_trends and skills_gap_report target different aspects (demand vs. personal gaps).
All tool names follow a consistent verb_noun pattern (e.g., add_jobs, get_job, analyze_trends, cv_draft_create). The naming is predictable and uses underscores uniformly, with no mixing of conventions like camelCase. Even longer names like add_or_update_skill adhere to this pattern.
With 32 tools, the count is high for a typical MCP server, which often has 3-15 tools. However, the server covers a broad domain (quant job search, CV drafting, skill tracking, and analysis), and each tool seems justified. It borders on being too heavy but is still manageable given the comprehensive scope.
The tool set covers the full lifecycle of quant job hunting and CV management: job discovery (add, search, get, archive, star), skills tracking (add, analyze, gap report), CV drafting (create, update, get, list, render, reframe, notes), project management, settings, and ad-hoc analysis. No obvious gaps are apparent; even edge cases like job status updates and skill flags are handled.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Generate tailored, ATS-optimized resume PDFs and cover letters from a job description, over MCP.
CareerProof MCP gives AI agents direct access to a professional-grade career and workforce intelligence platform. Two namespaces: atlas_* for HR/TA teams (candidate evaluation, batch shortlisting, competency scoring, interview generation, JD analysis, custom eval frameworks, research reports) and ceevee_* for professionals (CV optimization, career positioning, salary intelligence, market reports). Backed by RAG knowledge from 50+ premium research sources (McKinsey, BCG, HBR, Gartner, WEF)
A job-search companion: tailor your CV to a role, score fit, fix ATS issues. Also via MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables Claude to search AI/ML jobs across Greenhouse, Lever, and Adzuna, with resume tailoring and referral outreach assistance.5-
- FlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to scan, analyze, and track job postings from Hacker News and Y Combinator's Work at a Startup using a 24-tool MCP server with multi-stage filtering and resume-based ranking.-
- FlicenseAqualityDmaintenanceTransforms Claude into an AI job-hunting assistant that searches remote job boards, scores roles against your CV, generates tailored cover letters, and logs everything to a Notion tracker.11-
- FlicenseNot gradedqualityCmaintenanceEnables running a job search with Claude Code: parses CV, discovers roles, fetches exact application fields, drafts non-trivial applications (positioning, not autofill), and renders an offline dashboard for review.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kav-png/quantjobs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server