Skip to main content
Glama

contractors.fyi

Job value on permits

project_cost
Read-onlyIdempotent

What city permits for this kind of work stated as the job value: median and middle half, with the number of permits and their dates. Give a ZIP to get that ZIP's figure where the site publishes one. The value stated on the city permit, not the price paid.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipNoFive-digit ZIP code
cityYesCity id from list_coverage, e.g. los-angeles, new-york, austin
kind_of_workYesKind of work, e.g. roofing, solar, adu, remodel

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / city / enum
      Previous value: -[
      -  "los-angeles",
      -  "san-francisco",
      -  "seattle",
      -  "new-york",
      -  "austin",
      -  "philadelphia",
      -  "chicago",
      -  "nashville",
      -  "san-jose",
      -  "sacramento",
      -  "boulder",
      -  "las-vegas",
      -  "new-orleans",
      -  "baton-rouge",
      -  "raleigh",
      -  "buffalo",
      -  "cleveland",
      -  "somerville",
      -  "cambridge",
      -  "minneapolis",
      -  "bellevue",
      -  "cary",
      -  "elk-grove",
      -  "anaheim",
      -  "arlington-va",
      -  "greensboro",
      -  "naperville",
      -  "everett",
      -  "san-diego",
      -  "chattanooga",
      -  "orlando",
      -  "tacoma",
      -  "riverside",
      -  "pittsburgh",
      -  "miami-dade",
      -  "marin-county",
      -  "mesa",
      -  "rockford",
      -  "san-antonio",
      -  "st-louis"
      -]New value: +[
      +  "los-angeles",
      +  "san-francisco",
      +  "seattle",
      +  "new-york",
      +  "austin",
      +  "philadelphia",
      +  "chicago",
      +  "nashville",
      +  "san-jose",
      +  "sacramento",
      +  "boulder",
      +  "las-vegas",
      +  "new-orleans",
      +  "baton-rouge",
      +  "raleigh",
      +  "buffalo",
      +  "cleveland",
      +  "somerville",
      +  "cambridge",
      +  "minneapolis",
      +  "bellevue",
      +  "cary",
      +  "elk-grove",
      +  "anaheim",
      +  "arlington-va",
      +  "greensboro",
      +  "naperville",
      +  "everett",
      +  "san-diego",
      +  "chattanooga",
      +  "orlando",
      +  "tacoma",
      +  "riverside",
      +  "pittsburgh",
      +  "miami-dade",
      +  "marin-county",
      +  "mesa",
      +  "rockford",
      +  "san-antonio",
      +  "dekalb-county",
      +  "denton",
      +  "harris-county",
      +  "st-louis",
      +  "henrico-county"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / city / enum
      Previous value: -[
      -  "los-angeles",
      -  "san-francisco",
      -  "seattle",
      -  "new-york",
      -  "austin",
      -  "philadelphia",
      -  "chicago",
      -  "nashville",
      -  "sacramento",
      -  "boulder",
      -  "las-vegas",
      -  "new-orleans",
      -  "baton-rouge",
      -  "raleigh",
      -  "buffalo",
      -  "cleveland",
      -  "somerville",
      -  "cambridge",
      -  "minneapolis",
      -  "bellevue",
      -  "cary",
      -  "elk-grove",
      -  "anaheim",
      -  "arlington-va",
      -  "greensboro",
      -  "naperville",
      -  "everett",
      -  "chattanooga",
      -  "orlando",
      -  "tacoma",
      -  "riverside",
      -  "pittsburgh",
      -  "miami-dade",
      -  "marin-county",
      -  "mesa",
      -  "rockford",
      -  "san-antonio"
      -]New value: +[
      +  "los-angeles",
      +  "san-francisco",
      +  "seattle",
      +  "new-york",
      +  "austin",
      +  "philadelphia",
      +  "chicago",
      +  "nashville",
      +  "san-jose",
      +  "sacramento",
      +  "boulder",
      +  "las-vegas",
      +  "new-orleans",
      +  "baton-rouge",
      +  "raleigh",
      +  "buffalo",
      +  "cleveland",
      +  "somerville",
      +  "cambridge",
      +  "minneapolis",
      +  "bellevue",
      +  "cary",
      +  "elk-grove",
      +  "anaheim",
      +  "arlington-va",
      +  "greensboro",
      +  "naperville",
      +  "everett",
      +  "san-diego",
      +  "chattanooga",
      +  "orlando",
      +  "tacoma",
      +  "riverside",
      +  "pittsburgh",
      +  "miami-dade",
      +  "marin-county",
      +  "mesa",
      +  "rockford",
      +  "san-antonio",
      +  "st-louis"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / city / enum
      Previous value: -[
      -  "los-angeles",
      -  "san-francisco",
      -  "seattle",
      -  "new-york",
      -  "austin",
      -  "philadelphia",
      -  "chicago",
      -  "nashville",
      -  "sacramento",
      -  "boulder",
      -  "las-vegas",
      -  "new-orleans",
      -  "baton-rouge",
      -  "raleigh",
      -  "buffalo",
      -  "cleveland",
      -  "somerville",
      -  "cambridge",
      -  "minneapolis",
      -  "bellevue",
      -  "cary",
      -  "elk-grove",
      -  "anaheim",
      -  "arlington-va",
      -  "greensboro",
      -  "naperville",
      -  "everett",
      -  "chattanooga",
      -  "orlando",
      -  "tacoma",
      -  "riverside",
      -  "pittsburgh",
      -  "miami-dade",
      -  "marin-county",
      -  "mesa",
      -  "rockford"
      -]New value: +[
      +  "los-angeles",
      +  "san-francisco",
      +  "seattle",
      +  "new-york",
      +  "austin",
      +  "philadelphia",
      +  "chicago",
      +  "nashville",
      +  "sacramento",
      +  "boulder",
      +  "las-vegas",
      +  "new-orleans",
      +  "baton-rouge",
      +  "raleigh",
      +  "buffalo",
      +  "cleveland",
      +  "somerville",
      +  "cambridge",
      +  "minneapolis",
      +  "bellevue",
      +  "cary",
      +  "elk-grove",
      +  "anaheim",
      +  "arlington-va",
      +  "greensboro",
      +  "naperville",
      +  "everett",
      +  "chattanooga",
      +  "orlando",
      +  "tacoma",
      +  "riverside",
      +  "pittsburgh",
      +  "miami-dade",
      +  "marin-county",
      +  "mesa",
      +  "rockford",
      +  "san-antonio"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / city / enum
      Previous value: -[
      -  "los-angeles",
      -  "san-francisco",
      -  "seattle",
      -  "new-york",
      -  "austin",
      -  "philadelphia",
      -  "chicago",
      -  "nashville",
      -  "sacramento",
      -  "boulder",
      -  "las-vegas",
      -  "new-orleans",
      -  "baton-rouge",
      -  "raleigh",
      -  "buffalo",
      -  "cleveland",
      -  "somerville",
      -  "cambridge",
      -  "minneapolis",
      -  "bellevue",
      -  "cary",
      -  "elk-grove",
      -  "anaheim",
      -  "arlington-va",
      -  "greensboro",
      -  "naperville",
      -  "everett",
      -  "chattanooga",
      -  "orlando",
      -  "tacoma",
      -  "riverside",
      -  "pittsburgh",
      -  "miami-dade",
      -  "marin-county",
      -  "mesa",
      -  "rockford",
      -  "san-antonio"
      -]New value: +[
      +  "los-angeles",
      +  "san-francisco",
      +  "seattle",
      +  "new-york",
      +  "austin",
      +  "philadelphia",
      +  "chicago",
      +  "nashville",
      +  "sacramento",
      +  "boulder",
      +  "las-vegas",
      +  "new-orleans",
      +  "baton-rouge",
      +  "raleigh",
      +  "buffalo",
      +  "cleveland",
      +  "somerville",
      +  "cambridge",
      +  "minneapolis",
      +  "bellevue",
      +  "cary",
      +  "elk-grove",
      +  "anaheim",
      +  "arlington-va",
      +  "greensboro",
      +  "naperville",
      +  "everett",
      +  "chattanooga",
      +  "orlando",
      +  "tacoma",
      +  "riverside",
      +  "pittsburgh",
      +  "miami-dade",
      +  "marin-county",
      +  "mesa",
      +  "rockford"
      +]
  5. Changed1 schema field changed
    • changedInput schema / properties / city / enum
      Previous value: -[
      -  "los-angeles",
      -  "san-francisco",
      -  "seattle",
      -  "new-york",
      -  "austin",
      -  "philadelphia",
      -  "chicago",
      -  "nashville",
      -  "sacramento",
      -  "boulder",
      -  "las-vegas",
      -  "new-orleans",
      -  "baton-rouge",
      -  "raleigh",
      -  "buffalo",
      -  "cleveland",
      -  "somerville",
      -  "cambridge",
      -  "minneapolis",
      -  "bellevue",
      -  "cary",
      -  "elk-grove",
      -  "anaheim",
      -  "arlington-va",
      -  "greensboro",
      -  "naperville",
      -  "everett",
      -  "chattanooga",
      -  "orlando",
      -  "tacoma",
      -  "riverside",
      -  "pittsburgh",
      -  "miami-dade",
      -  "marin-county",
      -  "mesa",
      -  "rockford"
      -]New value: +[
      +  "los-angeles",
      +  "san-francisco",
      +  "seattle",
      +  "new-york",
      +  "austin",
      +  "philadelphia",
      +  "chicago",
      +  "nashville",
      +  "sacramento",
      +  "boulder",
      +  "las-vegas",
      +  "new-orleans",
      +  "baton-rouge",
      +  "raleigh",
      +  "buffalo",
      +  "cleveland",
      +  "somerville",
      +  "cambridge",
      +  "minneapolis",
      +  "bellevue",
      +  "cary",
      +  "elk-grove",
      +  "anaheim",
      +  "arlington-va",
      +  "greensboro",
      +  "naperville",
      +  "everett",
      +  "chattanooga",
      +  "orlando",
      +  "tacoma",
      +  "riverside",
      +  "pittsburgh",
      +  "miami-dade",
      +  "marin-county",
      +  "mesa",
      +  "rockford",
      +  "san-antonio"
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / city / enum
      Previous value: -[
      -  "los-angeles",
      -  "san-francisco",
      -  "seattle",
      -  "new-york",
      -  "austin",
      -  "philadelphia",
      -  "chicago",
      -  "nashville",
      -  "sacramento",
      -  "boulder",
      -  "las-vegas",
      -  "new-orleans",
      -  "baton-rouge",
      -  "raleigh",
      -  "buffalo",
      -  "cleveland",
      -  "somerville",
      -  "cambridge",
      -  "minneapolis",
      -  "bellevue",
      -  "cary",
      -  "elk-grove",
      -  "anaheim",
      -  "arlington-va",
      -  "greensboro",
      -  "naperville",
      -  "everett",
      -  "chattanooga",
      -  "orlando",
      -  "tacoma",
      -  "riverside",
      -  "pittsburgh",
      -  "miami-dade"
      -]New value: +[
      +  "los-angeles",
      +  "san-francisco",
      +  "seattle",
      +  "new-york",
      +  "austin",
      +  "philadelphia",
      +  "chicago",
      +  "nashville",
      +  "sacramento",
      +  "boulder",
      +  "las-vegas",
      +  "new-orleans",
      +  "baton-rouge",
      +  "raleigh",
      +  "buffalo",
      +  "cleveland",
      +  "somerville",
      +  "cambridge",
      +  "minneapolis",
      +  "bellevue",
      +  "cary",
      +  "elk-grove",
      +  "anaheim",
      +  "arlington-va",
      +  "greensboro",
      +  "naperville",
      +  "everett",
      +  "chattanooga",
      +  "orlando",
      +  "tacoma",
      +  "riverside",
      +  "pittsburgh",
      +  "miami-dade",
      +  "marin-county",
      +  "mesa",
      +  "rockford"
      +]
  7. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive behavior, so the bar is lower; the description still adds source-of-truth context ('the value stated on the city permit, not the price paid') and a conditional-coverage caveat for ZIP-level results. It does not discuss refresh cadence or how many permits are needed before a figure is published.

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

Conciseness4/5

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

Three sentences, all load-bearing, with the core output description front-loaded before the optional-ZIP note and the source caveat. The opening clause ('What city permits for this kind of work stated as the job value') is slightly awkward to parse, costing a point.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so: median, interquartile ('middle half'), permit count, and dates. Combined with the required-parameter list and enum schema, an agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds real semantic value: the ZIP argument is only meaningful 'where the site publishes one', and the returned figure is explicitly the permit-stated value rather than a market price. That meaning is not in the schema.

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

Purpose4/5

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

The description states a specific resource and measurement ('city permits... stated as the job value: median and middle half, with the number of permits and their dates') plus the source semantics ('the value stated on the city permit, not the price paid'), which implicitly separates it from the quote/estimate siblings. It never names a sibling or an alternative tool, so it stops short of a 5.

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

Usage Guidelines3/5

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

'Give a ZIP to get that ZIP's figure where the site publishes one' is a real usage instruction for the optional parameter, including a coverage caveat. However there is no guidance on when to prefer this over check_solar_quote, solar_estimate, or permit_timeline, so the when-to-use decision is only implied.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources