Skip to main content
Glama
xmpuspus

ph-civic-data-mcp

by xmpuspus

Search infrastructure notices

search_infra_projects
Read-onlyIdempotent

Search Philippine government infrastructure projects from PhilGEPS data. Filter by region, keyword, status, province, or minimum cost to find construction, road, bridge, flood control, and school building projects.

Instructions

Search Philippine government infrastructure projects.

Backed by PhilGEPS open notice listing filtered for infra-related work (construction / road / bridge / flood control / drainage / school building / civil works). Source: https://www.philgeps.gov.ph/. Approved budget amounts are not published in the open notice listing, so cost_php is null in most records. min_cost_php almost never matches, because the open listing omits approved budget for nearly every record. The DPWH transparency portal API is currently blocked by Cloudflare and not used. Examples:

search_infra_projects(keyword="flood control") search_infra_projects(region="ncr") search_infra_projects(min_cost_php=100_000_000)

On failure: returns {results: [], upstream_error: true, data_status: "unavailable", caveats: [...]} instead of a bare list, with the real upstream error in caveats. This tool never checks an argument before the PhilGEPS fetch runs, so validation_error is always false.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
yearNoFilter publish date to this calendar year. Excludes records with no publish date, so a year filter never returns an undated record.
limitNoMax results (default 25, capped at 100).
regionNoPH region filter (partial match against agency text).
statusNoStatus filter (partial match, e.g. 'open', 'awarded').
keywordNoTitle/agency substring (e.g. 'flood control', 'bridge').
provinceNoProvince name filter (partial match).
min_cost_phpNoMinimum approved cost in PHP. The open notice listing does not publish approved budget for almost any record, so setting this today returns few or no results rather than a true cost-ranked subset.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.8.0
    • changedInput schema / properties / min_cost_php / description
      Previous value: -"Minimum approved cost in PHP (filters out null-cost\n          records when set)."New value: +"Minimum approved cost in PHP. The open notice listing\n          does not publish approved budget for almost any\n          record, so setting this today returns few or no\n          results rather than a true cost-ranked subset."
    • changedInput schema / properties / year / description
      Previous value: -"Filter publish date to this calendar year."New value: +"Filter publish date to this calendar year. Excludes records\n  with no publish date, so a year filter never returns an\n  undated record."
  2. Changed3 schema fields changedv0.5.0
    • addedOutput schema / properties / result / anyOf
      Added value: +[
      +  {
      +    "items": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / result / items
      Removed value: -{
      -  "additionalProperties": true,
      -  "type": "object"
      -}
    • removedOutput schema / properties / result / type
      Removed value: -"array"
  3. Addedv0.4.0

TDQS

A4.7/5.0
Behavior5/5

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

Clearly discloses limitations: cost_php is usually null, min_cost_php almost never matches, the upstream DPWH API is blocked, and validation_error is always false. Also states the exact failure return shape, so agents know what to expect.

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 summary is front-loaded and the examples are useful, but the budget caveat is stated twice in slightly different words, adding minor redundancy. Overall it remains appropriately sized.

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?

The description covers source, filtering scope, parameter caveats, failure behavior, and usage examples. With a full input schema and output schema present, nothing critical is missing for correct invocation.

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

Parameters5/5

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

All seven parameters are described with matching schema types, defaults, and matching semantics (partial match, exclusion of undated records, cap on limit). The min_cost_php caveat is reinforced in the description.

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 precise one-line summary: 'Search Philippine government infrastructure projects.' The scope, data source, and filtering logic (infra-related work categories) are all stated, so an agent immediately knows what the tool returns.

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?

Provides concrete invocation examples and key caveats (budget data missing, DPWH API blocked, failure object). It does not explicitly contrast with sibling search tools, but the scope and examples make intended usage clear.

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