Velvoite — EU Financial Regulatory Compliance
Server Details
EU financial regulatory monitoring: DORA, MiCA, MiFID II, AML, Solvency II and more.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.7/5 across 26 of 26 tools scored.
Each tool targets a distinct resource (obligations, documents, enforcement, Finnish statutes, CJEU cases) with clear parameter differences. Minor overlap exists between get_obligations and get_canonical_obligations, but descriptions explicitly differentiate them.
All tools consistently use verb_noun patterns: get_ for retrievals, search_ for queries, list_documents, and audit_taxonomy. No mixed casing or inconsistent verb styles are present.
At 26 tools, the surface exceeds the 25-tool threshold for 'too many'. While the domain is broad, the large number of specialized search/get tools could be consolidated without losing functionality.
The API covers the full regulatory compliance workflow: company profile, obligations, deadlines, documents, enforcement, and multiple legal sources (EU, Finnish, CJEU). Some Finnish/KHO tools return URLs requiring web fetch rather than direct data, which is a minor but by-design gap.
Available Tools
26 toolsaudit_taxonomyARead-onlyInspect
Audit the actor role taxonomy: compare model-defined roles vs deployed roles in the database.
Returns per-regulation analysis showing:
- model_only: roles the enrichment model can produce but aren't in the DB yet (gap)
- deployed_only: roles in the DB but not in the model (unexpected — data quality issue)
- role_counts: each deployed role with obligation count
- known_issues: overlaps, naming issues, investigation items
Use this for QA validation of the actor role taxonomy.
Requires admin API key.
No parameters needed — returns full corpus audit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds valuable context: it requires an admin API key, returns specific per-regulation analysis fields, and has no parameters. This goes beyond the annotations and describes the tool's behavior and output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, a useful bulleted list of return fields, and a concise usage note. Every sentence contributes meaning, and the front-loaded purpose makes it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only audit tool with no output schema shown, the description covers all necessary context: what it does, what it returns, why to use it, and the auth requirement. It is complete for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4. The description explicitly states 'No parameters needed — returns full corpus audit,' which clarifies the parameterless nature and the scope of the operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb 'Audit' and identifies the resource 'actor role taxonomy', clearly contrasting with sibling get_* tools. It explicitly states the comparison between model-defined and deployed roles, making its unique function unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'Use this for QA validation of the actor role taxonomy,' providing a clear context for when to use it. However, it does not explicitly name alternatives or exclusion criteria, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_actor_rolesARead-onlyInspect
Get available actor roles per regulation with obligation counts.
Actor roles define WHO an obligation applies to within a specific regulation
(e.g. 'credit_institution', 'significant_institution' for CRD/CRR, or
'ai_provider', 'high_risk_deployer' for AI Act).
Use this to discover which roles exist before filtering obligations with
get_obligations(actor_role=...).
Returns roles grouped by regulation, sorted by obligation count.
Each role includes a human-readable label and description.
Args:
regulation: Filter to a specific regulation code (e.g. 'dora', 'ai_act'). If omitted, returns roles for all regulations.
| Name | Required | Description | Default |
|---|---|---|---|
| regulation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotation, the description discloses that results are 'grouped by regulation, sorted by obligation count' and each role includes 'a human-readable label and description.' It also specifies the behavior of an omitted regulation parameter. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence summary, a brief conceptual explanation, usage guidance, return behavior, and an Args section. Every sentence adds value, with examples aiding clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only discovery tool with an output schema present, the description covers purpose, usage, parameter semantics, and return structure. No critical gaps exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides minimal information (anyOf string/null), but the description's Args section fully explains the 'regulation' parameter with examples and default behavior, compensating for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource combo: 'Get available actor roles per regulation with obligation counts.' It further clarifies the concept with concrete examples (e.g., 'credit_institution' for CRD/CRR) and distinguishes its role as a discovery step before using get_obligations, the key sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to 'Use this to discover which roles exist before filtering obligations with get_obligations(actor_role=...)', naming the alternative and giving a clear usage scenario. This provides both a positive use case and an implicit exclusion (not for filtering itself).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_canonical_obligationsARead-onlyInspect
Get deduplicated canonical obligations with enforcement intelligence.
Returns one obligation per unique legal requirement per actor role.
Each includes compliance difficulty, guidance, and enforcement metrics.
Use this instead of get_obligations when you want a clean, deduplicated
view of what a regulated entity must comply with, enriched with
enforcement risk data.
Args:
regulation: Filter by regulation code (e.g. 'dora', 'mica', 'aml').
actor_role: Comma-separated actor roles (e.g. 'credit_institution,significant_institution').
entity_type: Filter by entity type code (e.g. 'credit_institution').
compliance_difficulty: Filter by difficulty: 'low', 'medium', 'high', 'critical'.
min_enforcement_count: Only return obligations with at least this many enforcement actions.
sort: Sort order. Options: 'enforcement_count_desc' (default), 'compliance_difficulty_desc', 'regulation', 'actor_role'.
page: Page number (default 1).
per_page: Results per page (default 20, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | enforcement_count_desc | |
| per_page | No | ||
| actor_role | No | ||
| regulation | No | ||
| entity_type | No | ||
| compliance_difficulty | No | ||
| min_enforcement_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description builds on that by disclosing deduplication behavior, per-actor-role structure, and the inclusion of compliance difficulty, guidance, and enforcement metrics. This adds meaningful context beyond the annotation alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence purpose, followed by a crisp usage note and a well-organized Args block. There is no redundant text; every line contributes necessary decision-making or invocation information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the readOnly annotation, and the detailed parameter documentation, the description fully equips an agent to select and call this tool. It covers purpose, differentiation from siblings, all filters, sorting options, and pagination defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% descriptive coverage, but the Args list comprehensively documents all 8 parameters with exact value examples, accepted strings, defaults, and constraints like per_page max 100. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get deduplicated canonical obligations with enforcement intelligence.' It clearly distinguishes itself from get_obligations by emphasizing deduplication and enforcement risk enrichment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent to 'Use this instead of get_obligations when you want a clean, deduplicated view' and names the alternative. However, it doesn't specify when get_obligations would be a better choice, so it lacks a full when-not exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_profileARead-onlyInspect
Get the calling company's regulatory posture — saved entity types,
actor roles per regulation, and active conditions.
The profile defines WHICH regulations and roles apply to this company.
Use the actor_roles to filter obligations with get_obligations(actor_role=...).
The profile is the baseline — you can extend beyond it using get_actor_roles()
to discover additional roles if your analysis suggests they may be relevant.
If the profile is empty (profile_complete=false), the company hasn't completed
onboarding yet. Guide them to set up their profile at app.velvoite.eu/account.
No parameters needed — the profile is determined by the API key.
Returns:
company_name: Company name
jurisdictions: Active jurisdictions (always includes 'eu')
profile:
entity_types: List of entity type codes (e.g. ['credit_institution'])
actor_roles: Dict of regulation_code -> list of role codes
(e.g. {'dora': ['financial_entity'], 'ai_act': ['ai_deployer']})
conditions: Dict of regulation_code -> list of active conditions
(e.g. {'dora': ['uses_ict_third_party'], 'ai_act': ['always']})
profile_complete: Whether the company has selected at least one actor role
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds meaningful context: the profile is determined by the API key, profile_complete=false indicates incomplete onboarding, and the profile serves as a baseline. It also details the returned structure. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose, then provides structured usage guidance, edge-case handling, and a detailed return section. Every sentence adds value, and the length is justified by the complexity of the return object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description comprehensively covers the tool's role within a workflow, its output structure with examples, the meaning of profile_complete, and what to do in the incomplete case. It pairs well with the existing output schema (or provides sufficient detail if none exists).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the description explicitly states this and explains why ('No parameters needed — the profile is determined by the API key.'). This exceeds the baseline for 0-param tools by adding clarity about authentication context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving the calling company's regulatory posture (entity types, actor roles, conditions). It also distinguishes itself from siblings like get_obligations and get_actor_roles by explaining how the profile relates to them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use this tool ('The profile defines WHICH regulations and roles apply'), how to use it for filtering obligations, and when to consider get_actor_roles for extension. It also provides guidance for the incomplete profile case, directing the agent to help the user complete onboarding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deadlinesARead-onlyInspect
Get upcoming regulatory deadlines for compliance calendar tracking.
Returns obligations with deadlines in chronological order, annotated
with days remaining or days overdue. Essential for compliance planning.
Args:
entity_type: Filter by entity type code (e.g. 'credit_institution').
regulation: Filter by regulation code (e.g. 'dora').
days_ahead: How many days ahead to look (default 90, max 730).
include_overdue: Include past-due obligations (default true).
| Name | Required | Description | Default |
|---|---|---|---|
| days_ahead | No | ||
| regulation | No | ||
| entity_type | No | ||
| include_overdue | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by disclosing chronological ordering, days remaining/overdue annotations, the default for include_overdue, and the max for days_ahead. This is useful behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured: opening purpose, return behavior, then parameter list. Every sentence contributes value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations, the description covers the tool's purpose, return characteristics, and all parameters. It is complete for a read-only query tool, with no missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description's Args section fully explains every parameter with examples, defaults, and constraints (e.g., days_ahead max 730). This adds significant meaning beyond the schema's bare titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get upcoming regulatory deadlines for compliance calendar tracking.' It specifies a distinct resource (deadlines) and includes unique behavior (chronological order, days remaining/overdue annotations) that differentiates it from sibling tools like get_obligations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear use case ('Essential for compliance planning') and the filter parameters imply when it should be used. However, it does not explicitly mention alternatives or when NOT to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentARead-onlyInspect
Get full details of a specific regulatory document by its ID.
Returns the document metadata, AI summary, all classification tags,
inline obligations (up to 50 with total count), and a link to the original source.
Use the URL to access the full text on the official regulatory website (EUR-Lex, EBA, ESMA, FIN-FSA).
Get the document_id from search_regulations or list_documents results.
Args:
document_id: The Velvoite document ID (integer from search/list results).
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses specific return content: metadata, AI summary, classification tags, inline obligations (up to 50 with total count), and a link to the original source. It also explains that the URL provides access to the full text on official websites, adding practical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a clear purpose statement, a list of return contents, a hint about using the URL, and an args section for the parameter. Every sentence serves a distinct purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no nested objects, and an output schema exists. The description covers how to obtain the parameter, what the response includes, and how to access the full text. This is fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description compensates by explaining that document_id is 'The Velvoite document ID (integer from search/list results)'. This adds context about the type and source of the ID, which is valuable beyond the schema's bare integer type declaration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full details of a specific regulatory document by its ID'. It distinguishes from sibling tools like search_regulations and list_documents by indicating this is a retrieval tool for a single known document, not a search or list operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to obtain the document_id from search_regulations or list_documents results, providing clear context on when to use this tool. It also mentions using the URL for full text access, but does not explicitly state when not to use it or mention alternatives for other use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_enforcement_decisionsARead-onlyInspect
Get enforcement decisions with structured penalty data.
Returns enforcement actions (fines, warnings, license withdrawals) imposed
by regulators. Each action includes penalty amount, sanctioned entity,
violation categories, and appeal status.
Use this to answer questions like:
- "What fines has FIN-FSA given to credit institutions?"
- "What are the largest penalties for AML violations?"
- "Has anyone been fined for ICT risk management failures?"
- "What's the total penalty exposure for my entity type?"
Combine with get_company_profile to find enforcement actions relevant
to the caller's entity type and regulations.
Args:
regulation: Filter by regulation code (e.g. 'aml', 'dora', 'mifid2', 'gdpr', 'crd_crr').
entity_type: Filter by sanctioned entity type (e.g. 'credit_institution', 'investment_firm', 'crypto_service').
authority: Filter by sanction authority (e.g. 'FIN-FSA', 'ECB', 'Data Protection Ombudsman').
penalty_min: Minimum penalty amount in EUR (e.g. 1000000 for fines >= EUR 1M).
violation_category: Filter by violation type (e.g. 'aml_cdd', 'ict_risk', 'sca', 'governance', 'conduct').
page: Page number (default 1).
per_page: Results per page (default 20, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No | ||
| authority | No | ||
| regulation | No | ||
| entity_type | No | ||
| penalty_min | No | ||
| violation_category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds context about the content (penalty amount, sanctioned entity, violation categories, appeal status) and filterable dimensions, which goes beyond the schema. It does not disclose pagination behavior or sorting, but the output schema likely covers return details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear opening, return details, usage examples, and a well-formatted argument list. Each sentence earns its place and there is no redundant fluff. The front-loaded purpose statement makes it immediately clear what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 7 parameters, an output schema, and annotations, the description is exceptionally complete. It covers purpose, return fields, usage scenarios, related tool, and all parameter semantics. No critical gaps remain for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every parameter is described with meaning and examples: regulation codes like 'aml', entity types, authority, penalty_min with EUR example, violation_category examples, and page/per_page defaults. Since the schema has no parameter descriptions (0% coverage), the description fully compensates by explaining each parameter's purpose and allowable values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Get enforcement decisions with structured penalty data' and specifies what is returned: fines, warnings, license withdrawals with penalty amount, entity, violation categories, and appeal status. This clearly identifies the tool's purpose and differentiates it from siblings like get_enforcement_intelligence or get_company_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit example questions and states 'Combine with get_company_profile to find enforcement actions relevant to the caller's entity type and regulations.' This gives clear context for when to use the tool, though it does not explicitly mention exclusions or alternative tools in the sibling set for cases where enforcement intelligence is more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_enforcement_intelligenceARead-onlyInspect
Get top enforced canonical obligations. Returns obligations ranked by
enforcement activity for risk prioritization.
This is a focused view of canonical obligations filtered to only those
with at least one enforcement action. Use this to identify which
obligations regulators are actively enforcing.
Args:
regulation: Filter by regulation code (e.g. 'dora', 'mica', 'aml').
actor_role: Comma-separated actor roles (e.g. 'credit_institution,significant_institution').
entity_type: Filter by entity type code (e.g. 'credit_institution').
compliance_difficulty: Filter by difficulty: 'low', 'medium', 'high', 'critical'.
min_enforcement_count: Minimum enforcement actions (default 1 — only enforced obligations).
sort: Sort order (default 'enforcement_count_desc').
page: Page number (default 1).
per_page: Results per page (default 20, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | enforcement_count_desc | |
| per_page | No | ||
| actor_role | No | ||
| regulation | No | ||
| entity_type | No | ||
| compliance_difficulty | No | ||
| min_enforcement_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true annotation, the safety profile is known. The description adds behavioral context by explaining the filtering behavior (only obligations with at least one enforcement action via min_enforcement_count default of 1) and ranking by enforcement activity. It does not describe return format or performance, but the output schema covers return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, an explanatory paragraph, and an args list. However, there is slight redundancy: 'Get top enforced canonical obligations' and 'This is a focused view of canonical obligations filtered to only those with at least one enforcement action' convey similar information. Overall, it is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 8-parameter complexity, the presence of an output schema, and read-only annotations, the description is complete. It documents all parameters with examples, notes the default filtering behavior, and explains the tool's purpose, leaving no critical gaps for the agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully document parameters. It does so comprehensively, listing all 8 parameters with types, examples, and defaults (e.g., 'regulation: Filter by regulation code (e.g. 'dora', 'mica', 'aml')'). This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get top enforced canonical obligations' with a specific verb and resource. It further distinguishes itself from siblings by noting it is 'a focused view of canonical obligations filtered to only those with at least one enforcement action,' which separates it from broader obligation-listing tools like get_canonical_obligations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use this to identify which obligations regulators are actively enforcing.' It implies differentiation from broader obligation views but does not explicitly name alternative tools or state when not to use it. This is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eu_regulation_articleARead-onlyInspect
Return verbatim obligation text from the Velvoite corpus for an EU regulation
article, plus the canonical EUR-Lex URL for reference.
Queries the Velvoite corpus directly — no web fetching required.
EUR-Lex blocks direct web fetch; the corpus has the authoritative text.
Requires Velvoite Premium API key.
Supported regulation codes: gdpr, dora, mica, ai_act, mifid2, mifir,
crr, crr3, crd6, aml6, amld4, psd2, sfdr, csrd, emir, idd, solvency2,
eprivacy, bmr, priips.
Args:
regulation: Short regulation code (case-insensitive, e.g. 'gdpr', 'dora').
article: Optional article number (e.g. '28', '30', '5'). Omit to browse
all obligations for the regulation.
| Name | Required | Description | Default |
|---|---|---|---|
| article | No | ||
| regulation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds valuable behavior: it confirms the tool queries the corpus directly, avoids web fetching due to EUR-Lex blocking, and requires a Premium API key. It also clarifies that the corpus is authoritative. This goes beyond the annotations by explaining the data source and access prerequisites. However, it does not disclose potential error conditions or response format, though an output schema exists, so it never falls below a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a purpose sentence, rationale, key requirement, supported codes, and an Args section. It front-loads the primary action. The list of 20 supported codes is somewhat long but necessary for correct invocation; it could arguably be moved to an external reference, but keeping it in the description prevents errors. No redundant words, and each sentence adds value. Slightly verbose due to the code list, but appropriately so.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two parameters, one optional; read-only; output schema present), the description covers all necessary ground: what it returns, data source, why not to use web fetch, API key requirement, supported inputs, and the behavior of omitting article. The output schema handles return structure, so no additional format explanation is needed. It is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only titles without descriptions (0% coverage), so the description carries full responsibility. It delivers: 'regulation: Short regulation code (case-insensitive, e.g. 'gdpr', 'dora')' and 'article: Optional article number (e.g. '28', '30', '5'). Omit to browse all obligations for the regulation.' These are clear, include examples, and explain default behavior for article. The list of acceptable regulation codes is also included, making both parameters fully self-documenting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear statement: 'Return verbatim obligation text from the Velvoite corpus for an EU regulation article, plus the canonical EUR-Lex URL for reference.' This names a specific verb (return), resource (EU regulation article in Velvoite corpus), and output (verbatim text + URL). It also lists supported regulation codes, further clarifying scope and distinguishing it from broader tools like get_obligations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains why this tool exists: 'Queries the Velvoite corpus directly — no web fetching required. EUR-Lex blocks direct web fetch; the corpus has the authoritative text.' This gives the agent a clear decision heuristic (use when you need verbatim obligations and want to avoid web fetch issues). It also states the API key requirement and the optional article parameter behavior. However, it does not explicitly name alternatives or exclusions (e.g., vs. search_eu_regulation_text), so it doesn't fully earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eurlex_documentARead-onlyInspect
Look up any EUR-Lex document by CELEX number via CELLAR SPARQL (live).
Returns title, date, and URLs for the full text.
For CJEU case law (CELEX starting with 61 or 62): queries CELLAR SPARQL and
returns title, date, and URL. For legislative acts (regulations, directives —
CELEX starting with 3): returns the EUR-Lex URL directly (CELLAR does not
reliably index final legislative acts via SPARQL).
Use get_eu_regulation_article for known regulation codes (gdpr, dora, mica…).
Requires Velvoite Premium API key.
CELEX format:
32022R2554 → Regulation (year 2022, number 2554) = DORA
32014L0065 → Directive (year 2014, number 65) = MiFID II
62021CJ0089 → CJEU judgment, case C-89/21
32023R1114 → Regulation (year 2023, number 1114) = MiCA
Args:
celex: CELEX number, e.g. '32022R2554'. Case-insensitive.
| Name | Required | Description | Default |
|---|---|---|---|
| celex | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the Velvoite Premium API key requirement, the live nature of the query, and a known limitation: 'CELLAR does not reliably index final legislative acts via SPARQL.' This adds context beyond readOnlyHint and openWorldHint annotations, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, but it is somewhat lengthy due to multiple examples. All content is useful, yet some examples could be condensed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return values are structurally defined), the description covers the tool's scope, limitations, auth requirements, and alternatives. It is complete for a single-parameter lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the celex parameter (0% coverage), but the description fully compensates with an 'Args' section, CELEX format examples, and case-insensitivity note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action and resource: 'Look up any EUR-Lex document by CELEX number via CELLAR SPARQL (live).' It also differentiates from siblings by explicitly recommending get_eu_regulation_article for known regulation codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use get_eu_regulation_article for known regulation codes (gdpr, dora, mica…).' Additionally, it explains when CELLAR SPARQL is used vs. direct URL for legislative acts, clarifying alternatives and limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feedbackARead-onlyInspect
Get user feedback for QA review. Requires admin API key.
Filters: status (new/reviewed/resolved/dismissed), feedback_type (data_quality/bug/feature_request/other),
context_type (document/obligation/general).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No | ||
| context_type | No | ||
| feedback_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and the description adds the admin API key requirement, a valuable behavioral disclosure. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a clear purpose sentence, an auth requirement, and a well-structured filter list. Every sentence provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description adequately covers purpose, auth, and filter options. This is sufficient for a simple filtered-list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description compensates by enumerating valid values for status, feedback_type, and context_type. It omits any explanation of the limit parameter, but the name and default value make it self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves user feedback for QA review, using a specific verb and resource. Distinguishes itself from sibling tools that fetch obligations, documents, or company data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context (QA review) and a prerequisite (admin API key). However, it does not explicitly mention alternatives or when not to use the tool, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_finnish_companyARead-onlyInspect
Look up a Finnish company in the PRH Trade Register by business ID (Y-tunnus).
Returns company name, status, registered address, company form, registration date.
Args:
business_id: Finnish business ID / Y-tunnus in format '1234567-8'.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description does not contradict them. It adds value by specifying the exact return fields ('company name, status, registered address, company form, registration date'), which gives the agent a clear expectation beyond the annotation's safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences plus a single parameter explanation. Every sentence provides distinct information: the lookup action, the returned fields, and the parameter format. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter lookup with output schema, annotations, and a clear parameter format, the description is sufficiently complete. It covers what the tool does, what it returns, and how to provide the input, making it easy for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no description for 'business_id', but the tool description includes an Args section that defines it as 'Finnish business ID / Y-tunnus' and provides the required format '1234567-8'. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Look up'), a specific resource ('Finnish company in the PRH Trade Register'), and a specific key ('business ID (Y-tunnus)'). This clearly distinguishes it from siblings like search_finnish_companies, which would be used to find companies without a known ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a business ID is known, but it does not explicitly say when to use this tool over alternatives or mention sibling tools. It offers no exclusions or alternative recommendations, leaving the comparison to be inferred from the parameter requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_finnish_statuteARead-onlyInspect
Return the canonical Finlex URL for a Finnish statute so Claude can fetch its text.
Finlex (finlex.fi) is the official Finnish statute database — no public JSON API exists,
but the URL can be fetched with WebFetch to retrieve the statute text.
Accepts a short law code (e.g. 'TSL', 'OYL', 'SRL', 'LLL') OR a direct year/number
reference (e.g. '2012/747', '2014/610') for statutes not in the known-code list.
Use search_finnish_statutes to find the year/number for an unknown statute.
Known codes include: TSL, OYL, TVL, SRL, AML, MLL, LLL, RPTRL, AIFML, SIJRL,
VYL, FIVAL, VVTL, HETIL, LSL, KSL, YTL, VLL, TAL, KEKSINTOL, MRIL.
Args:
law_code: Short law code (e.g. 'TSL', 'SRL') or year/number (e.g. '2012/747').
Case-insensitive.
section: Optional section in 'chapter:paragraph' format (e.g. '3:5', '6:3').
Omit for the full act.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | ||
| law_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds important context: Finlex has no public JSON API, so the URL must be fetched via WebFetch, and the tool returns a URL, not the statute text. It does not mention failure modes, but the annotations lower the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description opens with the core purpose, then provides useful background, input modes, and an explicit list of known codes. The structure is clear (paragraphs and an Args section), and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It fully covers purpose, input syntax, when to use an alternative, external fetch behavior, and defaults. Given the tool's simple scope and the presence of an output schema, no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter-semantics burden. It fully explains law_code (short code OR year/number, case-insensitive) and section ('chapter:paragraph' format, omit for full act), which is not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Return the canonical Finlex URL for a Finnish statute') and clearly identifies the resource and outcome. This distinguishes it from sibling tools like search_finnish_statutes and other Finnish legal tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use search_finnish_statutes for unknown statutes and specifies the two accepted input forms (law code or year/number). This gives clear when-to-use guidance and names an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kho_decisionARead-onlyInspect
Return access details for a Finnish Supreme Administrative Court (KHO) precedent decision.
Requires Velvoite Premium API key.
KHO decisions are cited as KHO:YYYY:N (e.g. KHO:2024:52).
Use search_kho_decisions(year) to browse all decisions for a given year.
ACCESS PATTERN — follow this order:
1. Use the returned search_query with web_search to find the kho.fi page
2. From search results, fetch the kho.fi URL directly
3. Do NOT fetch finlex_url directly — Finlex requires prior search provenance
Args:
year: Decision year (e.g. '2024').
number: Decision number within the year (e.g. '52').
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | ||
| number | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description adds meaningful context: requires 'Velvoite Premium API key', mandates a search-first access pattern, and warns that Finlex requires prior search provenance. It also implies a returned search_query field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and well-structured: starts with purpose, then prerequisites, citation context, alternative, and a numbered access pattern. Every sentence contributes essential guidance, and the Args section is clearly formatted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (access pattern, API key requirement, citation format) and the presence of an output schema, the description covers all necessary aspects for selecting and invoking the tool correctly. It also references sibling functionality for broader browsing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions (0% coverage), but the description's Args section explains both 'year' and 'number' with format and examples ('Decision year (e.g. '2024')', 'Decision number within the year (e.g. '52')'). This fully compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Return access details for a Finnish Supreme Administrative Court (KHO) precedent decision' with a specific verb and resource. It also differentiates from sibling search_kho_decisions by explicitly noting that tool for browsing all decisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It directly references an alternative ('Use search_kho_decisions(year) to browse all decisions for a given year') and provides a detailed access pattern with ordering and an explicit prohibition ('Do NOT fetch finlex_url directly'). This gives clear when-to-use and how-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_obligationsARead-onlyInspect
Get regulatory obligations - specific requirements extracted from regulations.
Each obligation includes the requirement text, applicable article reference,
deadline, which entity types it applies to, actor roles, and current status.
Results are paginated (max 50 per page).
Supports keyword search via the query parameter (trigram + ILIKE matching on obligation text).
Combine with regulation, entity_type, and actor_role filters for precise results.
Set canonical=True to get deduplicated canonical obligations with enforcement
intelligence instead. Canonical obligations return one entry per unique legal
requirement per actor role, with compliance difficulty and enforcement metrics.
Use get_actor_roles first to discover available actor roles per regulation.
Args:
entity_type: Filter by entity type code (e.g. 'credit_institution', 'payment_institution').
regulation: Filter by regulation code (e.g. 'dora', 'mica', 'aml').
status: Filter by status: 'upcoming', 'active', 'overdue', or 'expired'.
query: Keyword search on obligation text (e.g. 'ICT risk', 'strong customer authentication').
actor_role: Comma-separated actor roles to filter by (e.g. 'credit_institution,significant_institution'). Use get_actor_roles to see available roles.
canonical: If True, return deduplicated canonical obligations with enforcement intelligence instead of raw obligations.
page: Page number (default 1).
per_page: Results per page (default 20, max 50).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| query | No | ||
| status | No | ||
| per_page | No | ||
| canonical | No | ||
| actor_role | No | ||
| regulation | No | ||
| entity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the readOnlyHint annotation: pagination limits, trigram + ILIKE search, canonical mode semantics, and the structure of returned obligations. It provides rich detail about how the tool behaves, far exceeding what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary, usage notes, and a detailed Args list. Each sentence provides essential information without redundant padding. The length is justified by the complexity of the tool, and the organization improves readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, key behaviors, all parameters, pagination, search, and canonical mode. With an output schema present, describing return values is unnecessary. For an 8-parameter tool, this description is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema having no per-parameter descriptions (0% coverage), the description's Args section thoroughly explains every parameter, including valid examples, value ranges, and cross-references (e.g., actor_role uses get_actor_roles). This fully compensates for the schema's lack of detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves regulatory obligations, with a specific verb ('Get') and resource ('regulatory obligations'). It distinguishes itself from siblings by explaining the difference between raw obligations and canonical obligations via the canonical flag. The phrase 'specific requirements extracted from regulations' adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use the tool, including combining filters and using get_actor_roles first. However, it does not explicitly mention alternatives (e.g., get_canonical_obligations) or when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_obligation_summaryARead-onlyInspect
Get obligation counts grouped by regulation_code.
Returns total count and per-regulation breakdown with status counts
(active, upcoming, overdue, expired) plus verified and with_deadline counts.
No full obligation text — just counts for a quick overview.
Args:
entity_type: Filter to obligations applying to this entity type (e.g. 'credit_institution', 'payment_institution').
actor_role: Comma-separated actor roles to filter by (e.g. 'financial_entity,credit_institution').
Use get_company_profile to see the company's roles, or get_actor_roles to browse all available roles.
| Name | Required | Description | Default |
|---|---|---|---|
| actor_role | No | ||
| entity_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to restate that. It adds valuable behavioral context by stating the output is counts only, the grouping by regulation_code, and the status breakdowns. It also sets expectations about what is NOT included (full obligation text), which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, then the return summary, then parameter details. Every sentence provides value without redundant information. The structure is logical and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (so return fields are documented elsewhere), the description covers all necessary context: what the tool does, what it returns, what filters are available, and how to find valid filter values. It is sufficiently complete for an agent to select and invoke this tool appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining both parameters with concrete examples ('credit_institution', 'financial_entity,credit_institution') and referral to related tools for discovering valid roles. This adds meaningful semantics beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('obligation counts grouped by regulation_code'), and clearly distinguishes itself from sibling tools by explicitly stating 'No full obligation text — just counts for a quick overview.' This directly separates it from get_obligations and similar retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool ('quick overview') and contrasts it with full obligation text, but it does not explicitly name the alternative tool (e.g., 'use get_obligations for full details'). It does provide excellent guidance for parameter values by pointing to get_company_profile and get_actor_roles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_changesARead-onlyInspect
Get recently published or updated regulatory documents.
Shortcut for 'what is new this week' - returns documents from the last N days,
sorted by publication date (newest first). Useful for weekly regulatory briefings.
Args:
days: Look back N days (default 7).
entity_type: Filter by entity type code.
regulation: Filter by regulation family code.
urgency_max: Only include items at or above this urgency (1=critical, 2=high, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| regulation | No | ||
| entity_type | No | ||
| urgency_max | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, and the description adds valuable behavioral details: it returns documents from the last N days, sorted by publication date (newest first), and explains the urgency_max logic (1=critical, 2=high). This goes beyond the annotations, though it doesn't discuss authentication or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: a one-sentence purpose, a brief use-case statement, and a clean Args list. Every sentence earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with four optional parameters, the description covers the purpose, the timing scope, the sort order, and the meaning of each parameter. An output schema exists, so return values are not the description's responsibility. This is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions for properties, but the description's Args section provides clear explanations for all four parameters: days (look back N days, default 7), entity_type (filter by code), regulation (filter by family code), and urgency_max (at or above this urgency). This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb+resource: 'Get recently published or updated regulatory documents.' It also positions itself as a 'Shortcut for what is new this week,' distinguishing it from sibling tools like search_regulations or get_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context ('Useful for weekly regulatory briefings') and explains the lookback window and sorting. However, it does not explicitly mention alternatives or when not to use this tool, though the context is sufficient for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsARead-onlyInspect
Get an overview of the Velvoite regulatory corpus.
Returns document counts by source, regulation family, entity type, urgency distribution, obligation summary, and date range.
Call this FIRST to orient yourself before running queries. No parameters needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context about the returned statistical summaries and date range, but the readOnlyHint and openWorldHint annotations already cover safety and scope. It does not disclose potential rate limits or other behavioral traits, but the tool is a simple read-only overview, so the added detail is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: first states the purpose, second lists outputs, third gives usage guidance. Information is front-loaded and every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a zero-parameter overview with an output schema present, the description fully covers what it returns, when to use it, and that no parameters are needed. It is complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, so the description's note 'No parameters needed' is sufficient. Baseline for 0 params is 4, and the description clearly states this, adding minimal but necessary confirmation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get an overview of the Velvoite regulatory corpus' with a specific verb and resource, and enumerates the output categories (counts by source, regulation family, etc.). This distinguishes it from sibling tools like get_document or list_documents, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Call this FIRST to orient yourself before running queries,' providing clear usage context. It does not mention alternatives or when not to use it, but for a zero-parameter overview tool this is sufficient. No exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verification_statsARead-onlyInspect
Get verification progress for obligations across all regulations.
Returns total, verified, unverified counts overall and per regulation, with percentage verified. Use this to track human review progress. No parameters needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds valuable return-format details: 'total, verified, unverified counts overall and per regulation, with percentage verified.' This goes beyond the annotations and schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three short sentences that cover purpose, return contents, and usage. No filler or redundant details. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and an output schema. The description covers purpose, return data, and intended usage. It is fully sufficient for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the description explicitly states 'No parameters needed,' which is helpful for the agent. With 0 params, the baseline is 4, and the description confirms the absence of parameters without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get verification progress for obligations across all regulations.' This is a specific verb+resource+scope description. It doesn't explicitly differentiate from siblings like get_stats, but the resource is distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage context: 'Use this to track human review progress.' It doesn't mention when not to use it or list alternatives, but the guidance is clear for the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsARead-onlyInspect
Browse regulatory documents with filters and pagination.
Returns a paginated list of documents with summaries, tags, doc_purpose
(regulation_text, enforcement, reference, irrelevant), and doc_jurisdictions
(e.g. ['eu'], ['fi'], ['de']).
Use this for filtered browsing (e.g. all DORA documents from the last 30 days).
Use search_regulations instead when you have specific keywords to search for.
Args:
source: Filter by data source code: eur_lex, eba, esma, eiopa, finfsa, bafin.
regulation: Filter by regulation family code: dora, mica, aml, mifid2, crd_crr, psd, csrd, sfdr, ai_act, emir, solvency, idd, gdpr.
entity_type: Filter by entity type: credit_institution, payment_institution, e_money, investment_firm, fund_manager, aifm, insurance, pension, crypto_service, crowdfunding, credit_servicer.
urgency_max: Max urgency level (1=critical, 2=high, 3=medium, 4=low, 5=informational). E.g. 2 returns only critical and high urgency items.
days: Only return documents from the last N days (1-365).
page: Page number (default 1).
per_page: Results per page (default 20, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| page | No | ||
| source | No | ||
| per_page | No | ||
| regulation | No | ||
| entity_type | No | ||
| urgency_max | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations include readOnlyHint=true and openWorldHint=false, but the description goes beyond annotations by disclosing the return format (paginated list with summaries, tags, doc_purpose, doc_jurisdictions), the semantics of urgency_max, and days filtering. No contradiction with annotations. The behavioral traits are well disclosed for a read-only browsing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient and front-loaded with the main purpose, followed by a structured 'Args:' block. It is somewhat lengthy due to enumerating many allowed values, but each sentence earns its place. Minor redundancy could be trimmed, but the structure is clear and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 optional filters, pagination), the description is complete: it documents all parameters, explains return fields, provides a usage example, and points to the alternative search_regulations tool. The presence of an output schema further reduces the need to explain return structure. The description leaves no major gaps for an agent to misuse the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden. It thoroughly explains all 7 parameters: source and regulation list allowed enum-like values, entity_type lists allowed types, urgency_max explains the ordinal scale (1=critical to 5=informational), days specifies range (1-365), and page/per_page have defaults and max limit. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Browse regulatory documents with filters and pagination.' It distinguishes itself from sibling tool search_regulations by explicitly noting this is for filtered browsing rather than keyword search. The verb 'browse' and resource 'regulatory documents' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this for filtered browsing (e.g. all DORA documents from the last 30 days). Use search_regulations instead when you have specific keywords to search for.' This tells the agent exactly when to use this tool vs. the alternative, eliminating ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cjeu_casesARead-onlyInspect
Search CJEU case law via EUR-Lex CELLAR SPARQL (live — not limited to Velvoite corpus).
Returns cases matching keywords in the case title.
Use to find court decisions on a specific regulation, topic, or legal concept.
Fetch the returned url to read the full judgment text.
Requires Velvoite Premium API key.
Args:
query: Keywords to search in case titles (e.g. 'money laundering', 'crypto-assets',
'payment institution authorisation'). Phrase search — keep it specific.
article_ref: Optional extra keyword to append to the title search
(e.g. 'Directive 2015/849', 'GDPR Article 17'). CJEU titles rarely
contain article numbers — use the regulation name instead.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| article_ref | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, and the description adds the critical Velvoite Premium API key requirement and the fact that results are based on title matching. It also mentions fetching the returned URL for full judgment text. This provides valuable context beyond the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a brief summary paragraph followed by a clearly formatted Args section. Every sentence adds value, and there is no redundancy with the annotations or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and the description covers purpose, usage context, parameter semantics, authentication requirements, and next steps (fetch URL for judgment), the description is complete for an AI agent to select and correctly invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema itself has minimal descriptions, but the Args block provides rich semantics for both parameters, including concrete examples ('money laundering', 'Directive 2015/849') and usage advice ('keep it specific', 'use the regulation name instead'). This fully compensates for the schema's lack of description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches CJEU case law via EUR-Lex CELLAR SPARQL and returns cases matching keywords in the case title. The phrase 'live — not limited to Velvoite corpus' distinguishes it from other potential search tools. The verb-resource structure is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use to find court decisions on a specific regulation, topic, or legal concept.' It also provides practical search tips like 'Phrase search — keep it specific' and warns that CJEU titles rarely contain article numbers. However, it does not explicitly name alternative tools for other use cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eu_regulation_textARead-onlyInspect
Return EUR-Lex search URL for finding regulation provisions by keyword.
Use when you don't know the exact article number but need to find
relevant provisions. Requires Velvoite Premium API key.
Args:
query: Search terms (e.g. 'data processing agreement processor obligations').
regulation: Optional regulation code to scope the search (e.g. 'gdpr').
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| regulation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true, so the description's contribution is the API key requirement and the clarification that it returns a URL rather than the actual text. This adds value beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by usage context, a requirement, and parameter explanations. Every sentence contributes value without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and an output schema, the description covers purpose, usage, auth requirement, and parameter semantics. The existence of an output schema means return value details are not necessary, and the description sufficiently communicates the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining both parameters: query is described with an example ('data processing agreement processor obligations') and regulation as an optional scope example ('gdpr'). This provides meaningful semantics beyond the bare property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Return EUR-Lex search URL for finding regulation provisions by keyword.' This is a specific verb+resource combination. It also distinguishes from siblings by mentioning 'when you don't know the exact article number,' implying an alternative for article lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage trigger: 'Use when you don't know the exact article number but need to find relevant provisions.' It also mentions the Velvoite Premium API key requirement, but does not explicitly name alternative tools like get_eu_regulation_article, so it lacks full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_finnish_companiesARead-onlyInspect
Search Finnish companies by name in the PRH Trade Register.
Use to find a business ID when you only know the company name,
or to check whether a company name is already taken.
Args:
name: Company name or partial name to search.
city: Optional municipality to narrow results (e.g. 'Helsinki', 'Tampere').
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds that the search is by exact or partial name and accepts optional city filtering, plus a mention of the PRH Trade Register source. It doesn't disclose any limitations, but for a simple search, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the primary action, and uses a structured Args list. All sentences are purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple search context, read-only annotations, and existing output schema, the description covers purpose, use cases, and parameters. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema properties have no descriptions; the description documents both parameters: name ('Company name or partial name') and city ('Optional municipality to narrow results') with examples. This fully compensates for schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search Finnish companies by name in the PRH Trade Register' with specific use cases, distinguishing it from sibling search tools targeting statutes or court decisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit use cases: 'find a business ID when you only know the company name' and 'check whether a company name is already taken.' It does not explicitly name alternatives like get_finnish_company, but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_finnish_statutesARead-onlyInspect
Return Finlex search URL for Finnish statute keyword search.
Finlex has no public JSON search API — returns the search URL for Claude to fetch.
Args:
query: Search terms in Finnish or English (e.g. 'kilpailukielto', 'non-compete').
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds a critical behavioral trait: it returns a URL rather than direct results because Finlex has no public JSON API. This is significant context beyond annotations, fully clarifying the tool's operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded. The first sentence states the purpose, the second explains the rationale for the unusual return type, and the args list adds parameter guidance. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, existing output schema, and annotations, the description provides complete context: it explains the return type, the query parameter, and the external constraint (no API). Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only the parameter name 'query' with no description (0% coverage). The description fully compensates by explaining the parameter: 'Search terms in Finnish or English' and providing examples like 'kilpailukielto' and 'non-compete'. This gives clear guidance on what to input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Return Finlex search URL for Finnish statute keyword search.' It specifies the resource (Finnish statutes via Finlex) and the action (search keyword), distinguishing it from sibling tools like search_finnish_companies or get_finnish_statute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: Finlex has no public JSON search API, so the tool returns a search URL for Claude to fetch. This implies when to use the tool (searching Finlex statutes) and how to handle the output. However, it does not explicitly mention alternative tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_kho_decisionsARead-onlyInspect
Return a search query to discover KHO (Finnish Supreme Administrative Court)
precedent decisions for a given year.
Requires Velvoite Premium API key.
NOTE: The Finlex listing page is client-side rendered and cannot be fetched directly.
Use the returned search_query with web_search instead — this returns an indexed list
of decisions from kho.fi that can then be fetched individually.
Then use get_kho_decision(year, number) to retrieve a specific decision.
Args:
year: Year to browse (e.g. '2024', '2023').
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns a search query rather than decisions, requires a premium key, and cannot directly fetch the Finlex page. These are valuable behavioral details beyond the readOnlyHint and openWorldHint annotations, with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and structured with a NOTE and Args section. Each sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of a single parameter and the existence of an output schema, the description is complete. It covers the prerequisite, the limitation, the workflow, and the next step, making it fully contextual.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only labels the parameter as 'Year', while the description adds 'Year to browse (e.g. '2024', '2023')', providing context and examples. While basic, this compensates for the 0% schema description coverage adequately for a single simple parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns a search query to discover KHO precedent decisions for a given year. It distinguishes itself from get_kho_decision by explaining the returned query is for web_search, not direct retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit workflow: use the returned search_query with web_search, then fetch individually with get_kho_decision. Also mentions the API key requirement and explains why direct fetching is impossible (client-side rendering), giving clear when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_regulationsARead-onlyInspect
Search the regulatory corpus using keyword / trigram matching.
Uses PostgreSQL trigram similarity on document titles and summaries.
Returns documents ranked by relevance with summaries and classification tags.
Prefer list_documents with filters (regulation, entity_type, source) first.
Only use this for free-text keyword search when structured filters aren't sufficient.
Args:
query: Search terms (e.g. 'strong customer authentication', 'ICT risk', 'AML reporting').
per_page: Number of results (default 20, max 100).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| per_page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotation, the description discloses the underlying mechanism (PostgreSQL trigram similarity on titles/summaries) and the output characteristics (ranked by relevance, with summaries and classification tags). No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct: a brief purpose opener, a technical detail sentence, a returns sentence, usage guidance, and parameter docs. Every sentence adds value and is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description doesn't need to explain return values. It covers inputs, usage context, behavioral expectations, and parameter semantics comprehensively for a search tool with moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description thoroughly documents both parameters: 'query' with concrete examples and 'per_page' with default and maximum. This fully compensates for the schema's lack of explanatory text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: searching the regulatory corpus using keyword/trigram matching. It distinguishes itself from sibling tools like list_documents by explicitly naming it as the structured-filter alternative, and from other search tools by specifying the corpus scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Prefer list_documents with filters first' and 'Only use this for free-text keyword search when structured filters aren't sufficient.' This directly tells the agent when to use this tool versus an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityBmaintenanceEU MiCA compliance MCP for crypto-asset issuers, exchanges, and CASPs.7MIT
- FlicenseAqualityDmaintenanceEnables users to search and monitor European regulatory publications including GDPR, ISO27001, and AI Act. Supports creating monitoring topics, generating compliance briefs, and setting up notifications for regulatory updates.5
- Alicense-qualityBmaintenanceEnables algorithmic trading compliance with MiFID II Article 17, providing tools for strategy classification, RTS 6 testing, and best execution audits. Also supports EU AI Act compliance.MIT
- AlicenseBqualityCmaintenanceAI workbench for financial contract analysis, risk analytics (VaR/CVaR, RWA Basel III), regulatory compliance (EMIR, REMIT, MiFID II, CBAM, EUDR) and counterparty due diligence (KYB/UBO, OFAC, IMO). Zero Retention. 8 MCP tools.830MIT