Skip to main content
Glama

list_markdown

Read-onlyIdempotent

Returns the structured Markdown body of documents (id, uuid, version, markdown). Headings and lists stay intact. This is not plain text, not a citation bundle, and not a file URL.

When to use: When you need the body as structured Markdown. Examples: 'show this regulation with its article headings', 'give me Markdown I can render for uuid …'. Pass uuid when you already have one document; otherwise filter by title and paginate. When not: For plain text with no Markdown structure, use list_full_text (example: 'quote the operative wording'). For a complete citation bundle in one call — metadata, permanent legal link, citation template, body, and a temporary source-file URL — use evidence_pull (example: 'show me the source'). For only a temporary URL to the original PDF or source file, use document_presigned_url (example: 'download the original file'). To browse titles and dates without the body, use list_documents or search. For one historical version's metadata plus both bodies, use document_version. Do not call without an iso from list_jurisdictions. Skip if you already have this Markdown for the same iso, uuid, and filters.

Parameters: iso (required) is a jurisdiction code from list_jurisdictions and is uppercased before the query (e.g. BE, or US_CA for a state). uuid is optional; when set, the call targets that document. title is an optional case-insensitive substring. with_empty_data defaults to false and omits documents that have no stored Markdown; true includes them with markdown null. limit defaults to 20 and is capped at 100. include_total adds pagination.total_count when true. Other optional filters match the input schema and are combined with AND.

Behavior: Read-only SELECT plus a read of the stored Markdown. Does not create, update, or delete records, files, or credentials. Auth: tools/call requires OAuth 2.0 or a Bearer token (401 if missing, invalid, revoked, or no active subscription). Rate limits: none at the MCP layer; safe to retry. Not cached; each call reads current subscription data and the stored Markdown. An archived uuid returns an archived error instead of the body.

Returns: A page of {id, uuid, version, markdown} where markdown is structured Markdown. Empty data means nothing matched, or the iso is outside the subscription.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "iso": "<iso>"
    },
    "name": "list_markdown"
  }
}

Input Schema

NameRequiredDescriptionDefault
isoYesFilter by Jurisdiction ISO code (e.g. 'US')
urlNoFilter by document URL
langNoExact portal language name, for example English. Filters the portal, not the document language.
uuidNoFilter by UUID. Leave blank to apply no UUID filter.
limitNoPage size. Default 20, maximum 100.
titleNoFilter by title
portalNoFilter by portal name
statusNoFilter by document status
next_idNodocument id of the first row of the next page, from pagination.next_id. Omit on the first page.
portal_idNoFilter by portal ID
is_repealedNoFilter by repealed documents. default value is false
last_updatedNoYYYY-MM-DD, or a range YYYY-MM-DD-to-YYYY-MM-DD. Leave blank to apply no date filter.
crawling_dateNoYYYY-MM-DD, or a range YYYY-MM-DD-to-YYYY-MM-DD. Leave blank to apply no date filter.
include_totalNoInclude total count in response
effective_dateNoYYYY-MM-DD, or a range YYYY-MM-DD-to-YYYY-MM-DD. Leave blank to apply no date filter.
last_amendmentNoYYYY-MM-DD, or a range YYYY-MM-DD-to-YYYY-MM-DD. Leave blank to apply no date filter.
expiration_dateNoYYYY-MM-DD, or a range YYYY-MM-DD-to-YYYY-MM-DD. Leave blank to apply no date filter.
with_empty_dataNoReturn empty data if no markdown is found
publication_dateNoYYYY-MM-DD, or a range YYYY-MM-DD-to-YYYY-MM-DD. Leave blank to apply no date filter.
date_of_enactmentNoYYYY-MM-DD, or a range YYYY-MM-DD-to-YYYY-MM-DD. Leave blank to apply no date filter.

Output Schema

NameRequiredDescriptionDefault
dataYesStructured Markdown bodies for matching documents. Empty if none match. This is not plain text, not a citation bundle, and not a source-file URL.
messageYesResult message
paginationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/destructive, yet the description adds substantial context beyond them: OAuth 2.0 or Bearer auth with the specific 401 failure modes, no MCP-layer rate limits and retry safety, absence of caching, the archived-uuid error path, iso uppercasing before querying, and the empty-result interpretation. That is exactly the kind of operational detail annotations cannot express.

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?

Front-loaded with the return shape, then cleanly sectioned into When to use / When not / Parameters / Behavior / Returns, so an agent can stop reading early. It is long, and the exhaustive alternative-by-alternative enumeration plus the 'Do not call without an iso' restatement of a required field add some bulk, but most sentences carry distinct decision-relevant information for a 20-parameter tool with 17 siblings.

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 broad filter surface with 17 siblings, this covers the decision path (which tool), the prerequisite (iso provenance), pagination, empty/archived outcomes, auth, and retry safety. An output schema exists, yet the description still orients the caller to the page shape, which is helpful rather than redundant.

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 baseline is 3, but the description earns above that by explaining that title is a case-insensitive substring, that with_empty_data=true returns rows with markdown null, that limit defaults to 20 and caps at 100, that include_total adds pagination.total_count, and that remaining filters are AND-combined. It leaves the many date-range filters, lang, portal, and status entirely to the schema, which is acceptable but not fully additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource plus the exact return shape (id, uuid, version, markdown), then immediately triangulates against near-miss siblings: 'not plain text, not a citation bundle, and not a file URL.' An agent can distinguish this from list_full_text, evidence_pull, and document_presigned_url without opening any schema.

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?

Explicit when-to-use with concrete utterance examples ('show this regulation with its article headings'), plus a full when-not block that names each alternative and the condition that selects it (list_full_text for unformatted text, evidence_pull for the citation bundle, document_presigned_url for a URL only, list_documents/search for browsing, document_version for history). It also states the prerequisite of obtaining iso from list_jurisdictions and a skip condition for repeat calls.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.