Skip to main content
Glama
Panda Federation Tools

Panda Federation Tools

Building Permit Leads: New Permits, Contractors & Job Values

building_permit_leads
Read-only

Pull newly issued US building permits by city, trade, date, or value to find fresh contractor jobs, supplier leads, and competitor activity from eight city open-data portals.

Instructions

Pull newly issued building permits from 8 US city open-data portals (NYC, Los Angeles, Chicago, San Francisco, Seattle, Austin, New Orleans, Cambridge) with address, work description, trade category, declared job value, contractor and owner where the city publishes them. Unlike local_business_leads (existing OpenStreetMap shops) and florida_new_business_leads / texas_new_business_leads (new company registrations), this is project-level construction activity. Use when contractors, solar/roofing/HVAC installers, suppliers or lenders need fresh jobs or want to track a competitor's permits. Do not use for cities outside the 8 listed, for property ownership records or for inspection history. Parameters: cities picks portals (contractor names are published by Chicago, NYC, Austin, Seattle, New Orleans and Cambridge only, so requireContractor drops the other cities); categories and keywords narrow by permit type/description; issuedFrom/issuedTo override daysBack; minValue drops permits with no declared value; sortBy=value with maxResults returns the biggest jobs first; maxResults caps billed permits. Runs with no matching permits are free. Returns per item: agentSummary, permitNumber, permitType, workType, description, status, appliedDate, issuedDate, address, zip, city, state, estimatedCost, contractorName, contractorTrade, contractorPhone, ownerName, applicantName, categories, latitude, longitude, permitUrl, sourceDataset; plus PERMITS_XLSX (with Contractors sheet)/CSV.

Behavior: read-only; runs the Apify Actor pandadad0214/building-permit-leads (https://apify.com/pandadad0214/building-permit-leads) on your own Apify account. Price: $0.0015 per permit returned. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "building_permit_leads"
  }
}

Input Schema

NameRequiredDescriptionDefault
citiesNoCities. Official city open-data portals to search.
sortByNoSort by. Order before the maximum is applied. Choices: newest = Newest first; value = Highest job value first.newest
daysBackNoIssued in the last N days. Default 14. Use 1 or 7 on a daily or weekly schedule.
issuedToNoIssued on or before. Optional YYYY-MM-DD.
keywordsNoKeywords (any). Comma-separated words matched in the permit type and description, e.g. generator, kitchen, restaurant, warehouse.
minValueNoMinimum job value ($). Declared job value on the permit. Permits without a value are left out when set.
categoriesNoTrade categories. Keep permits whose type or description matches. Empty = all permits.
issuedFromNoIssued on or after. Optional YYYY-MM-DD; overrides days back.
maxResultsNoMaximum results. You pay per permit returned, so this also caps the cost. Default 200.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
requireContractorNoOnly permits that name a contractor. Contractors are published by Chicago, NYC, Austin, Seattle, New Orleans and Cambridge.
contractorContainsNoContractor name contains. Track one contractor or competitor, e.g. Sunrun.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.7.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare read-only/open-world; the description goes far beyond by disclosing billing ($0.0015 per permit returned), that empty runs are not charged per result, the run_max_charge_usd spend cap, the interaction between run_max_items and maxResults (setting maxResults higher can bill more than is returned), and expected latency (5-15s typical, up to 300s timeout). It also names the underlying Actor and that it runs on the caller's own Apify account — exactly the operational context an agent needs before spending money.

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?

Purpose and the sibling differentiation are front-loaded, and every section (capabilities, exclusions, parameters, behavior, output) is present. It is dense and somewhat run-on — the parameter paragraph largely repeats schema text — but the size is justified by a 14-parameter, pay-per-result tool.

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

Completeness5/5

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

There is no output schema, and the description compensates by enumerating the returned fields per item, the JSON envelope {actor, count, items}, the XLSX/CSV export including a Contractors sheet, and the trimming of long text output. For a 14-parameter, zero-required, metered tool with no required inputs, an agent has everything needed to call it safely.

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 100%, so the baseline is 3; the description earns more by explaining cross-parameter behavior the schema cannot: issuedFrom/issuedTo override daysBack, requireContractor silently drops cities that do not publish contractors, sortBy=value combined with maxResults returns the biggest jobs first, and minValue excludes permits with no declared value. It stops short of 5 only because several parameter explanations restate what the schema already says.

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?

Opens with a specific verb and resource ('Pull newly issued building permits from 8 US city open-data portals') and enumerates the exact cities and fields. It explicitly distinguishes itself from three named siblings (local_business_leads for OSM shops, florida/texas_new_business_leads for company registrations), framing itself as project-level construction activity so an agent can route without opening any schema.

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?

Gives positive triggers (contractors, solar/roofing/HVAC installers, suppliers, lenders needing fresh jobs, tracking a competitor) and explicit exclusions ('Do not use for cities outside the 8 listed, for property ownership records or for inspection history'). It also names the sibling alternatives to use instead, leaving nothing to inference.

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