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' | 'law_map' | 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 and jurisdiction also filter section='law_map' by product type or EU act key and market. domain, 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). Search in the corpus's primary language (en), then fetch the hits in the user's language with the language argument of get_provision (a code, or a short list of codes for versions side by side).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoSources per page, clamped to [1, 50]; requires section='sources'.
queryNoCase-insensitive source tokens for section='sources'; product id, title tokens or EU act key for section='law_map'.
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', 'law_map', 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.
jurisdictionNoMarket code for section='law_map', or jurisdiction code with canonical aliasing for section='sources'; matches a source's primary jurisdiction or one it serves (serves_jurisdiction_via marks a multi-jurisdiction match).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / jurisdiction / description
      Previous 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'."New value: +"Market code for section='law_map', or jurisdiction code with canonical aliasing for section='sources'; matches a source's primary jurisdiction or one it serves (serves_jurisdiction_via marks a multi-jurisdiction match)."
    • changedInput schema / properties / query / description
      Previous value: -"Source query: case-insensitive tokens, ranked by field hits; requires section='sources'."New value: +"Case-insensitive source tokens for section='sources'; product id, title tokens or EU act key for section='law_map'."
    • changedInput schema / properties / section / description
      Previous 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."New value: +"Return one section alone: 'sources', 'addons', 'tour', 'use_cases', 'law_map', or a category id from the summary view's index. Empty returns every section. An unknown value is an error listing the valid ids."
  2. 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."
  3. 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'."
  4. Changed1 schema field changed
    • changedInput schema / properties / limit / default
      Previous value: -12New value: +4
  5. 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"
      +}
  6. 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."
  7. 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."
  8. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/openWorldHint/destructiveHint, yet the description adds substantial non-obvious behavior: tier-aware gating with caveats rather than silent omission, a TTL-cached (15 min) workflow-registry snapshot with live/stale/unavailable status, catalog_drift entries, service_notices for degraded subsystems, and tool_status for zero-scope tools. This is exactly the kind of behavior an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

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

Purpose is front-loaded well, but the body is a very dense near-3000-character run-on covering output shapes, caching, drift, notices and tips that would benefit from structure. Much of the content is warranted by the tool's complexity, but the readability cost is real.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/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-value enumeration is partly redundant, yet the description still rounds out operational context (error semantics for unknown section, tier-awareness, degraded-state signaling). For a complex multi-mode catalog tool with 8 optional params, the coverage is effectively complete.

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 description coverage is 100%, so the baseline is 3. The prose largely restates the schema's dependency rules (domain/cursor/limit require section='sources'; detail validated before section) and the law_map filtering behavior already documented per-parameter, adding little genuinely new parameter meaning.

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 specific verb+resource ('Discover what Ansvar can do for your agent') and explicitly separates itself from the nearest sibling: 'Companion to get_my_capabilities (live tier / quota only)'. An agent can distinguish this catalog-discovery tool from live tier/quota tools without opening either schema.

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 concrete selection rules: default detail='summary' for a compact orientation view, detail='full' for the complete catalog, section=<id> for one section alone. It also routes the agent elsewhere for live data (get_my_capabilities) and for corpus retrieval (search in en, fetch hits via get_provision's language arg). No explicit when-NOT-to-use beyond the sibling callout, so not a full 5.

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.