Skip to main content
Glama
jsundquist

job-search-mcp

by jsundquist

push_to_tracker

Write an evaluate_fit result to an existing job row in your Notion tracking store, updating only tool-populated fields while preserving manual entries. Use dry_run to preview the mapped payload before committing.

Instructions

Write an evaluate_fit result to the configured tracking store (Notion).

Args: job_id: The Notion page ID of the job you already track. Updates that existing row in place — never creates a new row. verdict: The full evaluate_fit output (see docs/evaluate_fit_schema.md). dry_run: If true, returns the mapped Notion properties payload without writing anything, so you can review it first.

Only the fields your tracking_schema.yaml marks tool-populated are touched — every other, manual field on the row (company, comp range, source, work arrangement, etc.) is left as-is. See docs/adr/0011-configurable-tracking-field-schema.md.

A misconfigured tool-populated field (an unrecognized derived_from, or — on a real write, not dry_run — a notion.property that doesn't exist on your database) is skipped rather than failing the whole write; check warnings in the result. dry_run's warnings only cover what can be checked without a Notion API call, since dry_run makes none — a bad property name only shows up in warnings on a real write.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
job_idYes
dry_runNo
verdictYes
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and it delivers extensively. It discloses that only tool-populated fields (per tracking_schema.yaml) are touched while manual fields are left intact, that misconfigured fields are skipped rather than failing the whole write, that warnings appear in the result, and that dry_run makes no Notion API call so its warning coverage is limited. This is exceptionally transparent about side effects and failure modes.

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

Conciseness4/5

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

The description is dense and well-organized with Args, behavior, and edge-case handling clearly sectioned. It's longer than minimal but every sentence adds operational value — dry_run semantics, field-preservation behavior, and warning behavior are all genuinely useful. Slightly long but front-loaded with the core operation first.

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

Completeness4/5

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

For a write tool with no annotations and no output schema, the description is thorough: it covers the write target, in-place update semantics, field-selection behavior driven by tracking_schema.yaml, error handling for misconfigured fields, and dry_run's limitations. It would benefit from describing the result structure (what warnings/properties are returned) since there's no output schema, but it's largely complete for effective use.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does. It explains job_id (Notion page ID of an existing tracked job), verdict (full evaluate_fit output, referencing docs), and dry_run (preview mapped payload without writing). The only minor gap: it references external docs (evaluate_fit_schema.md, adr/0011) rather than describing the verdict structure inline, though reasonable given complexity.

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

Purpose5/5

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

The description clearly states the verb ('Write'), the resource ('an evaluate_fit result to the configured tracking store (Notion)'), and the key behavior — updating an existing row in place, never creating a new one. This distinguishes it effectively from sibling tools like match_job (which produces the fit result) and list_applications (which reads applications).

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

Usage Guidelines5/5

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

The description explicitly explains when to use this tool (after evaluate_fit produces a result, to persist it) and gives critical usage context: job_id must be an already-tracked Notion page ID, whether to use dry_run to preview mapping before writing, and how misconfigured fields are handled. It distinguishes from siblings by positioning this as the write step following the match/evaluate step.

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

Install Server

Other Tools

Latest Blog Posts

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/jsundquist/job-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server