Skip to main content
Glama

Ask the Private Law wiki

ask
Read-onlyIdempotent

Answer a question by quoting a published wiki article. The answer is extracted verbatim, never generated, and always carries the URL it came from. Returns confident=false with suggested reading when the corpus does not cover the question or when context genuinely conflicts. Bare MSO means the Hong Kong Money Service Operator licence; use Management Services Organization or regulated-practice context for the broader platform concept. Ask in the language you want answered — Russian and English are both first-class.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
localeNoCorpus language; inferred from the question when omitted.
questionYesA natural-language question, up to 2000 characters.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
answerYes
localeNo
citationsYes
confidentYes
thresholdNo
topDistanceNo
refusalReasonNo
suggestedReadingYes
queryInterpretationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / citations / items / properties / provenance / properties / version / description
      Previous value: -"Revision of exactly the material served: article snapshot content hash (the HTML ETag value) or dataset version. Null when unknown."New value: +"Revision of exactly the material served: for an article the snapshot content hash (the HTML ETag value); for a dataset record the dataset revision it was published in, since the published file is named by the hash of its own content and meta.version plus datasets/index.json resolve that filename. Null when unknown."
    • changedOutput schema / properties / suggestedReading / items / properties / provenance / properties / version / description
      Previous value: -"Revision of exactly the material served: article snapshot content hash (the HTML ETag value) or dataset version. Null when unknown."New value: +"Revision of exactly the material served: for an article the snapshot content hash (the HTML ETag value); for a dataset record the dataset revision it was published in, since the published file is named by the hash of its own content and meta.version plus datasets/index.json resolve that filename. Null when unknown."
  2. Changed4 schema fields changed
    • addedOutput schema / properties / citations / items / properties / provenance
      Added value: +{
      +  "description": "Origin of one record: stable id, clean canonical URL, publisher, the exact published revision served, a ready citation, primary sources and review status.",
      +  "properties": {
      +    "canonical_url": {
      +      "description": "Published location without tracking parameters.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "cite_as": {
      +      "type": "string"
      +    },
      +    "contract": {
      +      "const": "wiki-provenance/1",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "<locale>:<slug> for an article, <dataset>:<record id> for a dataset row.",
      +      "type": "string"
      +    },
      +    "primary_sources": {
      +      "items": {
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "publisher": {
      +      "properties": {
      +        "name": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "format": "uri",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "url"
      +      ],
      +      "type": "object"
      +    },
      +    "verification_status": {
      +      "enum": [
      +        "verified",
      +        "pending",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "version": {
      +      "description": "Revision of exactly the material served: article snapshot content hash (the HTML ETag value) or dataset version. Null when unknown.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "contract",
      +    "id",
      +    "canonical_url",
      +    "publisher",
      +    "version",
      +    "cite_as",
      +    "primary_sources",
      +    "verification_status"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / citations / items / required
      Previous value: -[
      -  "slug",
      -  "url"
      -]New value: +[
      +  "slug",
      +  "url",
      +  "provenance"
      +]
    • addedOutput schema / properties / suggestedReading / items / properties / provenance
      Added value: +{
      +  "description": "Origin of one record: stable id, clean canonical URL, publisher, the exact published revision served, a ready citation, primary sources and review status.",
      +  "properties": {
      +    "canonical_url": {
      +      "description": "Published location without tracking parameters.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "cite_as": {
      +      "type": "string"
      +    },
      +    "contract": {
      +      "const": "wiki-provenance/1",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "<locale>:<slug> for an article, <dataset>:<record id> for a dataset row.",
      +      "type": "string"
      +    },
      +    "primary_sources": {
      +      "items": {
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "publisher": {
      +      "properties": {
      +        "name": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "format": "uri",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "url"
      +      ],
      +      "type": "object"
      +    },
      +    "verification_status": {
      +      "enum": [
      +        "verified",
      +        "pending",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "version": {
      +      "description": "Revision of exactly the material served: article snapshot content hash (the HTML ETag value) or dataset version. Null when unknown.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "contract",
      +    "id",
      +    "canonical_url",
      +    "publisher",
      +    "version",
      +    "cite_as",
      +    "primary_sources",
      +    "verification_status"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / suggestedReading / items / required
      Previous value: -[
      -  "slug",
      -  "url"
      -]New value: +[
      +  "slug",
      +  "url",
      +  "provenance"
      +]
  3. Changed4 schema fields changed
    • changedOutput schema / properties / citations / items / properties / distance / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
    • addedOutput schema / properties / queryInterpretation
      Added value: +{
      +  "properties": {
      +    "ambiguous": {
      +      "type": "boolean"
      +    },
      +    "choices": {
      +      "items": {
      +        "properties": {
      +          "description": {
      +            "type": "string"
      +          },
      +          "locale": {
      +            "type": "string"
      +          },
      +          "sense": {
      +            "enum": [
      +              "hong_kong_money_service_operator",
      +              "regulated_practice_management"
      +            ],
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "sense",
      +          "slug",
      +          "locale",
      +          "title",
      +          "description",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "sense": {
      +      "enum": [
      +        "hong_kong_money_service_operator",
      +        "regulated_practice_management",
      +        "comparison",
      +        "ambiguous"
      +      ],
      +      "type": "string"
      +    },
      +    "term": {
      +      "enum": [
      +        "MSO"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "term",
      +    "sense",
      +    "ambiguous",
      +    "message",
      +    "choices"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / suggestedReading / items / properties / distance / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "confident",
      -  "answer",
      -  "citations",
      -  "suggestedReading"
      -]New value: +[
      +  "confident",
      +  "answer",
      +  "citations",
      +  "suggestedReading",
      +  "queryInterpretation"
      +]
  4. Changed3 schema fields changed
    • addedInput schema / properties / locale
      Added value: +{
      +  "description": "Corpus language; inferred from the question when omitted.",
      +  "enum": [
      +    "ru",
      +    "en",
      +    "ko",
      +    "zh-hant"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / question / description
      Previous value: -"Question in English, <= 2000 chars"New value: +"A natural-language question, up to 2000 characters."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "answer": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "citations": {
      +      "items": {
      +        "properties": {
      +          "distance": {
      +            "type": "number"
      +          },
      +          "slug": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "confident": {
      +      "type": "boolean"
      +    },
      +    "locale": {
      +      "type": "string"
      +    },
      +    "refusalReason": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "suggestedReading": {
      +      "items": {
      +        "properties": {
      +          "distance": {
      +            "type": "number"
      +          },
      +          "slug": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "threshold": {
      +      "type": "number"
      +    },
      +    "topDistance": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "confident",
      +    "answer",
      +    "citations",
      +    "suggestedReading"
      +  ],
      +  "type": "object"
      +}
  5. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description adds substantial behavior beyond them: answers are extracted verbatim and never generated, always carry a source URL, and degrade to confident=false when coverage fails or context conflicts. That is the exact behavioral profile an agent needs to trust or distrust the output.

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?

Four front-loaded sentences that each carry information: core behavior, fallback behavior, a genuinely ambiguous acronym disambiguation, and language handling. Efficient, though the MSO aside is narrow enough to slightly dilute the opening.

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?

An output schema exists, so return shape need not be described, yet the description still explains the semantically important part of the output (verbatim quotes, source URL, confidence flag). Combined with the fallback and ambiguity guidance, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with two documented parameters and an enum for locale, so the schema already carries the parameter semantics. The description's language note ('Russian and English are both first-class') is a useful hint but does not explain the locale enum's other values (ko, zh-hant), so it adds little beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: answer a question by quoting a published wiki article. That is concrete and distinguishable from a generic retrieval tool. It never names the sibling 'search' or contrasts itself with it, so an agent must infer the boundary between asking and searching.

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

Usage Guidelines4/5

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

It gives clear context on when the tool works (question covered by the corpus) and what happens when it does not (confident=false with suggested reading). The language instruction and MSO disambiguation further guide correct invocation. It stops short of naming the alternative (search) or stating explicit exclusions.

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