Skip to main content
Glama

Philippine Legal & Compliance MCP — ph-compliance-mcp

The source-of-truth retrieval layer for Philippine law and compliance, over Model Context Protocol (MCP). Statutes · Jurisprudence · Government Issuances (NGA / LGU / GOCC) — retrieval-grounded, citation-verified, version-aware, provenance-checked. Never a guesser.

MCP TypeScript Node SQLite FTS5 License: Apache 2.0 Checksums

ph-compliance-mcp gives any MCP-capable agent (Claude, OpenCode, Cline, and others) grounded, citable answers about Philippine law and regulatory compliance — instead of an LLM's parametric (and frequently wrong) recollection of PH law.

  • Legal: 1987 Constitution, Civil Code, Revised Penal Code, Labor Code, Family Code, Rules of Court, and the full body of Republic Acts, Presidential Decrees, and Executive Orders.

  • Compliance & business: corporate/commercial law, transactional and contracts, accounting & auditing, payroll & benefits (SSS, PhilHealth, Pag-IBIG, 13th month pay), and human-resources/workplace compliance (DOLE).

  • Government issuances: memorandums and circulars of National Government Agencies (NGA), Local Government Unit (LGU) issuances and ordinances, and Government-Owned and Controlled Corporation (GOCC) rules.

  • Jurisprudence: Supreme Court and appellate decisions, with a citations knowledge graph connecting cases and statutes.

⚠️ Not legal advice. This is an information-retrieval and citation layer, not a lawyer, judge, or source of legal counsel. See DISCLAIMER.md.


Why this MCP stands out

Capability

ph-compliance-mcp

Typical PH-law MCPs

Corpus provenance

SHA-256 checksums per asset, verified on load; refuses on mismatch

Often static bundled snapshots

Version-aware law

valid_from/valid_until provisions + amendments log; show_amendments, show_history tools

Current-text only

Citations knowledge graph

related_laws, related_cases, show_dependencies, show_citations — only resolved edges

None

No-synthesis guarantee

Below confidence threshold → insufficient_corpus_coverage, never a guess

Varies

Coverage breadth

Laws + cases + NGA/LGU/GOCC issuances across 15 compliance domains

Statutes only, typically

Freshness signal

list_domains reports corpus refresh timestamps per domain

None

See docs/marketplace/mcpmarket.md for the full competitive positioning, and the research-backed source list in docs/sources.md.


Related MCP server: Zambian Law MCP Server

Quick start

Requirements

  • Node.js 24+ (pnpm recommended)

Install (local stdio MCP server)

{
  "mcpServers": {
    "ph-compliance": {
      "command": "npx",
      "args": ["-y", "github:andreibrosmaster/ph-compliance-mcp"]
    }
  }
}

Corpus assets (laws/cases/issuances SQLite + .sha256 checksums) download and verify on first run, cached under ~/.cache/ph-compliance-mcp.

Run from source

pnpm install
pnpm dev            # stdio server (tsx)
pnpm inspector      # MCP Inspector UI

Build the corpus from seed data

The repository ships a version-controlled seed corpus (data/seed/*.jsonl — 20 statutes, 4 agency issuances, 3 landmark cases across all 15 compliance domains), authored from primary sources by scripts/generate-seed.mjs:

pnpm seed            # regenerate data/seed/*.jsonl (idempotent)
pnpm build:corpus    # build dist/corpus from data/seed (defaults)

The golden eval gate (pnpm eval:all) is passable against this seed: every golden QA pair's plan retrieves its answer from the seeded corpus, and tests/golden/dataset-coverage.test.ts locks that seed↔golden coupling so it cannot silently drift.

The [citations] pass then populates the knowledge graph (--no-citations to skip). Live ingestion from official sources (CI-only, robots-respecting, throttled):

pnpm build:corpus -- --sources official-gazette,lawphil --out dist/corpus

Every instrument is catalogued first (data-pipeline/catalog.ts, 40+ instruments across all 15 domains); adapters only fetch what the catalog declares — nothing is ingested that isn't catalogued, and nothing is ever fabricated.


Tools

Tool

Purpose

search_statute

Full-text search over statutes/provisions (FTS5/BM25, confidence-gated)

get_provision

Retrieve one provision with citation + source

search_jurisprudence

Full-text search over case decisions

get_case

Retrieve a case with passages and citation

search_issuance

Search government issuances (NGA/LGU/GOCC)

get_issuance

Retrieve one issuance

cite_validate

Validate/parse a Philippine citation

list_domains

15-domain taxonomy + corpus freshness

related_laws

Statutes cited by a case (graph)

related_cases

Cases sharing cited statutes (graph)

show_amendments

Amendment log of a statute

show_history

Version history of a provision

show_dependencies

Law→law dependency edges

show_citations

Citations made by a case

show_implementing_rules

IRR references for a statute

show_cross_references

Domain cross-references + graph edges

compute_prescription

Deterministic prescriptive-period calculator (Civil Code Arts. 1144–1149)

compute_deadline

Deterministic filing-deadline calculator (Rules of Court Rule 22 + 37/41/45/65)

compute_13th_month

Deterministic 13th-month-pay calculator (PD 851)

Resources

  • ph-compliance://domains — taxonomy + freshness

  • ph-compliance://statute/{statute} — statute metadata + provision list


Coverage: 15 compliance domains

Domain

Key instruments

Constitutional

1987 Constitution

Civil

Civil Code (RA 386)

Family

Family Code (EO 209)

Criminal

Revised Penal Code (Act 3815), special penal laws

Tax

National Internal Revenue Code (RA 8424), BIR issuances

Labor

Labor Code (PD 442)

Commercial/Corporate

Revised Corporation Code (RA 11232), SRC

Business & Transactional

Contracts, sales, agency, Negotiable Instruments (Act 2031), EODB (RA 11032)

Accounting & Auditing

Accountancy Act (RA 9298), PFRS, COA audit rules

Payroll & Benefits

13th month pay (PD 851), SSS (RA 11199), PhilHealth (RA 11223), Pag-IBIG (RA 9679)

HR & Workplace Compliance

Labor Code standards, OSH (RA 11058), DOLE issuances

Remedial

Rules of Court

Administrative

Administrative Code (EO 292), civil-service rules, NGA memorandums

Local Government

Local Government Code (RA 7160), LGU issuances

Special/Cross-cutting

Data Privacy Act (RA 10173), EODB, consumer protection (RA 7394)


AI agent integrations

ph-compliance-mcp is a standard stdio MCP server — connect any MCP-capable AI coding agent. Client-specific setup (as of August 2026):

Client

Config

Guide

Claude Code

.mcp.json / claude mcp add

docs/agents/claude-code.md

OpenAI Codex CLI

config.toml / codex mcp add

docs/agents/codex.md

OpenCode

opencode.json mcp block

docs/agents/opencode.md

Cline (VS Code)

mcp_settings.json

docs/agents/cline.md

Cursor

.cursor/mcp.json / cursor mcp add

docs/agents/cursor.md

The universal config (any client): command node, args ["/abs/path/ph-compliance-mcp/dist/src/server.js"]. See docs/agents/README.md. Each tool returns BOTH human-readable text and machine-parseable structuredContent, so agents can use results in downstream automation.

Use cases

From contract review and employment compliance to tax, payroll, procurement, litigation deadlines, and NGA/LGU/GOCC issuance research — see docs/usecases.md for ready-to-paste prompts across all 15 domains.

Enterprise

Shared/verified corpus deployment, air-gapped operation, hardening, an operations runbook, and a legal-review workflow: see docs/enterprise.md. The eval harness (pnpm eval) is the release gate — see evals/README.md. Security and contribution policies: SECURITY.md, CODE_OF_CONDUCT.md.

Docker

A multi-stage Dockerfile ships a slim runtime image (no build toolchain, no ports — MCP over stdio) with a built-in HEALTHCHECK and pre-wired air-gapped corpus mount (PH_COMPLIANCE_LOCAL_CORPUS=/corpus):

docker build -t ph-compliance-mcp .
docker compose up --build -d     # see compose.yaml

Operations & releases

  • docs/operations.md — post-production runbook: monitoring (pnpm healthcheck, pnpm check:freshness), backup/restore, upgrades, incident response, disaster recovery, weekly maintenance cadence.

  • docs/release.md — code (v0.12.0) vs corpus (corpus-YYYY.MM.DD) versioning, release gates (eval is release-blocking), rollback, post-release checklist.

  • docs/governance.md — contribution model: branch protection, CODEOWNERS mandatory reviews, Dependabot, CI/release gates.

  • Corpus builds are version-stamped: build-index.ts writes manifest.json (per-corpus SHA-256, record counts, sources) into the output dir; the weekly refresh-corpus.yml publishes it alongside the sqlite assets.

Design constraints (non-negotiable)

  1. No synthesis without citation — every tool response carries a structured citation resolved against the corpus; below the confidence threshold the tool returns "insufficient corpus coverage," never a best-effort guess.

  2. Information retrieval, not legal advice.

  3. Primary sources over commentary — codal text and decisions, not summaries.

  4. Version-aware, not just current-aware — amendments/repeals/supersessions tracked.

  5. Provenance on everything ingested — URL, retrieval date, content hash.

Corpus integrity

Every corpus asset ships with a .sha256 checksum (wired in CI from day one). corpus-loader.ts verifies each asset before caching and refuses to load on mismatch — a corrupted or tampered corpus fails loudly, never silently.

Repository map

  • docs/adr/ — architecture decision records (ADR-000 scope; ADR-004 rename)

  • docs/sources.md — authoritative PH legal data sources (research-backed)

  • docs/seo.md — how this repo is indexed by search engines and LLMs (GEO)

  • docs/marketplace/mcpmarket.md — competitive positioning

  • docs/agents/ — per-client setup guides (Claude Code, Codex, OpenCode, Cline, Cursor)

  • docs/enterprise.md — enterprise deployment & operations

  • docs/operations.md — post-production runbook (monitoring, backup, DR)

  • docs/release.md — release process (code + corpus versioning, gates)

  • docs/usecases.md — use-case catalog with ready-to-paste prompts

  • Dockerfile / compose.yaml — containerized stdio server (air-gapped corpus)

  • scripts/healthcheck.mjs, scripts/check-freshness.mjs — ops probes

  • src/db/schema/ — SQLite schemas: laws, cases, issuances

  • src/domains/ — 15 domain modules with metadata + cross-references

  • data-pipeline/ — ingestion: catalog → adapters → normalizers → chunkers → build

  • data-pipeline/catalog.ts — the instrument catalog (ingestion manifest)

  • src/ — server, retrieval, tools, resources

  • evals/ — golden sets + working run-eval.ts harness

  • llms.txt — AI-discoverable index of this repository

The roadmap lives in the project's second brain: ../second-brain/roadmap.md. Current state: ../second-brain/state.md.

For AI agents and crawlers

See llms.txt for a machine-readable index of this repository, and docs/seo.md for the GEO/SEO strategy. This README is written to be parseable by both humans and LLMs: precise, keyword-rich, and factual — no marketing fluff that dilutes ground truth.

License & disclaimer

Apache-2.0 licensed. ph-compliance-mcp is an information-retrieval tool, not a source of legal advice — verify anything you rely on against the official source. See DISCLAIMER.md and LICENSE.


Frequently asked questions

Is this a replacement for a lawyer? No. It is a retrieval layer that cites primary sources. It refuses to guess below a confidence threshold.

Which sources are ingested? Primary sources only — Official Gazette, LawPhil, SC E-Library, and agency repositories (BIR, DOLE, CSC, DBM, COA, SSS, PhilHealth, Pag-IBIG, DTI, and more). See docs/sources.md.

How is accuracy guaranteed? Every response carries a structured citation resolved against the corpus; content hashes and SHA-256 checksums protect corpus integrity; version-aware provisions track amendments.

Can it answer payroll/compliance questions? Yes — payroll, benefits, accounting, HR, and business-transactional domains are first-class citizens, not afterthoughts.

How does it differ from a static PH-law MCP? Live-corpus refresh cadence, provenance verification, version-aware history, a citations knowledge graph, and a no-guess guarantee.

Available Tools

19 tools
cite_validateValidate a legal citation against the corpusA
Read-onlyIdempotent

Resolve a citation against the corpus and return the exact matching text. If the citation cannot be resolved, it returns a clear 'cannot validate' verdict — it never fills in plausible text. Use this before relying on any AI-generated citation.

ParametersJSON Schema
NameRequiredDescriptionDefault
statuteNoStatute short title, e.g. 'Civil Code of the Philippines'
provisionNoProvision number, e.g. '1156'
caseCitationNoCase citation, e.g. 'G.R. No. 238875'

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
citationYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds a crucial behavioral guarantee: it 'never fills in plausible text' when resolution fails, which is a key trust signal beyond the annotations. This adds meaningful context without contradicting 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.

Conciseness5/5

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

Two sentences, zero waste. The core action is front-loaded ('Resolve a citation...'), and the critical behavior (no fabrication) is stated immediately after. It is compact and well-structured, with every word earning its place.

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?

The tool is simple (3 optional params, output schema exists), so the description need not explain return format. It covers the main behavior, the failure mode, and a usage context. It does not mention parameter interplay or edge cases, but these are minor given the schema and output schema coverage. Overall, it is sufficiently complete for an agent to call it correctly.

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%, so all parameters are already documented with examples. The description adds no additional parameter-level meaning, which aligns with the baseline of 3 when the schema handles the heavy lifting. It neither enriches nor detracts from the schema.

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?

The description clearly states the tool's function: it resolves a citation against the corpus and returns exact matching text or a 'cannot validate' verdict. It distinguishes itself from sibling search/get/compute tools by focusing on validation rather than discovery or calculation. The verb 'resolve' and resource 'citation against the corpus' make the purpose unambiguous.

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?

The description provides a clear when-to-use directive: 'Use this before relying on any AI-generated citation.' This gives actionable context. However, it does not explicitly mention alternatives or exclusions (e.g., when to use search_statute instead), so it falls short of a 5 but earns a 4 for a strong contextual cue.

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

compute_13th_monthCompute 13th-month pay under PD 851A
Read-onlyIdempotent

Deterministic 13th-month-pay calculator under PD 851 (as amended by Memorandum Order No. 28 and the Rules Implementing PD 851). Computes total basic salary earned within the calendar year ÷ 12 for rank-and-file employees (pro-rated automatically for partial-year service), and returns coverage/exclusion notes plus the payment deadline (on or before December 24). Verify the rule text and current DOLE advisories with the corpus before relying on it. Not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
totalBasicSalaryYesTotal basic salary earned within the calendar year (PHP). For an employee who did not work the full year, pass the amount actually earned during the months worked — the formula divides the year's earned basic salary by 12, which pro-rates automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
amountYes
statusYes

TDQS

A4.5/5.0
Behavior5/5

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

The description adds significant behavioral context beyond the annotations: it states the computation is 'deterministic,' describes automatic pro-rating, and discloses that the tool returns coverage/exclusion notes plus the payment deadline. It also warns that the result should be verified, which sets accurate expectations about the tool's reliability. No contradiction with the readOnlyHint, idempotentHint, or destructiveHint annotations.

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

Conciseness5/5

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

The description is information-dense and front-loaded: the first sentence states the formula and scope, the second covers outputs and deadline, and the third adds necessary legal caveats. Every sentence contributes distinct value, and there is no filler or repetition of schema details.

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?

For a single-parameter calculator with a full input schema and an output schema, the description is complete: it explains the formula, pro-rating, output contents, deadline, and the need to verify underlying legal texts. The presence of an output schema means return-value details do not need to be restated. The caveat about DOLE advisories also addresses the contextual risk of relying on the computation.

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?

The schema already provides 100% description coverage for the single parameter, including the definition of totalBasicSalary and the pro-rating behavior. The description reinforces the same meaning by stating the formula and the '÷ 12' operation, but it does not add meaning beyond what the schema already explains. A baseline of 3 is appropriate because the schema carries the parameter documentation burden.

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?

The description names a specific verb ('Computes') and resource ('13th-month-pay calculator under PD 851') and states the formula: total basic salary earned within the calendar year ÷ 12. It clearly differentiates itself from sibling compute tools like compute_deadline and compute_prescription by focusing on a specific statutory calculation.

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?

The description clearly indicates when to use the tool: for deterministic 13th-month-pay calculations under PD 851, including pro-rating for partial-year service. It also provides cautionary usage guidance by saying 'Verify the rule text and current DOLE advisories with the corpus before relying on it' and 'Not legal advice.' It does not explicitly name alternative tools or exclusion conditions, but the context is clear.

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

compute_deadlineCompute a filing deadline under the Rules of CourtA
Read-onlyIdempotent

Deterministic filing-deadline calculator under the Rules of Court. Applies Rule 22 computation of time (exclude the first day, include the last; last day on a Saturday, Sunday, or legal holiday runs to the next working day) to the common reglementary periods (Rule 37, Rule 41, Rule 45, Rule 65). Pass legal holidays as ISO dates — they are declared per year by proclamation, so never assume the calendar. Verify the rule text with get_provision or cite_validate before relying on it. Not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
holidaysNoISO dates of legal holidays (national holidays are declared per year by proclamation)
filingTypeYesWhich reglementary period to compute
noticeDateYesISO date (YYYY-MM-DD) of notice of the judgment, order, or resolution
extensionDaysNoExtra days for appeal_certiorari_sc (Rule 45 §2, max 30)

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
lastDayYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses deterministic behavior, the exact exclusion/inclusion rule, the handling of weekends and holidays, and the critical dependency on caller-supplied holidays. The warning never to assume the calendar and the 'not legal advice' disclaimer add meaningful behavioral context not present in structured metadata.

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

Conciseness5/5

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

Four sentences, each carrying distinct information: definition, computation rule, parameter guidance, and verification advice. The most important purpose statement is front-loaded, and there is no redundant or filler content.

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?

For a legal calculator with a rich output schema and full annotations, the description covers the operative rule, scope, parameter semantics, and reliability caveats. It is sufficient for an agent to select the tool, populate parameters correctly, and interpret the result's authority.

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 schema already documents all parameters. The description adds value by explaining that holidays must be supplied as ISO dates because national holidays are declared per year by proclamation, and by associating the enum options with specific rules of court. This contextualizes the parameters without repeating schema details.

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?

The description states a specific function (filing-deadline calculator), names the legal basis (Rule 22), and enumerates the covered reglementary periods (Rules 37, 41, 45, 65). This clearly distinguishes it from sibling calculators like compute_prescription and compute_13th_month.

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?

The description gives clear context for when the tool applies (deadline computation under the Rules of Court) and explicitly advises verifying rule text with get_provision or cite_validate. It does not explicitly contrast itself with compute_prescription or compute_13th_month, but the domain framing makes the appropriate use obvious.

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

compute_prescriptionCompute a prescriptive period under the Civil CodeA
Read-onlyIdempotent

Deterministic prescriptive-period calculator under Civil Code Arts. 1144-1149 (RA 386). Pick the class of action to get the codal period in years, the exact article, and — if a cause-of-action date is given — the computed deadline. The computation is arithmetic over the cited articles; verify the codal text with get_provision or cite_validate before relying on it, and note that interruption (Art. 1155) can extend the deadline in practice. Not legal advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionTypeYesClass of action; 'other' uses the Art. 1149 residual period
causeOfActionDateNoISO date (YYYY-MM-DD) the right of action accrued, to compute the deadline

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearsYes
statusYes
articleYes
categoryYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and idempotentHint annotations, the description discloses that the tool is deterministic, computes arithmetic over cited articles, may not reflect real-world interruption, and is not legal advice. This meaningfully adds behavioral context the annotations do not provide.

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

Conciseness5/5

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

The description is three sentences with no wasted words, front-loads the core purpose, and packs the caveats and routing into the remaining sentences. Every sentence earns its place.

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?

For a tool with two parameters, an output schema, and clear annotations, the description is complete: it explains what the tool returns, how to invoke it, what to verify, and what limitations apply. An agent can select and call it correctly without needing additional clarification.

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?

The schema already covers all parameters at 100%, but the description adds functional meaning: actionType selects the class of action yielding a codal period in years and the exact article, while causeOfActionDate is used to compute the deadline. This goes beyond mere schema labels and helps the agent understand how parameters drive the computation.

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?

The description states a specific verb and resource: it computes a prescriptive period under Civil Code Arts. 1144-1149 (RA 386). It clearly distinguishes itself from sibling tools like compute_deadline and compute_13th_month by naming the exact legal domain and the calculation approach.

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?

The description explicitly tells the agent to pick a class of action, optionally provide a cause-of-action date, and explains what outputs follow. It also names get_provision and cite_validate as verification alternatives and warns that interruption under Art. 1155 can affect the result, giving a clear when-to-use and when-to-caveat context.

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

get_caseGet a caseA
Read-onlyIdempotent

Return a case by citation (e.g. 'G.R. No. 238875') with metadata and the first passages of the decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax passages to return (default 20)
citationYesCase citation, e.g. 'G.R. No. 238875'

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
statusYes
citationYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds that it returns metadata and the first passages of the decision, which is useful contextual behavior. No contradictions or additional behavioral details like pagination, which is handled by the output schema and limit parameter.

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

Conciseness5/5

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

The description is a single concise sentence, front-loading the resource and key method (citation). It includes a concrete example and mentions the output format, with no extraneous words.

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?

Given an output schema exists (which would detail metadata and passages), the description provides sufficient information to call the tool correctly: it names the required parameter (citation), explains the return content, and the limit parameter is defined in the schema. Annotations cover safety. Nothing essential is missing.

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 both citation and limit already documented in the input schema (including the example and default). The description does not add extra parameter semantics; it merely reinforces the citation format. The high coverage baseline of 3 applies.

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?

The description clearly states the tool returns a case by citation, with metadata and decision passages. This distinguishes it from sibling tools like search_jurisprudence (search-based) and get_provision (specific provision), so an agent can accurately select it when a citation is known.

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?

The description implies usage when a citation is available, but does not explicitly contrast with search tools or state when not to use it. It lacks guidance on alternatives, though the mention of 'by citation' provides some context. This is functional but not explicit.

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

get_issuanceGet an agency issuanceA
Read-onlyIdempotent

Return an issuance by agency + reference number (e.g. 'BIR' / 'RMC 85-2023') with metadata and the first passages of the document.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax passages to return (default 20)
agencyYesAgency code, e.g. 'BIR'
referenceNoYesReference number, e.g. 'RMC 85-2023'

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
statusYes
referenceNoYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds meaningful behavioral detail beyond that: it returns metadata and only the first passages rather than the full document. There is no contradiction with 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.

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It states the purpose, the required lookup keys, gives examples, and notes the output scope in one efficient pass.

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?

Given a fully documented input schema, a present output schema, and annotations that cover safety semantics, the description is sufficiently complete. The only non-obvious behavioral limitation—that only the first passages are returned—is explicitly stated.

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?

The input schema already documents all three parameters with examples and the default/max for limit, so the schema carries the full load. The description repeats the same examples but adds no new semantic information about parameter format or constraints.

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?

The description names a specific verb ('Return'), a concrete resource ('issuance'), and the exact lookup key ('agency + reference number'). It also clarifies the result includes metadata and only the first passages, which separates it from sibling tools like search_issuance and get_provision even without naming them.

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?

The description clearly communicates when to use the tool: when you already have an agency code and reference number and want the issuance's metadata and opening passages. It does not explicitly name alternatives or say 'use search_issuance when the reference is unknown,' so it stops short of a 5, but the context is unambiguous.

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

get_provisionGet a statute provisionA
Read-onlyIdempotent

Return the exact text of a provision (e.g. Civil Code Art. 1156) with its current status. Version-aware: reports amended/repealed/superseded status when the corpus tracks it.

ParametersJSON Schema
NameRequiredDescriptionDefault
statuteYesStatute short title, e.g. 'Civil Code of the Philippines'
provisionYesProvision number, e.g. '1156' or 'Art. 1156'

Output Schema

ParametersJSON Schema
NameRequiredDescription
bodyYes
statusYes
citationYes
provisionNoYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish read-only/idempotent/non-destructive behavior. The description adds a useful behavioral detail beyond those annotations: the tool is version-aware and reports amended/repealed/superseded status when the corpus tracks it, including a caveat about corpus coverage.

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

Conciseness5/5

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

Two focused sentences with the core action first and the version-aware qualification second. There is no filler or repetition.

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?

Given only two required parameters, a complete output schema, and annotations covering safety semantics, the description provides everything needed to invoke and interpret the result. The corpus-tracking caveat is an honest boundary condition.

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% and both parameters are already explained in the input schema. The description's example illustrates how the parameters combine but does not add materially new meaning beyond 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 uses a specific verb and resource ('Return the exact text of a provision') and gives a concrete example. It is clear about returning current status, but it does not explicitly differentiate itself from siblings like show_amendments or show_history.

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?

There is no explicit when-to-use guidance or exclusion of alternatives. The wording implies the tool is for retrieving exact provision text and status, but it does not tell an agent to prefer show_amendments or show_history for historical views.

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

list_domainsList law domains and corpus freshnessA
Read-onlyIdempotent

Enumerate the 15-domain compliance taxonomy (ADR-000 core + ADR-004 expansion) with corpus refresh timestamps, so callers can check freshness before trusting retrieval results.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
statusYes
domainsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so no contradiction. The description adds value by revealing the taxonomy source (ADR-000 + ADR-004) and the corpus freshness context, which helps an agent understand what data is being returned beyond the raw schema.

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

Conciseness5/5

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

A single sentence that front-loads the primary action and resource, then immediately explains the practical purpose. No filler or redundant content; every clause earns its place.

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 tool is simple with no parameters, has a rich output schema, and annotations cover safety. The description fully covers the calling intent and freshness-check use case, making it complete for an agent to invoke 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?

The tool has zero parameters, so there is no parameter semantics to clarify. Baseline for 0 params is 4; the description correctly focuses on output behavior instead of parameter details.

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?

The description uses a specific verb ('Enumerate') with a clear resource ('15-domain compliance taxonomy') and adds detail (ADR-000 core + ADR-004 expansion) that distinguishes it from all sibling tools, which perform searches, lookups, computations, or relationship traversal.

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?

The description provides a clear use case: check corpus refresh timestamps before trusting retrieval results. It does not explicitly name alternative tools or when not to use it, but the purpose is specific enough that an agent can infer appropriate usage.

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

search_issuanceSearch agency issuancesA
Read-onlyIdempotent

Lexical (FTS5/BM25) search over the administrative issuance corpus (BIR first, Phase 3). Information retrieval, not legal advice. Below confidence threshold it reports insufficient corpus coverage rather than guessing.

Pagination: use offset to page; check hasMore/nextOffset. Filter by agency or issuanceType.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 50)
queryYesQuery, e.g. 'withholding tax on dividends'
agencyNoAgency code filter, e.g. 'BIR' (see issuances table)
offsetNoPagination offset (default 0)
issuanceTypeNoIssuance type filter, e.g. 'Revenue Memorandum Circular'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
queryYes
totalYes
offsetYes
statusYes
hasMoreYes
resultsYes
nextOffsetYes

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable behavioral insight: 'Below confidence threshold it reports insufficient corpus coverage rather than guessing' – this tells the agent how low-confidence results are handled. It also details pagination behavior ('check hasMore/nextOffset'). Both additions go beyond annotations, but there is no mention of rate limits or auth, though those are not necessarily needed for this read-only tool.

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 concise and well-structured. It front-loads the core purpose, then adds behavioral and pagination notes. The phrase 'BIR first, Phase 3' is a development milestone that is irrelevant to an agent and adds noise, which is a minor inefficiency. Otherwise, every sentence earns its place.

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?

Given the tool has 5 parameters, an output schema, and safe annotations, the description covers the essential usage points. Pagination is explained, filters are mentioned, and the low-confidence behavior is disclosed. Since the output schema exists, not describing return values is acceptable. The description is sufficiently complete for an agent to call the tool correctly, though it could mention that the query is mandatory, but that is already in the schema.

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% – all five parameters have descriptive text in the schema. The description adds minimal extra meaning: it restates that you can filter by agency or issuanceType and mentions using offset for pagination, but these are already described in the schema. No new format or nuance is provided for the parameters, so it meets the baseline 3 but does not exceed it.

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 clearly states a specific verb and resource: 'Lexical (FTS5/BM25) search over the administrative issuance corpus'. It distinguishes from siblings such as search_statute and search_jurisprudence by specifying the corpus (administrative issuance) rather than a generic search. The added note 'Information retrieval, not legal advice' clarifies the tool's scope. However, it doesn't explicitly reference sibling tools or contrast them, so it's clear but not fully differentiated.

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?

The description says 'Filter by agency or issuanceType' and explains pagination, giving operational guidance. But it does not explicitly state when to use this tool versus alternatives like search_statute or search_jurisprudence. The context implies it is for administrative issuances, but no direct when-to-use/when-not-to-use guidance is provided. Sibling tools are not named, so the agent must infer the intended context.

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

search_jurisprudenceSearch Philippine jurisprudenceA
Read-onlyIdempotent

Lexical (FTS5/BM25) search over the case corpus (SC, CA, SB, CTA decisions). Information retrieval, not legal advice. Results carry structured citations; below confidence threshold the tool reports insufficient corpus coverage rather than guessing.

Pagination: use offset to page; check hasMore/nextOffset. Use court to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
courtNoOptional court filter
limitNoMax results (default 10, max 50)
queryYesQuery, e.g. 'doctrine of piercing the corporate veil'
offsetNoPagination offset (default 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
queryYes
totalYes
offsetYes
statusYes
hasMoreYes
resultsYes
nextOffsetYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, the description discloses meaningful behavior: it uses lexical FTS5/BM25 matching, returns structured citations, and reports insufficient corpus coverage rather than guessing below a confidence threshold. It also details pagination behavior with hasMore/nextOffset.

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

Conciseness5/5

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

The description is compact, front-loaded with the core search purpose, and every sentence contributes either scope, caveat, behavioral transparency, or operational guidance. No filler or redundancy.

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?

For a search tool with rich annotations and a full input schema, the description covers the essential context: corpus scope, safety/behavioral disclaimers, result nature, confidence fallback, and pagination. It is sufficiently complete for an agent to invoke it 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?

Input schema already covers 100% of parameters, but the description adds practical semantics: pagination via offset with hasMore/nextOffset, and using court to narrow results. These additions go beyond simple schema repetition.

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?

States a specific verb ('search') over a specific resource ('case corpus' covering SC, CA, SB, CTA decisions), which clearly distinguishes it from statute or issuance search tools. The description also clarifies that it is information retrieval, not legal advice.

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?

The description implies when to use this tool by specifying it searches case law, and gives in-tool guidance like 'Use court to narrow results.' However, it does not explicitly mention alternatives such as search_statute or related_cases, so the when-to-use vs alternatives is left mostly to inference.

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

search_statuteSearch Philippine statutesA
Read-onlyIdempotent

Lexical (FTS5/BM25) search over the statute corpus (Constitution, codes, RA, PD, EO). Information retrieval, not legal advice. Results carry structured citations; below confidence threshold the tool reports insufficient corpus coverage rather than guessing.

Pagination: use offset to page; check hasMore/nextOffset. Use domain to narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10, max 50)
queryYesNatural-language or keyword query, e.g. 'conditions for void marriage'
domainNoOptional domain slug filter, e.g. 'civil', 'criminal', 'family' (see list_domains)
offsetNoPagination offset (default 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
queryYes
totalYes
offsetYes
statusYes
hasMoreYes
resultsYes
nextOffsetYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial behavior: FTS5/BM25 lexical matching, confidence-threshold handling ('reports insufficient corpus coverage rather than guessing'), structured citations, and pagination semantics (hasMore/nextOffset). No contradiction with annotations.

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

Conciseness5/5

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

The description is compact and front-loaded, leading with the core purpose, then adding caveats and pagination/domain guidance. Every sentence carries useful information with no redundancy.

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 an output schema present, the description doesn't need to detail return fields. It covers purpose, scope, low-confidence behavior, pagination, and domain narrowing, which is complete for this read-only search tool in its sibling context.

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 covers all 4 parameters with descriptions, so baseline is 3. The description adds actionable semantics beyond the schema: how to use offset ('check hasMore/nextOffset') and domain ('narrow results'), which helps an agent use these parameters correctly.

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?

Description states a specific verb ('Lexical ... search') and resource ('statute corpus') with enumerated document types, making it clear this is the statutory search tool. This distinguishes it from sibling tools like search_jurisprudence and search_issuance, even without naming them.

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?

The description gives context: it searches statutes and is not for legal advice, and it advises using domain to narrow results. However, it does not explicitly state when to prefer search_statute over search_jurisprudence/search_issuance or when not to use it, leaving the alternative selection implied.

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

show_amendmentsAmendment history of a statuteA
Read-onlyIdempotent

List the amendment log for a statute (amending law, affected provision, effective date). Use with get_provision to confirm the current text of an amended provision.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50, max 100)
statuteYesStatute short title, e.g. 'Civil Code of the Philippines'
actNumberNoOptional act number override, e.g. '386'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
statusYes
statuteYes
amendmentsYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds behavioral context by specifying what the amendment log contains (amending law, affected provision, effective date), which goes beyond the annotations. It does not contradict the annotations. This adds meaningful transparency about the tool's output behavior, though it omits details like ordering or pagination, which are less critical given the output schema exists.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The primary purpose is front-loaded in the first sentence, and the complementary usage hint is in the second. It is appropriately sized for a simple tool and does not repeat schema information. Excellent structure and brevity.

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?

Given the tool's moderate complexity (3 params, 1 required) and the presence of an output schema, the description covers the essential context: what it does, what it returns, and a complementary usage note. It does not explicitly mention the optional parameters (limit, actNumber), but those are documented in the schema with descriptions. No critical information for a correct call is missing, though it could benefit from a note on default behavior or error handling. Overall, it is sufficiently complete for an agent to use it correctly.

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%, meaning all parameters (statute, limit, actNumber) are already documented in the input schema with their own descriptions. The tool description does not add any extra meaning about these parameters; it only mentions the output fields. Since the schema fully covers parameter semantics, the baseline of 3 applies, and the description does not enhance it further.

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 verb ('List') and a resource ('amendment log for a statute') with the fields returned (amending law, affected provision, effective date). It is clear about what the tool does. However, it does not explicitly differentiate from sibling tools like 'show_history' or 'related_laws', which might overlap in purpose. The mention of 'amendment log' is specific, but without naming alternatives, it leaves some ambiguity.

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?

The description gives a clear complementary usage hint: 'Use with get_provision to confirm the current text of an amended provision.' This implies when to use this tool (to see amendment history) and when to use another (to get current text). However, it does not explicitly state when NOT to use this tool or contrast with other siblings like 'show_history' or 'related_laws'. The guidance is helpful but not comprehensive, earning a 3 rather than a 4.

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

show_citationsCitations made by a caseA
Read-onlyIdempotent

List every citation a case makes (statutes and other cases), as recorded in the citation graph. Citations that could not be resolved against the corpus are not listed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 100, max 200)
caseCitationYesCase citation, e.g. 'G.R. No. 238875'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
statusYes
citationsYes
caseCitationYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds value by disclosing that unresolved citations are deliberately omitted and that the citation graph is the source, which are useful behavioral traits not visible in 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.

Conciseness5/5

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

Two sentences with no filler; the first sentence states the core action and scope, and the second adds a key boundary. All content earns its place.

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?

For a simple read-only list tool with two well-documented parameters and an output schema, the description is complete: it defines what is returned, where the data comes from, and what is excluded. No critical behavior is missing.

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% for both parameters, so the schema already documents caseCitation and limit. The description does not add parameter-specific meaning beyond reaffirming the domain of citations, which matches the baseline score of 3.

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 uses the specific action 'List every citation a case makes' and specifies the resource as statutes and other cases recorded in the citation graph. It is clear and unambiguous, though it does not explicitly contrast itself with siblings like related_laws or show_cross_references.

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?

Usage is implied: an agent can infer the tool is for retrieving citations made by a case. However, there is no explicit when-to-use or when-not-to-use guidance, and no alternative sibling is named, so an agent may need external context to distinguish it from related_cases or show_cross_references.

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

show_cross_referencesCross-references for a statuteB
Read-onlyIdempotent

Curated cross-domain references (from the domain registry) for the statute's domain, plus statute→statute citation edges from the corpus graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax graph edges (default 50, max 100)
statuteYesStatute short title, e.g. 'Civil Code of the Philippines'
actNumberNoOptional act number override, e.g. '386'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
domainYes
statusYes
statuteYes
crossReferencesYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already communicate read-only, idempotent, and non-destructive behavior, so the description does not need to repeat those. It adds some context by identifying the data sources ('domain registry' and 'corpus graph') and the curated nature of the references, but it does not explain limit behavior, possible empty results, or how the two edge types interact.

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

Conciseness5/5

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

The description is a single dense sentence with no filler. It front-loads the core output components and avoids redundant restatement of the title or annotations.

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?

Given that the tool has a rich output schema and annotations covering safety, the description is largely complete for a read-only cross-reference lookup. The main gap is the lack of differentiation from sibling tools, but that is more of a usage-guidance concern than a completeness concern for the tool's core behavior.

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?

The input schema has 100% description coverage for all three parameters, including examples and constraints. The description does not add parameter-level detail, but the baseline of 3 applies because the schema already carries the semantic weight.

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 clearly states what the tool returns: curated cross-domain references from the domain registry plus statute-to-statute citation edges from the corpus graph. It uses a specific resource and adds provenance, going beyond a mere restatement of the tool name/title. It does not explicitly contrast with siblings, but the composition of the output is reasonably clear.

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

Usage Guidelines2/5

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

The description gives no guidance about when to prefer this tool over siblings like show_citations, related_laws, or show_dependencies. There are no explicit use cases, exclusions, or alternative routing hints, so an agent must infer when this tool is appropriate.

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

show_dependenciesStatute dependency graphA
Read-onlyIdempotent

Show which statutes a statute cites (dependencies) and which statutes cite it back (dependentOn), from corpus-grounded law→law edges.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per direction (default 50, max 100)
statuteYesStatute short title, e.g. 'National Internal Revenue Code'
actNumberNoOptional act number override, e.g. '8424'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
statusYes
statuteYes
dependentOnYes
dependenciesYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context by explaining the two directional results ('dependencies' and 'dependentOn') and the corpus-grounded law-to-law edge source, but it does not disclose additional behaviors like default limits or response shape, which are partially handled by the schema and output schema.

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

Conciseness5/5

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

The description is a single, information-dense sentence that front-loads the core behavior and then clarifies the two directions. No filler or redundant restatement of the title or schema.

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?

With a rich input schema, output schema, and safety annotations, the description covers the essential semantics: directionality, edge type, and corpus grounding. It lacks explicit sibling routing guidance, but the core information needed to call the tool correctly is present.

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%, so the schema already documents statute, limit, and actNumber. The description does not add new parameter-level meaning beyond confirming that the statute is the source node of the dependency graph.

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?

The description uses a specific verb and resource: 'Show which statutes a statute cites' and 'which statutes cite it back (dependentOn)'. It clearly differentiates the tool from siblings like related_laws and show_citations by specifying law-to-law, corpus-grounded dependency edges.

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?

The description implies the tool is for statute-to-statute dependency graphs, but it never explicitly states when to choose it over similar siblings like related_laws, show_citations, or show_cross_references. Usage context is inferable but not directly stated.

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

show_historyVersion history of a provisionA
Read-onlyIdempotent

Show every recorded version of a provision, ordered by effective date (valid_from). Confirms whether the current text differs from an earlier version.

ParametersJSON Schema
NameRequiredDescriptionDefault
statuteYesStatute short title, e.g. 'Civil Code of the Philippines'
actNumberNoOptional act number override, e.g. '386'
provisionYesProvision number, e.g. '1156' or '266-A'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
statusYes
statuteYes
versionsYes
provisionYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it returns every version, orders by valid_from, and can compare current versus earlier text. These are meaningful additions but not extensive behavioral disclosures, so a 3 is appropriate.

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

Conciseness5/5

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

Two sentences with no filler. The main action is front-loaded, followed by a concise statement of the tool's purpose. Every sentence earns its place.

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?

The tool is a read-only lookup with full schema coverage, annotations, and an output schema. The description captures the core behavior and use case. It could be more complete by explicitly noting when not to use it or how it relates to show_amendments, but nothing essential is missing for correct invocation.

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%, so the parameters are already fully documented (statute, actNumber, provision). The description adds no additional parameter-level meaning beyond what the schema provides, so the baseline of 3 applies.

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 clearly states a specific verb and resource: 'Show every recorded version of a provision', with the additional qualifier of ordering by effective date. It does not explicitly contrast with sibling tools like show_amendments, so it stops just short of full differentiation, but the wording is precise enough that an agent can infer its focus.

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?

The description provides a clear use case: 'Confirms whether the current text differs from an earlier version.' This tells an agent when the tool would be relevant. However, it does not mention when not to use it or name an alternative sibling, so it lacks explicit exclusionary guidance.

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

show_implementing_rulesImplementing rules references for a statuteA
Read-onlyIdempotent

Find corpus references to the Implementing Rules and Regulations (IRR) of a statute — citations mentioning IRR that resolve to the statute, with the citing cases.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50, max 100)
statuteYesStatute short title, e.g. 'Data Privacy Act of 2012'
actNumberNoOptional act number override, e.g. '10173'

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
statusYes
statuteYes
referencesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark the operation as read-only, idempotent, and non-destructive. The description adds meaningful behavior: it resolves citations to the statute and includes citing cases, which tells the agent the returned references are filtered rather than raw mentions. No contradiction with annotations.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the core function and key output without filler. Every clause earns its place.

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 a full parameter schema, an output schema, and safety annotations, the description provides all essential calling context. The IRR-resolution detail covers the one non-obvious behavior an agent needs to anticipate.

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 coverage is 100%: all three parameters (statute, limit, actNumber) have descriptions. The tool description adds no parameter-level detail, so it stays at the baseline of 3.

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?

States a specific verb ('Find'), a specific resource ('Implementing Rules and Regulations (IRR) of a statute'), and the output ('citations... with the citing cases'). This clearly separates it from sibling tools like show_amendments or show_citations.

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?

The description implies the use case (retrieving IRR references for a statute) but never explicitly says when to choose it over related siblings such as show_citations or show_cross_references, nor does it state when not to use it.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 19 tool updatesv0.12.0
    • First observedcite_validate
    • First observedcompute_13th_month
    • First observedcompute_deadline
    • First observedcompute_prescription
    • First observedget_case
    • First observedget_issuance
    • First observedget_provision
    • First observedlist_domains
    • First observedrelated_cases
    • First observedrelated_laws
    • First observedsearch_issuance
    • First observedsearch_jurisprudence
    • First observedsearch_statute
    • First observedshow_amendments
    • First observedshow_citations
    • First observedshow_cross_references
    • First observedshow_dependencies
    • First observedshow_history
    • First observedshow_implementing_rules

TDQS

A4.1/5.0

Scored across 19 tools

Disambiguation5/5

Each tool targets a distinct resource or action: search across three corpora, get by citation, relationship/neighborhood tools (related_laws vs. related_cases vs. show_dependencies vs. show_citations), versioning (show_amendments vs. show_history), and three separate deterministic calculators. Any overlap is narrow and the descriptions clarify the boundaries.

Naming Consistency4/5

The vast majority follow a verb_noun snake_case pattern (search_, get_, show_, compute_, list_). Minor deviations: 'related_laws' and 'related_cases' use an adjective prefix, and 'cite_validate' inverts the expected verb order (validate_citation). These are still readable and predictable.

Tool Count4/5

At 19 tools, this sits in the 16-25 'heavy but borderline' range. Given the multi-corpus scope (statutes, jurisprudence, issuances) plus citation graph, versioning, and computation tools, each tool has a unique role and the count is defensible, though a slightly tighter set could be imagined.

Completeness5/5

The surface covers the full lifecycle for a read-only compliance server: search across all corpora, exact retrieval by citation, citation validation, relationship exploration (dependencies, citations, IRRs, cross-references), version/amendment tracking, and deterministic computations for key deadlines. No obvious dead ends or missing operations for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables users to search, retrieve, and validate over 11,000 Philippine statutes and nearly 100,000 provisions through AI-powered legal research tools. It supports full-text search across Republic Acts, the Constitution, and various codes while providing cross-referencing and international law alignment capabilities.
    1 npm
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching and retrieving over 1,100 Zambian statutes and 9,000 provisions directly from AI clients for legal research and compliance. It features full-text search, citation validation, and mapping of Zambian laws to international legal frameworks.
    184 npm
    Apache 2.0
  • A
    license
    A
    quality
    F
    maintenance
    Provides access to 1,709 Icelandic statutes and 19,026 provisions with full-text search, citation validation, and EU/EEA law integration, enabling legal research and compliance checks through natural language queries.
    11
    43 npm
    1
    Apache 2.0