cpl-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NYS_LEG_API_KEY | Yes | OpenLegislation API key. Get one at https://legislation.nysenate.gov. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cpl_lookup_sectionA | Retrieve the full text of a single New York Criminal Procedure Law (CPL) location by citation. Use this when the user names a specific CPL section or article (e.g. "What does CPL 245.20 say?", "pull up CPL section 510.10"). It returns the official statute text plus its title and structural context (article/title parents and adjacent sections). It does NOT search by topic — use cpl_search for that. Args: params (LookupInput): Validated input containing: - citation (str): A CPL location id such as "245.20", "1.20", "A245", or "T1". Leading "CPL", "section", and "§" are stripped automatically. - response_format (ResponseFormat): "markdown" (default) or "json". Returns: str: In markdown mode, a formatted document with the section title, citation, full statute text, structural breadcrumb, and a source link. In json mode, an object with this schema: { "lawId": str, # "CPL" "locationId": str, # e.g. "245.20" "docType": str, # e.g. "SECTION", "ARTICLE", "TITLE" "title": str, # human title, e.g. "Automatic discovery" "activeDate": str, # ISO date this version became active "text": str, # full statute text "parents": [ {"docType": str, "docLevelId": str, "title": str} ], "sourceUrl": str # canonical nysenate.gov page } Examples: - Use when: "Show me CPL 245.20" -> citation="245.20" - Use when: "What's in article 245 of the CPL?" -> citation="A245" - Don't use when: "Which CPL section covers discovery?" (use cpl_search instead) |
| cpl_searchA | Full-text search the New York Criminal Procedure Law (CPL) for sections matching a term. Use this when the user describes a topic rather than naming a section (e.g. "Which CPL sections deal with automatic discovery?", "find CPL provisions about speedy trial"). Returns a ranked list of matching locations with their citation and title. Follow up with cpl_lookup_section to get the full text of a hit. Args: params (SearchInput): Validated input containing: - term (str): Full-text query, e.g. "automatic discovery", "speedy trial". - limit (Optional[int]): Max results, 1-50 (default 10). - offset (Optional[int]): 1-based start index for pagination (default 1). - response_format (ResponseFormat): "markdown" (default) or "json". Returns: str: In markdown mode, a numbered list of matches (citation + title + snippet). In json mode, an object with this schema: { "term": str, "total": int, # total matches available "count": int, # results in this page "offset": int, # 1-based offset used "has_more": bool, "next_offset": int|null, "results": [ { "locationId": str, # e.g. "245.20" "title": str, # section title "docType": str, # e.g. "SECTION" "snippet": str, # highlighted match context (may be empty) "sourceUrl": str } ] } Examples: - Use when: "What CPL sections cover discovery?" -> term="discovery" - Use when: "Find speedy trial rules in the CPL" -> term="speedy trial" - Don't use when: You already know the section number (use cpl_lookup_section). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: cpl_lookup_section retrieves specific sections by citation, while cpl_search performs full-text topic searches. Each explicitly states when to use the other, leaving no ambiguity.
Both tools follow a consistent 'cpl_' prefix followed by a verb or verb_noun (lookup_section, search). The naming clearly signals the action and domain, and the pattern is uniform.
The server has only two tools, which feels thin for a general API but is appropriate for a focused legal statute lookup service. The two tools cover the essential search-and-retrieve workflow and earn their place.
The pair covers the key user journeys: finding a section by topic and reading a section by citation. A minor gap is the lack of a browse or list-all-articles tool, but search and citation lookup handle most practical needs.