Skip to main content
Glama
cliwant

mcp-sam-gov

arcgis_feature_query

Read-only

Query US-government ArcGIS feature layers (e.g., DC procurement solicitations, contracts, payments) with SQL-like filters, pagination, and precise match counts. Returns raw attributes and honest metadata.

Instructions

Query rows from a curated US-government ArcGIS REST feature layer (keyless) — the QUERY companion to arcgis_hub_discover_datasets (which discovers Hub datasets). A large amount of SLED procurement/GIS data lives on ArcGIS. First payload: the DC Office of Contracting & Procurement 'PASS' layers — dc_pass_solicitations (DC's LIVE open solicitations, ~25k: SOLICITATIONNUMBER, SOLICITATIONTITLE, DUE_DATE, OPENDATE, CLOSEDATE, NIGPCODE, CONTRACTINGOFFICER, AWARD_TO, 46 fields), dc_pass_contracts (~50k), dc_pass_purchase_orders (~275k), dc_pass_payments (~1.55M). Inputs: service (the allowlist ENUM — the SSRF core, never a free host), where (ArcGIS SQL-ish filter, default '1=1', e.g. "SOLICITATIONTITLE LIKE '%security%'"), outFields (default '*'), orderByFields, limit(1..1000)/offset. Returns { service, records:[{…attributes verbatim…}] } + honest _meta. HONESTY: totalAvailable = the layer's EXACT match count (a returnCountOnly companion query, never the page length; a count failure ⇒ null + note, rows still returned); ★ArcGIS date fields are epoch MILLISECONDS and a negative/sentinel (≈1900) is a placeholder — surfaced verbatim, never coerced; a genuine no-match ⇒ complete:true/returned:0; a 429/5xx/timeout THROWS; an ArcGIS {error} body (e.g. a bad where) ⇒ invalid_input/upstream (surfaced, never a fake empty); a non-array features ⇒ schema_drift. SSRF: fixed allowlist base + hostname assertion + redirect:error (where/outFields cannot alter the host).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoRecords per page (→ resultRecordCount), 1..1000, default 50.
whereNoArcGIS SQL-ish filter (default '1=1'), e.g. "SOLICITATIONTITLE LIKE '%security%'" or "DUE_DATE > 1750000000000". Filters the read-only layer; a malformed clause ⇒ invalid_input (surfaced).
offsetNo0-based offset (→ resultOffset). Page with _meta.pagination.nextOffset; totalAvailable = the layer's exact match count.
serviceYesService key (SSRF allowlist; 29 services). DC OCP PASS (solicitations/contracts/purchase_orders/payments). US local govs: Asheville NC, Bellevue WA, Miami-Dade FL×2, Suffolk County NY, Mat-Su AK, Las Vegas NV×2, Baltimore MD, Naperville IL, Worcester MA, Topeka KS (FY2015–23), Hennepin County MN (CIP pipeline), Charlotte-Mecklenburg NC (CIP pipeline); TX/AK/IA/OK DOT bid/award registers. ND DOT flex-funding to local agencies (nddot_flex×4 — NOT vendor contracts).
outFieldsNoComma-separated fields to return (default '*' = all). e.g. 'SOLICITATIONNUMBER,SOLICITATIONTITLE,DUE_DATE,NIGPCODE'.
orderByFieldsNoArcGIS orderByFields, e.g. 'DUE_DATE DESC'. Optional.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.16.0
    • changedInput schema / properties / service / description
      Previous value: -"Service key (SSRF allowlist; 27 services). DC OCP PASS (solicitations/contracts/purchase_orders/payments). US local govs: Asheville NC, Bellevue WA, Miami-Dade FL×2, Suffolk County NY, Mat-Su AK, Las Vegas NV×2, Baltimore MD, Naperville IL, Worcester MA, Topeka KS (FY2015–23); TX/AK/IA/OK DOT bid/award registers. ND DOT flex-funding to local agencies (nddot_flex×4 — NOT vendor contracts)."New value: +"Service key (SSRF allowlist; 29 services). DC OCP PASS (solicitations/contracts/purchase_orders/payments). US local govs: Asheville NC, Bellevue WA, Miami-Dade FL×2, Suffolk County NY, Mat-Su AK, Las Vegas NV×2, Baltimore MD, Naperville IL, Worcester MA, Topeka KS (FY2015–23), Hennepin County MN (CIP pipeline), Charlotte-Mecklenburg NC (CIP pipeline); TX/AK/IA/OK DOT bid/award registers. ND DOT flex-funding to local agencies (nddot_flex×4 — NOT vendor contracts)."
    • changedInput schema / properties / service / enum
      Previous value: -[
      -  "dc_pass_solicitations",
      -  "dc_pass_contracts",
      -  "dc_pass_purchase_orders",
      -  "dc_pass_payments",
      -  "asheville_purchase_orders",
      -  "asheville_po_summary",
      -  "bellevue_vendor_payments",
      -  "bellevue_awarded_contracts",
      -  "miamidade_purchase_orders_2017",
      -  "miamidade_purchase_orders_2025",
      -  "suffolk_county_ny_contracts_2018",
      -  "matsu_borough_ak_checkbook",
      -  "lasvegas_checkbook",
      -  "baltimore_checkbook",
      -  "naperville_vendor_payments",
      -  "worcester_ma_checkbook_fy25",
      -  "lasvegas_purchasing_contracts",
      -  "txdot_construction_projects",
      -  "akdot_construction_awards",
      -  "akdot_aashtoware_proposals",
      -  "iowadot_public_bid_awards",
      -  "okdot_cirb_contract_status",
      -  "topeka_checkbook_aggregate",
      -  "nddot_flex_setaside_road",
      -  "nddot_flex_partner_road",
      -  "nddot_flex_setaside_bridge",
      -  "nddot_flex_partner_bridge"
      -]New value: +[
      +  "dc_pass_solicitations",
      +  "dc_pass_contracts",
      +  "dc_pass_purchase_orders",
      +  "dc_pass_payments",
      +  "asheville_purchase_orders",
      +  "asheville_po_summary",
      +  "bellevue_vendor_payments",
      +  "bellevue_awarded_contracts",
      +  "miamidade_purchase_orders_2017",
      +  "miamidade_purchase_orders_2025",
      +  "suffolk_county_ny_contracts_2018",
      +  "matsu_borough_ak_checkbook",
      +  "lasvegas_checkbook",
      +  "baltimore_checkbook",
      +  "naperville_vendor_payments",
      +  "worcester_ma_checkbook_fy25",
      +  "lasvegas_purchasing_contracts",
      +  "txdot_construction_projects",
      +  "akdot_construction_awards",
      +  "akdot_aashtoware_proposals",
      +  "iowadot_public_bid_awards",
      +  "okdot_cirb_contract_status",
      +  "topeka_checkbook_aggregate",
      +  "nddot_flex_setaside_road",
      +  "nddot_flex_partner_road",
      +  "nddot_flex_setaside_bridge",
      +  "nddot_flex_partner_bridge",
      +  "hennepin_transportation_cip",
      +  "charlotte_mecklenburg_cip"
      +]
  2. Changed1 schema field changedv1.14.0
    • changedInput schema / properties / service / description
      Previous value: -"The curated ArcGIS layer (SSRF allowlist enum). DC OCP PASS: 'dc_pass_solicitations' (live solicitations ~25k), 'dc_pass_contracts', 'dc_pass_purchase_orders', 'dc_pass_payments'. Other US local govs: 'asheville_purchase_orders'/'asheville_po_summary' (Asheville NC), 'bellevue_vendor_payments'/'bellevue_awarded_contracts' (Bellevue WA), 'miamidade_purchase_orders_2025'/'miamidade_purchase_orders_2017' (Miami-Dade FL, current/2017), 'suffolk_county_ny_contracts_2018' (Suffolk County NY), 'matsu_borough_ak_checkbook' (Matanuska-Susitna Borough AK), 'lasvegas_checkbook' (Las Vegas NV ~373k), 'baltimore_checkbook' (Baltimore City MD ~367k), 'naperville_vendor_payments' (Naperville IL ~127k), 'worcester_ma_checkbook_fy25' (Worcester MA FY25), 'lasvegas_purchasing_contracts' (Las Vegas NV contract register), 'txdot_construction_projects' (Texas DOT, awarded construction company ~85k), 'akdot_construction_awards'/'akdot_aashtoware_proposals' (Alaska DOT&PF bid awards/proposals), 'iowadot_public_bid_awards' (Iowa DOT public bid), 'okdot_cirb_contract_status' (Oklahoma DOT CIRB contract status), 'topeka_checkbook_aggregate' (Topeka KS checkbook FY2015–2023 ~332k), 'nddot_flex_setaside_road'/'nddot_flex_partner_road'/'nddot_flex_setaside_bridge'/'nddot_flex_partner_bridge' (North Dakota DOT federal flex-funding awards to local public agencies — counties/townships/cities, NOT vendor contracts; a proxy because ND's checkbook/procurement portal is not keyless-reachable). 27 curated services (state DOT bid/award registers: TX/AK/IA/OK + ND DOT flex-funding awards + municipal checkbooks/contracts)."New value: +"Service key (SSRF allowlist; 27 services). DC OCP PASS (solicitations/contracts/purchase_orders/payments). US local govs: Asheville NC, Bellevue WA, Miami-Dade FL×2, Suffolk County NY, Mat-Su AK, Las Vegas NV×2, Baltimore MD, Naperville IL, Worcester MA, Topeka KS (FY2015–23); TX/AK/IA/OK DOT bid/award registers. ND DOT flex-funding to local agencies (nddot_flex×4 — NOT vendor contracts)."
  3. Changed1 schema field changedv1.13.1
    • changedInput schema / properties / service / description
      Previous value: -"The curated ArcGIS layer (SSRF allowlist enum). DC OCP PASS: 'dc_pass_solicitations' (live solicitations ~25k), 'dc_pass_contracts', 'dc_pass_purchase_orders', 'dc_pass_payments'. Other US local govs: 'asheville_purchase_orders'/'asheville_po_summary' (Asheville NC), 'bellevue_vendor_payments'/'bellevue_awarded_contracts' (Bellevue WA), 'miamidade_purchase_orders_2025'/'miamidade_purchase_orders_2017' (Miami-Dade FL, current/2017), 'suffolk_county_ny_contracts_2018' (Suffolk County NY), 'matsu_borough_ak_checkbook' (Matanuska-Susitna Borough AK), 'lasvegas_checkbook' (Las Vegas NV ~373k), 'baltimore_checkbook' (Baltimore City MD ~367k), 'naperville_vendor_payments' (Naperville IL ~127k), 'worcester_ma_checkbook_fy25' (Worcester MA FY25), 'lasvegas_purchasing_contracts' (Las Vegas NV contract register), 'txdot_construction_projects' (Texas DOT, awarded construction company ~85k), 'akdot_construction_awards'/'akdot_aashtoware_proposals' (Alaska DOT&PF bid awards/proposals), 'iowadot_public_bid_awards' (Iowa DOT public bid), 'okdot_cirb_contract_status' (Oklahoma DOT CIRB contract status), 'topeka_checkbook_aggregate' (Topeka KS checkbook FY2015–2023 ~332k). 23 curated services (state DOT bid/award registers: TX/AK/IA/OK + municipal checkbooks/contracts)."New value: +"The curated ArcGIS layer (SSRF allowlist enum). DC OCP PASS: 'dc_pass_solicitations' (live solicitations ~25k), 'dc_pass_contracts', 'dc_pass_purchase_orders', 'dc_pass_payments'. Other US local govs: 'asheville_purchase_orders'/'asheville_po_summary' (Asheville NC), 'bellevue_vendor_payments'/'bellevue_awarded_contracts' (Bellevue WA), 'miamidade_purchase_orders_2025'/'miamidade_purchase_orders_2017' (Miami-Dade FL, current/2017), 'suffolk_county_ny_contracts_2018' (Suffolk County NY), 'matsu_borough_ak_checkbook' (Matanuska-Susitna Borough AK), 'lasvegas_checkbook' (Las Vegas NV ~373k), 'baltimore_checkbook' (Baltimore City MD ~367k), 'naperville_vendor_payments' (Naperville IL ~127k), 'worcester_ma_checkbook_fy25' (Worcester MA FY25), 'lasvegas_purchasing_contracts' (Las Vegas NV contract register), 'txdot_construction_projects' (Texas DOT, awarded construction company ~85k), 'akdot_construction_awards'/'akdot_aashtoware_proposals' (Alaska DOT&PF bid awards/proposals), 'iowadot_public_bid_awards' (Iowa DOT public bid), 'okdot_cirb_contract_status' (Oklahoma DOT CIRB contract status), 'topeka_checkbook_aggregate' (Topeka KS checkbook FY2015–2023 ~332k), 'nddot_flex_setaside_road'/'nddot_flex_partner_road'/'nddot_flex_setaside_bridge'/'nddot_flex_partner_bridge' (North Dakota DOT federal flex-funding awards to local public agencies — counties/townships/cities, NOT vendor contracts; a proxy because ND's checkbook/procurement portal is not keyless-reachable). 27 curated services (state DOT bid/award registers: TX/AK/IA/OK + ND DOT flex-funding awards + municipal checkbooks/contracts)."
  4. Addedv1.12.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description independently discloses keyless access, SSRF protections, exact count semantics, epoch-millisecond dates, and specific throwing/error conditions. It also promises 'never a fake empty' and distinguishes schema_drift, far beyond what annotations provide.

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 long, but it is front-loaded with purpose and uses labeled sections (HONESTY, SSRF) and typographic cues to stay scannable. Almost every clause adds operational detail relevant to calling the tool correctly.

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 fully covers return shape (`{service, records, _meta}`), pagination via `_meta.pagination.nextOffset`, count semantics, and all error classes. For a tool of this complexity, nothing essential is missing.

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 already covers all six parameters at 100%, and the description reinforces the critical ones: `service` is called the 'SSRF core, never a free host', `where` gets a syntax example, and pagination is summarized as `limit(1..1000)/offset`. This is above the high-coverage baseline, though it partly restates schema text rather than adding wholly new meaning.

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+resource: 'Query rows from a curated US-government ArcGIS REST feature layer' and names the sibling it complements (arcgis_hub_discover_datasets). It also enumerates concrete layer names and fields, making the tool's scope unmistakable.

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

Usage Guidelines4/5

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

Positions this as 'the QUERY companion' to the discover tool and gives domain context (SLED procurement/GIS on ArcGIS), so it is clear when to call it vs. discovery. It does not explicitly discuss unrelated query siblings like socrata_query/ckan_query, but the ArcGIS-specific scope is stated in the first line.

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

Deploy Server

Other Tools