ph-compliance-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ph-compliance-mcpSearch the Labor Code for rules on 13th month pay."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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 |
| Current-text only |
Citations knowledge graph |
| None |
No-synthesis guarantee | Below confidence threshold → | Varies |
Coverage breadth | Laws + cases + NGA/LGU/GOCC issuances across 15 compliance domains | Statutes only, typically |
Freshness signal |
| 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 UIBuild 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/corpusEvery 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 |
| Full-text search over statutes/provisions (FTS5/BM25, confidence-gated) |
| Retrieve one provision with citation + source |
| Full-text search over case decisions |
| Retrieve a case with passages and citation |
| Search government issuances (NGA/LGU/GOCC) |
| Retrieve one issuance |
| Validate/parse a Philippine citation |
| 15-domain taxonomy + corpus freshness |
| Statutes cited by a case (graph) |
| Cases sharing cited statutes (graph) |
| Amendment log of a statute |
| Version history of a provision |
| Law→law dependency edges |
| Citations made by a case |
| IRR references for a statute |
| Domain cross-references + graph edges |
| Deterministic prescriptive-period calculator (Civil Code Arts. 1144–1149) |
| Deterministic filing-deadline calculator (Rules of Court Rule 22 + 37/41/45/65) |
| Deterministic 13th-month-pay calculator (PD 851) |
Resources
ph-compliance://domains— taxonomy + freshnessph-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 |
| |
OpenAI Codex CLI |
| |
OpenCode |
| |
Cline (VS Code) |
| |
Cursor |
|
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.yamlOperations & 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.tswritesmanifest.json(per-corpus SHA-256, record counts, sources) into the output dir; the weeklyrefresh-corpus.ymlpublishes it alongside the sqlite assets.
Design constraints (non-negotiable)
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.
Information retrieval, not legal advice.
Primary sources over commentary — codal text and decisions, not summaries.
Version-aware, not just current-aware — amendments/repeals/supersessions tracked.
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 positioningdocs/agents/— per-client setup guides (Claude Code, Codex, OpenCode, Cline, Cursor)docs/enterprise.md— enterprise deployment & operationsdocs/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 promptsDockerfile/compose.yaml— containerized stdio server (air-gapped corpus)scripts/healthcheck.mjs,scripts/check-freshness.mjs— ops probessrc/db/schema/— SQLite schemas: laws, cases, issuancessrc/domains/— 15 domain modules with metadata + cross-referencesdata-pipeline/— ingestion: catalog → adapters → normalizers → chunkers → builddata-pipeline/catalog.ts— the instrument catalog (ingestion manifest)src/— server, retrieval, tools, resourcesevals/— golden sets + workingrun-eval.tsharnessllms.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 toolscite_validateValidate a legal citation against the corpusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| statute | No | Statute short title, e.g. 'Civil Code of the Philippines' | |
| provision | No | Provision number, e.g. '1156' | |
| caseCitation | No | Case citation, e.g. 'G.R. No. 238875' |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| citation | Yes |
TDQS
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.
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.
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.
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.
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.
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 851ARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| totalBasicSalary | Yes | Total 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
| Name | Required | Description |
|---|---|---|
| amount | Yes | |
| status | Yes |
TDQS
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.
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.
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.
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.
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.
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 CourtARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| holidays | No | ISO dates of legal holidays (national holidays are declared per year by proclamation) | |
| filingType | Yes | Which reglementary period to compute | |
| noticeDate | Yes | ISO date (YYYY-MM-DD) of notice of the judgment, order, or resolution | |
| extensionDays | No | Extra days for appeal_certiorari_sc (Rule 45 §2, max 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| lastDay | Yes |
TDQS
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.
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.
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.
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.
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.
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 CodeARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| actionType | Yes | Class of action; 'other' uses the Art. 1149 residual period | |
| causeOfActionDate | No | ISO date (YYYY-MM-DD) the right of action accrued, to compute the deadline |
Output Schema
| Name | Required | Description |
|---|---|---|
| years | Yes | |
| status | Yes | |
| article | Yes | |
| category | Yes |
TDQS
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.
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.
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.
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.
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.
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 caseARead-onlyIdempotent
Return a case by citation (e.g. 'G.R. No. 238875') with metadata and the first passages of the decision.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max passages to return (default 20) | |
| citation | Yes | Case citation, e.g. 'G.R. No. 238875' |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| status | Yes | |
| citation | Yes |
TDQS
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.
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.
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.
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.
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.
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 issuanceARead-onlyIdempotent
Return an issuance by agency + reference number (e.g. 'BIR' / 'RMC 85-2023') with metadata and the first passages of the document.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max passages to return (default 20) | |
| agency | Yes | Agency code, e.g. 'BIR' | |
| referenceNo | Yes | Reference number, e.g. 'RMC 85-2023' |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| status | Yes | |
| referenceNo | Yes |
TDQS
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.
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.
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.
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.
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.
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 provisionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| statute | Yes | Statute short title, e.g. 'Civil Code of the Philippines' | |
| provision | Yes | Provision number, e.g. '1156' or 'Art. 1156' |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | Yes | |
| status | Yes | |
| citation | Yes | |
| provisionNo | Yes |
TDQS
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.
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.
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.
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.
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.
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 freshnessARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| status | Yes | |
| domains | Yes |
TDQS
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.
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.
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.
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.
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.
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 issuancesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10, max 50) | |
| query | Yes | Query, e.g. 'withholding tax on dividends' | |
| agency | No | Agency code filter, e.g. 'BIR' (see issuances table) | |
| offset | No | Pagination offset (default 0) | |
| issuanceType | No | Issuance type filter, e.g. 'Revenue Memorandum Circular' |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| total | Yes | |
| offset | Yes | |
| status | Yes | |
| hasMore | Yes | |
| results | Yes | |
| nextOffset | Yes |
TDQS
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.
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.
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.
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.
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.
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 jurisprudenceARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| court | No | Optional court filter | |
| limit | No | Max results (default 10, max 50) | |
| query | Yes | Query, e.g. 'doctrine of piercing the corporate veil' | |
| offset | No | Pagination offset (default 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| total | Yes | |
| offset | Yes | |
| status | Yes | |
| hasMore | Yes | |
| results | Yes | |
| nextOffset | Yes |
TDQS
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.
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.
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.
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.
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.
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 statutesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10, max 50) | |
| query | Yes | Natural-language or keyword query, e.g. 'conditions for void marriage' | |
| domain | No | Optional domain slug filter, e.g. 'civil', 'criminal', 'family' (see list_domains) | |
| offset | No | Pagination offset (default 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| total | Yes | |
| offset | Yes | |
| status | Yes | |
| hasMore | Yes | |
| results | Yes | |
| nextOffset | Yes |
TDQS
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.
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.
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.
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.
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.
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 statuteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 100) | |
| statute | Yes | Statute short title, e.g. 'Civil Code of the Philippines' | |
| actNumber | No | Optional act number override, e.g. '386' |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| status | Yes | |
| statute | Yes | |
| amendments | Yes |
TDQS
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.
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.
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.
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.
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.
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 caseARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 100, max 200) | |
| caseCitation | Yes | Case citation, e.g. 'G.R. No. 238875' |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| status | Yes | |
| citations | Yes | |
| caseCitation | Yes |
TDQS
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.
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.
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.
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.
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.
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 statuteBRead-onlyIdempotent
Curated cross-domain references (from the domain registry) for the statute's domain, plus statute→statute citation edges from the corpus graph.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max graph edges (default 50, max 100) | |
| statute | Yes | Statute short title, e.g. 'Civil Code of the Philippines' | |
| actNumber | No | Optional act number override, e.g. '386' |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| domain | Yes | |
| status | Yes | |
| statute | Yes | |
| crossReferences | Yes |
TDQS
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.
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.
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.
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.
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.
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 graphARead-onlyIdempotent
Show which statutes a statute cites (dependencies) and which statutes cite it back (dependentOn), from corpus-grounded law→law edges.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results per direction (default 50, max 100) | |
| statute | Yes | Statute short title, e.g. 'National Internal Revenue Code' | |
| actNumber | No | Optional act number override, e.g. '8424' |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| status | Yes | |
| statute | Yes | |
| dependentOn | Yes | |
| dependencies | Yes |
TDQS
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.
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.
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.
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.
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.
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 provisionARead-onlyIdempotent
Show every recorded version of a provision, ordered by effective date (valid_from). Confirms whether the current text differs from an earlier version.
| Name | Required | Description | Default |
|---|---|---|---|
| statute | Yes | Statute short title, e.g. 'Civil Code of the Philippines' | |
| actNumber | No | Optional act number override, e.g. '386' | |
| provision | Yes | Provision number, e.g. '1156' or '266-A' |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| status | Yes | |
| statute | Yes | |
| versions | Yes | |
| provision | Yes |
TDQS
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.
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.
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.
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.
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.
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 statuteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50, max 100) | |
| statute | Yes | Statute short title, e.g. 'Data Privacy Act of 2012' | |
| actNumber | No | Optional act number override, e.g. '10173' |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| status | Yes | |
| statute | Yes | |
| references | Yes |
TDQS
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.
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.
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.
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.
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.
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.
19 tool updates
v0.12.0- First observed
cite_validate - First observed
compute_13th_month - First observed
compute_deadline - First observed
compute_prescription - First observed
get_case - First observed
get_issuance - First observed
get_provision - First observed
list_domains - First observed
related_cases - First observed
related_laws - First observed
search_issuance - First observed
search_jurisprudence - First observed
search_statute - First observed
show_amendments - First observed
show_citations - First observed
show_cross_references - First observed
show_dependencies - First observed
show_history - First observed
show_implementing_rules
TDQS
Scored across 19 tools
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.
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.
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.
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
Related MCP Connectors
Verified, tier-0 regulatory data for AI across 850+ official sources and 50+ jurisdictions.
- DikeOAuthio.github.fr3on
Grounded MENA legal search, reasoning, citation resolution, and citation-graph traversal.
Search U.S. case law, fetch opinions, and ask matter-aware legal questions over your documents.
Search 18M+ legal documents worldwide — case law, legislation, and doctrine across 110+ countries.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables 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-
- AlicenseNot gradedqualityCmaintenanceEnables 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 npmApache 2.0
- AlicenseAqualityFmaintenanceProvides 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.1143 npm1Apache 2.0

brehon-mcp-serverofficial
AlicenseNot gradedqualityDmaintenanceProvides AI assistants with real-time, structured access to 32 privacy and AI governance laws across 28 jurisdictions to prevent hallucination in compliance answers.0MIT