Skip to main content
Glama

Ansvar: EU Compliance & Legal Intelligence

Describe Capabilities

describe_capabilities
Read-only

Discover what Ansvar can do for your agent. Default (detail='summary') is a compact orientation view: one-line about, your tier summary, counts, a per-category index (id, name, available_to_caller, min_tier, entry_hint, tools/workflows counts, caveats for gated families), meta tool names, next_steps, the paid add-ons directory, and a sources count with a drill-down pointer. detail='full' returns the complete catalog (large — over 100k chars): category prose, the intent-keyed common_use_cases map, anti_patterns, guidance, the tour, and the full sources directory. section='sources' | 'addons' | 'tour' | returns that one section alone; an unknown section is an error listing the valid ids. section='sources' returns 4 entries by default: compact entries carry a one-sentence address for corpora with get_provision; detail='full' replaces address with lookup, including served shapes, shares, examples, declared form, prefixes and addressing guidance. Filter by query, declared domain or jurisdiction; continue with next_cursor as cursor. query, domain, jurisdiction, cursor and limit require section='sources'. detail is validated before section: an invalid detail is an error even when section= is passed. Every view is tier-aware: available_to_caller flags and caveat text reflect the caller, and gated families are shown with caveats, never silently omitted. The workflow lists are reconciled at read time against a TTL-cached snapshot of the live workflow registry (background-refreshed, 15 min): workflow_types_index carries the snapshot status (live / stale / unavailable) and fetched_at, plus registry types the curated catalog does not list yet; catalog_drift lists catalog ids the registry no longer serves (dropped from the payload). service_notices names subsystems in a known degraded state and the exact tools affected; a category's tool_status marks a catalog tool that currently dispatches on zero scopes fleet-wide and is withheld from tools/list and the category roster until a feed serves (e.g. get_changes during the baseline-only interim), with the same reason_code the tool's own refusal returns. Companion to get_my_capabilities (live tier / quota only). Backed by this repo's data/capabilities-catalog.yml (mirrored for documentation as infrastructure/gateway/capabilities-catalog.yml in arch-docs).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoSources per page, clamped to [1, 50]; requires section='sources'.
queryNoSource query: case-insensitive tokens, ranked by field hits; requires section='sources'.
cursorNoOpaque next_cursor from a page with the same filters; requires section='sources'.
detailNo'summary' (the default) returns the compact orientation view; 'full' returns the complete catalog, which runs over 100k characters. Any other value is an error, checked before section.summary
domainNoExact declared domain ('telecom' is accepted for 'telecommunications-media'); requires section='sources'. Unknown values return an empty page.
sectionNoReturn one section alone: 'sources', 'addons', 'tour', 'use_cases', or a category id from the summary view's index. Empty returns every section. An unknown value is an error listing the valid ids.
content_kindNoKind of legal text: 'statute', 'court-decisions', 'preparatory-works' or 'disciplinary-decisions'; requires section='sources'. An unknown value is an error listing the valid values.
jurisdictionNoJurisdiction code with canonical aliasing; matches a source's primary jurisdiction or one it serves (serves_jurisdiction_via marks a multi-jurisdiction match); requires section='sources'.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / content_kind
      Added value: +{
      +  "default": "",
      +  "description": "Kind of legal text: 'statute', 'court-decisions', 'preparatory-works' or 'disciplinary-decisions'; requires section='sources'. An unknown value is an error listing the valid values.",
      +  "title": "Content Kind",
      +  "type": "string"
      +}
    • changedInput schema / properties / domain / description
      Previous value: -"Exact declared domain; requires section='sources'. Unknown values return an empty page."New value: +"Exact declared domain ('telecom' is accepted for 'telecommunications-media'); requires section='sources'. Unknown values return an empty page."
  2. Changed1 schema field changed
    • changedInput schema / properties / jurisdiction / description
      Previous value: -"Exact declared jurisdiction with canonical aliasing; requires section='sources'."New value: +"Jurisdiction code with canonical aliasing; matches a source's primary jurisdiction or one it serves (serves_jurisdiction_via marks a multi-jurisdiction match); requires section='sources'."
  3. Changed1 schema field changed
    • changedInput schema / properties / limit / default
      Previous value: -12New value: +4
  4. Changed5 schema fields changed
    • addedInput schema / properties / cursor
      Added value: +{
      +  "default": "",
      +  "description": "Opaque next_cursor from a page with the same filters; requires section='sources'.",
      +  "title": "Cursor",
      +  "type": "string"
      +}
    • addedInput schema / properties / domain
      Added value: +{
      +  "default": "",
      +  "description": "Exact declared domain; requires section='sources'. Unknown values return an empty page.",
      +  "title": "Domain",
      +  "type": "string"
      +}
    • addedInput schema / properties / jurisdiction
      Added value: +{
      +  "default": "",
      +  "description": "Exact declared jurisdiction with canonical aliasing; requires section='sources'.",
      +  "title": "Jurisdiction",
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 12,
      +  "description": "Sources per page, clamped to [1, 50]; requires section='sources'.",
      +  "title": "Limit",
      +  "type": "integer"
      +}
    • addedInput schema / properties / query
      Added value: +{
      +  "default": "",
      +  "description": "Source query: case-insensitive tokens, ranked by field hits; requires section='sources'.",
      +  "title": "Query",
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • changedInput schema / properties / section / description
      Previous value: -"Return one section alone: 'sources', 'addons', 'tour', or a category id from the summary view's index. Empty returns every section. An unknown value is an error listing the valid ids."New value: +"Return one section alone: 'sources', 'addons', 'tour', 'use_cases', or a category id from the summary view's index. Empty returns every section. An unknown value is an error listing the valid ids."
  6. Changed2 schema fields changed
    • addedInput schema / properties / detail / description
      Added value: +"'summary' (the default) returns the compact orientation view; 'full' returns the complete catalog, which runs over 100k characters. Any other value is an error, checked before section."
    • addedInput schema / properties / section / description
      Added value: +"Return one section alone: 'sources', 'addons', 'tour', or a category id from the summary view's index. Empty returns every section. An unknown value is an error listing the valid ids."
  7. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark this read-only and non-destructive, and the description adds considerable behavior beyond that: detail validation happens before section validation, every view is tier-aware, gated families are shown with caveats rather than omitted, workflow lists are TTL-cache reconciled with live/stale/unavailable statuses, and degraded subsystems are surfaced via service_notices and tool_status. 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.

Conciseness4/5

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

The description is long but well-structured and front-loaded, starting with the core purpose and default view before detailing edge cases. Nearly every sentence carries distinct information, though the length is substantial and some repository/file-location details could be seen as beyond what the agent needs for invocation.

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 complex discovery tool with 8 parameters and no enums, the description covers defaults, section routing, filter restrictions, error behavior, pagination cursor continuation, tier-aware output, caching/status semantics, degraded-system notices, and the relationship to the sibling tool. With an output schema present, the description does not need to restate return-value shapes.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds cross-parameter constraints and semantics not visible in the schema: query/domain/jurisdiction/cursor/limit require section='sources', detail is validated before section even when section is passed, and unknown section values produce an error listing valid ids. It also enriches the meaning of section values like 'addons', 'tour', and category ids.

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?

The description opens with a clear verb+resource: 'Discover what Ansvar can do for your agent,' then specifies the summary/full/section modes. It also differentiates itself from its closest sibling by naming get_my_capabilities as a companion limited to live tier/quota only.

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?

The description gives explicit usage context for each mode: default summary for orientation, detail='full' for the complete catalog, section= for isolated sections, and filter parameters only with section='sources'. It explicitly contrasts with get_my_capabilities, telling the agent that live tier/quota queries belong to that sibling.

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.