Skip to main content
Glama
dandyer

jobkeepr-mcp

Search jobs

get_jobs
Read-onlyIdempotent

Fetch and filter job records by date, status, type, customer, or source to answer questions about work performed and schedules; returns raw data for your own totals and comparisons.

Instructions

Fetch job records with filters. Use for any question about jobs, work performed, job types, job sources, or schedules. Returns raw job data - you calculate totals, counts, and comparisons.

Input Schema

NameRequiredDescriptionDefault
limitNoMax records to return (default 50, max 200)
dateToNoEnd date (YYYY-MM-DD). Defaults to today if omitted.
statusNoFilter by status: NEW, SCHEDULED, COMPLETED, CANCELED
dateFromYesStart date (YYYY-MM-DD). Use the DATE REFERENCE values rather than computing dates yourself — e.g. 'this year' starts Jan 1.
jobTypeIdNoFilter by job type ID
customerIdNoFilter by specific customer ID
jobSourceIdNoFilter by lead source ID (the source is stored on the customer, so this returns jobs from customers with that source)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.0.2
  2. Removedv1.0.0
  3. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/safe, so the bar is low, but the description adds real value by disclosing the return shape contract: 'Returns raw job data - you calculate totals, counts, and comparisons.' That tells the agent not to expect aggregation, which is not derivable from the annotations.

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

Conciseness4/5

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

Two short sentences, imperative and front-loaded, with the most important behavioral caveat (raw data, no aggregation) placed last where it has impact. The opening clause 'Use for any question about jobs' is slightly overbroad but not wasteful.

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 read-only, single-resource search tool with no output schema, the description covers purpose, usage, and return semantics well enough to call it correctly. It is less complete about result ordering/pagination beyond the limit field and about how it relates to get_schedule.

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

Parameters3/5

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

Schema description coverage is 100% with self-documenting parameters (limit defaults/max, enum values, date formats, the non-obvious jobSourceId semantics), so the schema carries the burden. The description adds no parameter-level meaning beyond it, which is the baseline 3 case.

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

Purpose4/5

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

States a specific verb and resource ('Fetch job records') with a scope qualifier ('with filters'). It is clearly distinguishable from mutation siblings like create_job, close_jobs, and cancel_job, but it does not explicitly differentiate itself from the read siblings (get_schedule, get_reference_data).

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

Usage Guidelines3/5

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

Gives a broad usage cue ('Use for any question about jobs, work performed...'), which is implied guidance rather than explicit when/when-not. Naming 'schedules' as in-scope is risky given the sibling get_schedule exists, and no alternative tools are named or excluded.

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