Skip to main content
Glama

Probative legal-marketing data

Compare keys in a dataset

data_compare
Read-onlyIdempotent

The records for up to 10 keys of one dataset side by side. Datasets and their keys: ca-courts (area, e.g. ALAMEDA, ALPINE, AMADOR, BUTTE); fees (jurisdiction, e.g. AK, AL, AR, AZ); filing (jurisdiction, e.g. AK, AL, AR, AZ); language (area, e.g. 10180, 10420, 10500, 10540); mdl (mdl, e.g. MDL-1358, MDL-1570, MDL-1663, MDL-1720); opinions (jurisdiction, e.g. ABA, AK, AL, AZ); platforms (platform, e.g. CHATGPT-ADS, GOOGLE-ADS, GOOGLE-LSA, LINKEDIN-ADS). Not legal advice.

Input Schema

NameRequiredDescriptionDefault
keysYes
datasetYesDataset id (list_datasets describes each one)

Output Schema

NameRequiredDescriptionDefault
metaYesCredit line (attribution), citation, DOI, version, license (CC BY 4.0), disclaimer, notice and the page to cite
nextCursorNoPass as `cursor` to get the next page; null on the last page
provenanceYesWhere this came from: the publisher of the dataset, the dataset and its version DOI, the record id, the original source (who published it and its URL), the day that source was last checked, and when this answer was retrieved

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / nextCursor
      Added value: +{
      +  "description": "Pass as `cursor` to get the next page; null on the last page",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "description": "Where this came from: the publisher of the dataset, the dataset and its version DOI, the record id, the original source (who published it and its URL), the day that source was last checked, and when this answer was retrieved",
      +  "properties": {
      +    "citeUrl": {
      +      "description": "The page to cite",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "dataset": {
      +      "description": "Dataset id",
      +      "type": "string"
      +    },
      +    "datasetTitle": {
      +      "type": "string"
      +    },
      +    "dateChecked": {
      +      "description": "YYYY-MM-DD the record was last checked against its source",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "doi": {
      +      "description": "Version DOI",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "doiUrl": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "line": {
      +      "description": "The same facts as one sentence, to quote under an answer",
      +      "type": "string"
      +    },
      +    "publisher": {
      +      "description": "Publisher of the dataset",
      +      "type": "string"
      +    },
      +    "recordId": {
      +      "description": "Stable id of the record",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "retrievedAt": {
      +      "description": "ISO 8601 time this answer was served",
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "The original source: statute, rule, bar opinion, court report, agency table or platform policy",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "sourceKind": {
      +      "description": "primary or secondary",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "sourceUrl": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "P primary source, S secondary, D default (no specific rule found), U open question",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "version": {
      +      "description": "Dataset version",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "publisher",
      +    "dataset",
      +    "version",
      +    "retrievedAt"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "meta"
      -]New value: +[
      +  "meta",
      +  "provenance"
      +]
  2. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare a safe, idempotent, closed-world read, so the description only needs incremental context — and it supplies real constraints: keys must all belong to a single dataset and are capped at 10. It also enumerates valid datasets and key formats, which reduces failed calls; return shape is left to the output schema, which 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.

Conciseness4/5

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

The core action leads in one sentence, followed by a compact enumeration that earns its space by encoding valid key formats. The trailing 'Not legal advice' is boilerplate but negligible.

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 2-parameter read tool with an output schema and full annotation coverage, the description covers the action, the scoping limit, and per-dataset key syntax. Return values are handled by the output schema, so nothing an agent needs before calling is missing.

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 only 50% and the `keys` array carries no inline description, so the description compensates by naming the key field per dataset (area, jurisdiction, mdl, platform) and giving concrete example values for each. That meaningfully exceeds the bare enum list in the dataset param.

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

Purpose4/5

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

States a specific verb (compare) and resource (the records for up to 10 keys of one dataset) with the key scoping constraint front-loaded. It is distinguishable from data_lookup/data_search by the 'side by side, up to 10 keys' framing, though it never names those siblings to make the contrast explicit.

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

Usage Guidelines3/5

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

Usage is implied by 'up to 10 keys ... side by side', so an agent can infer this is for multi-item comparison rather than single lookups. However, with crowded siblings like data_lookup, data_search, and compare_states, the description gives no explicit when-to-use/when-not guidance or routing rules.

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.

Resources