OpenAccountants
Server Details
Open-source AI accounting skills verified by licensed accountants (tax, VAT, payroll).
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- openaccountants/openaccountants
- GitHub Stars
- 314
- Server Listing
- OpenAccountants
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 14 of 14 tools scored.
Each tool has a clearly distinct purpose: listing, searching, fetching, checking, validating, and orienting. Even related tools like get_skill, search_skills, and list_skills are unambiguously separated by their focus on exact slug, keyword discovery, and filtered browsing. No two tools appear to do the same thing.
The majority of tools follow a consistent verb_noun pattern (e.g., get_skill, search_rules, list_verifiers). However, 'start' and 'start_help' are slightly inconsistent: one is a bare verb, the other is verb_noun, which breaks the uniform style. This is a minor deviation in an otherwise predictable naming scheme.
With 14 tools, the set is well-scoped for a tax/accounting guidance server that covers skills, rules, deadlines, and live checks. Each tool contributes to a clear workflow without redundancy, and the count sits comfortably within the ideal range.
The tool surface provides a complete lifecycle for tax assistance: orientation (start_help, start), discovery (list_*, search_*), specific lookups (get_skill, check_audit_exemption, validate_vat_number), and feedback (share_with_openaccountants). There are no obvious dead ends, and the domain coverage is comprehensive for its stated purpose.
Available Tools
14 toolscheck_audit_exemptionCheck statutory audit exemption (deterministic, cited, verified)ARead-onlyIdempotentInspect
DETERMINISTIC check of whether a private limited company qualifies for statutory audit exemption, from aggregate figures any ledger can provide (turnover, balance sheet total, average employees). Returns a determination ('exempt' | 'review' | 'audit_required' | 'cannot_determine'), the per-criterion threshold table showing exactly why, the canonical rule citation it rests on, and the LIVE verification envelope (whether a named accountant has attested the thresholds — surface that status prominently; 'draft' means treat as a source-cited draft). COVERAGE TODAY: MT (Article 185(2) micro thresholds) and GB (small-company thresholds, both pre and post 6 April 2025 eras). Most exemption regimes are two-consecutive-years tests, so pass prior_year figures when available — without them a qualifying year returns 'review', not 'exempt'; that is correct behaviour, not an error. 'cannot_determine' is a first-class outcome (unsupported jurisdiction, wrong currency, entity shapes needing judgment, or the cited fact changed since calibration). Never override the determination with training-data thresholds.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | Yes | Currency of the figures — must match the regime (EUR for MT, GBP for GB); convert first, never guess a rate. | |
| turnover | Yes | Revenue/turnover for the year, in the jurisdiction's currency. | |
| prior_year | No | Prior-year figures for the two-consecutive-years test. | |
| entity_type | No | Optional. 'private_ltd' (default), 'plc', 'branch'. Non-private shapes route to a human. | |
| group_member | No | Optional. True if the company is part of a group — group thresholds need a reviewer, so this forces 'review'. | |
| jurisdiction | Yes | ISO-style code. MT and GB supported today. | |
| employees_average | Yes | Average number of employees during the year. | |
| financial_year_end | Yes | ISO date the financial year ends, e.g. '2025-12-31'. | |
| balance_sheet_total | Yes | Total assets at the balance sheet date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| caveats | No | |
| escalate | No | |
| next_action | No | |
| verification | No | status ('accountant_verified'|'research_verified'|'draft'), verified_by[], last_verified_at, skill_slug, era. Surface the status to the user. |
| criteria_rule | No | |
| determination | No | 'exempt' | 'review' | 'audit_required' | 'cannot_determine' |
| rule_citation | No | skill_slug, fact_id, canonical_key, statutory_reference, url. |
| thresholds_applied | No | Per-criterion: threshold vs actual, met true/false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint), the description reveals critical behavioral traits: the tool is deterministic, returns a live verification envelope whose status must be surfaced, and treats 'cannot_determine' as a first-class outcome. It explains that 'review' is not an error when prior-year data is absent. 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 long but well-structured: it front-loads the core purpose with 'DETERMINISTIC check', then lists return components, coverage, and critical caveats. Its length is justified by the tool's complexity, though a few parenthetical asides (e.g., the exact 6 April 2025 eras) could be trimmed without losing essential 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?
Given the tool's complexity (9 parameters, nested objects, output schema), the description is remarkably complete. It covers supported jurisdictions and era changes, explains each major outcome, the verification envelope, and edge cases (missing prior-year data, unsupported jurisdiction, wrong currency, changed facts). This is sufficient for an agent to 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?
Although the input schema already documents all parameters, the description adds substantial semantic value that the schema alone doesn't convey: the two-consecutive-years test requiring prior_year, the consequence of missing it, the currency-match requirement, and that entity_type 'non-private shapes route to a human' while group_member forces 'review'. This meaningfully exceeds schema baseline.
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 the tool's exact function: 'DETERMINISTIC check of whether a private limited company qualifies for statutory audit exemption'. It names the resource (audit exemption), the operation (check), and the input source (aggregate figures). It distinguishes itself from sibling tools like search_rules or validate_vat_number by focusing on the statutory determination.
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 when-to-use and how-to-handle guidance: 'pass prior_year figures when available', 'without them a qualifying year returns review, not exempt; that is correct behaviour', and 'Never override the determination with training-data thresholds'. It also clarifies conditions for 'cannot_determine', effectively telling the agent when the tool is applicable and when to defer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deadlinesUpcoming tax deadlines for a jurisdictionARead-onlyIdempotentInspect
Upcoming filing/payment deadlines and recurring filing rhythms (monthly VAT, quarterly instalments) for a country or US state, from the OpenAccountants tax calendar. Use it whenever the user asks 'when is X due', mentions a filing date, or when a heads-up about an imminent deadline would help. Signed-in users with a saved home jurisdiction can omit jurisdiction — it fills from their profile (the response marks jurisdiction_source accordingly).
| Name | Required | Description | Default |
|---|---|---|---|
| horizon_days | No | How far ahead to look (default 120, max 366). | |
| jurisdiction | No | ISO code, slug, or name ('MT', 'US-CA', 'Malta'). Optional for signed-in users with a saved home jurisdiction. |
Output Schema
| Name | Required | Description |
|---|---|---|
| next_action | No | |
| calendar_url | No | |
| horizon_days | No | |
| jurisdiction | Yes | |
| recurring_rhythms | No | |
| upcoming_deadlines | Yes | |
| jurisdiction_source | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, lowering the bar. The description adds context beyond annotations by naming the data source ('OpenAccountants tax calendar') and describing the jurisdiction fallback behavior for signed-in users, including the response marking jurisdiction_source. It doesn't contradict 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?
Three sentences, all purposeful. The first sentence front-loads the main purpose, the second gives usage triggers, and the third covers an important parameter detail. No wasted words or redundant restating of schema fields.
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?
With rich annotations, a complete parameter schema, and an output schema present, the description covers all necessary context: what the tool returns, when to use it, and key behavioral nuances. It doesn't need to explain return values since the output schema handles that. It is complete for a tool of this 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?
Schema description coverage is 100% for both parameters, so the baseline is 3. The description adds meaning beyond schema by explaining that jurisdiction can be omitted for signed-in users and is filled from their profile, with the response indicating this via jurisdiction_source. This goes beyond the schema's basic 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 uses a specific verb and resource: 'Upcoming filing/payment deadlines and recurring filing rhythms... for a country or US state.' It clearly distinguishes this tool from siblings like search_rules or list_jurisdictions by focusing on deadlines from the OpenAccountants tax calendar. The scope is precise.
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 gives explicit when-to-use guidance: 'Use it whenever the user asks "when is X due", mentions a filing date, or when a heads-up about an imminent deadline would help.' It also notes that signed-in users can omit jurisdiction. However, it does not explicitly mention when not to use it or alternatives, though the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skillGet a tax skillARead-onlyIdempotentInspect
Fetch a published skill by slug, including its current-version markdown, quality tier, named verifier (where accountant-verified), and a provenance/attribution footer.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Skill slug, e.g. 'us-schedule-c-and-se-computation' | |
| reason | No | One sentence on WHY you're making this call, in the user's terms (for routing analysis only). Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| skill | Yes | The skill record (slug, name, jurisdiction, tier, etc.) |
| key_facts | No | Optional at-a-glance facts (rates/thresholds/deadlines/verifier/advisory) — present only where the skill carries a structured key_facts block; omitted otherwise. |
| guardrails | No | |
| provenance | Yes | |
| next_action | No | |
| verification | No | Verification summary |
| section_index | No | Every section of the skill with {index, heading, level, chars, priority, included}. For any section with included:false, fetch it via get_skill_sections({slug, section_index}). |
| current_version | No | Current version. markdown_content holds the compute-core (rates, box maps, rules, worksheet contract); bulky reference sections may be omitted — see section_index. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context: it returns only published skills (not drafts), always the current version, and includes a conditional verifier ('where accountant-verified'). This goes beyond what annotations alone provide.
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 a single, well-structured sentence with no filler. It front-loads the core action and resource, then efficiently lists what is included, earning a perfect score.
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, combined with the rich annotations and an output schema, fully covers the tool's behavior for a simple single-item fetch. It names all key return components (markdown, tier, verifier, footer) and the 'published' constraint, leaving no critical gaps.
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 coverage is 100%: both parameters (slug, reason) are fully described in the schema with examples and purpose. The description adds no additional parameter meaning, so the baseline score of 3 applies.
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 'Fetch' and names the exact resource 'published skill by slug', then enumerates the returned content (markdown, quality tier, verifier, footer). This clearly distinguishes it from sibling tools like list_skills (list vs single) and get_skill_sections (sections vs full skill).
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 a clear use case: when you have a skill slug and need the full published skill content. It does not explicitly mention alternatives or exclusions, but the 'by slug' scope and the return-content list provide enough context for an agent to choose this over listing/searching tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skill_sectionsGet a skill's sectionsARead-onlyIdempotentInspect
Fetch the parsed sections of a skill's current version. Each section has a heading and its markdown content. Use this to pull a specific section that get_skill listed in section_index as not inlined (e.g. a supplier-pattern library) — pass section_index to fetch just that one. Omit it to get every section.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Skill slug | |
| section_index | No | Optional. Return only this section (matches the `index` from get_skill's `section_index`). | |
| section_indices | No | Optional. Return only these sections. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| version | No | |
| sections | Yes | |
| key_facts | No | Optional at-a-glance facts — present only where the skill carries a structured key_facts block; omitted otherwise. |
| guardrails | No | |
| next_action | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds valuable context beyond that: sections are 'parsed', the tool targets the 'current version', and section_index corresponds to get_skill's section_index for non-inlined sections. No contradiction; minor edge-case behaviors (e.g., empty results) are not covered.
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 sentences, all purposeful: first defines the action, second gives the usage scenario, third clarifies the optional behavior. No wasted words or repetition of schema fields.
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?
Output schema exists, so return format is covered externally. The description sufficiently explains parameters, relationship to get_skill, and the effect of omitting section_index. It lacks only minor detail on conflicting indices (section_index vs section_indices), but overall is complete for a simple read-only 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 covers 100% of parameters with descriptions, giving a baseline of 3. The description enriches this by explaining that section_index matches get_skill's index, and provides a concrete example (supplier-pattern library). This adds meaning beyond the schema's simple type/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?
Description states a specific verb ('Fetch') and resource ('parsed sections of a skill's current version'), and clearly distinguishes from sibling get_skill by focusing on sections themselves. The 'not inlined' mention further defines 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?
Explicitly explains when to use: to pull a specific section listed in get_skill's section_index, and when to omit the parameter to get all sections. It references get_skill as the source of indices, giving context, though it does not explicitly name alternatives or exclusion scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jurisdictionsList all jurisdictions coveredARead-onlyIdempotentInspect
Returns every jurisdiction with published skills — countries (ISO 2), US states (US-XX), Canadian provinces — with skill counts, accountant-verified counts, and named lead verifier. Use when the user asks 'which countries does OpenAccountants cover?' or 'what's available for [country]?' Avoids paginating through list_skills to compute this.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| next_action | No | |
| total_skills | No | |
| jurisdictions | No | |
| total_jurisdictions | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds concrete output context—skill counts, accountant-verified counts, named lead verifier, and the exact code formats—which enriches the behavioral picture 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?
Three compact sentences: the first explains the output in detail, the second gives concrete query examples, and the third contrasts with a sibling tool. Every sentence earns its place with no 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?
With no parameters, a rich output schema, and strong annotations, the description fully covers what the tool returns, when to use it, and why it is preferable to list_skills. It is complete for an agent to select and 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 tool has zero parameters, so the baseline is 4. There is no parameter information to add, and the schema coverage is trivially complete. The description compensates by clarifying the output scope and format.
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 resource (jurisdictions with published skills) and the specific verb 'Returns' plus the detail about countries, US states, and Canadian provinces. It also differentiates itself from list_skills by saying it avoids paginating through that endpoint to compute this.
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 gives use-cases: 'Use when the user asks...' and names the alternative (list_skills) with the reasoning for choosing this tool. This is exactly the when/when-not guidance the rubric asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rule_facetsList queryable rule facets (no args)ARead-onlyIdempotentInspect
Returns the metadata you can filter on with search_rules — the live jurisdictions, the domains, roles, block types (rule kinds), statuses, tax years, and a sample of topics — plus the defaults. Call this before search_rules to learn the valid filter values rather than guessing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| filters | No | |
| defaults | No | |
| next_action | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description goes beyond these by specifying that values are 'live,' includes a 'sample of topics' (warning against assuming exhaustiveness), and mentions 'defaults' are provided. This adds meaningful behavioral context without contradicting 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 a single, information-dense sentence followed by a clear action instruction. Every clause adds value—listing facets, noting liveness, and giving usage guidance—with no fluff or repetition of schema/annotation data.
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?
Despite the tool's simplicity, the description fully covers what it returns, when to use it, and why. The presence of an output schema means return-value details need not be in the description. It is complete 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 tool has zero parameters and the schema is empty, so there is nothing to explain. The baseline of 4 applies because the title's '(no args)' and the empty schema fully cover parameter semantics; the description adds no unnecessary param details.
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 'returns the metadata you can filter on with search_rules' and enumerates specific facets (jurisdictions, domains, roles, block types, statuses, tax years, topics, defaults). This specific verb+resource pairing distinguishes it from sibling tools like search_rules and list_jurisdictions.
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 instructs to 'Call this before search_rules' and explains why: 'to learn the valid filter values rather than guessing.' This gives clear temporal context and an alternative (search_rules), fulfilling the 'when/when-not/alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skillsList tax & accounting skillsARead-onlyIdempotentInspect
List published OpenAccountants skills with their quality tier and verification status. Optionally filter by jurisdiction (e.g. 'US', 'MT', 'DE', 'GB'), domain (the accounting area, e.g. 'vat-gst', 'payroll', 'income-tax'), or role ('foundation' | 'compute' | 'orchestrator' | 'reference'). Results are paginated (default 100, max 200 per call) — unfiltered browsing of the full ~1,100-skill catalogue requires paging via offset/next_offset, so jurisdiction/domain filters are strongly recommended.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Filter by pipeline role: foundation, compute, orchestrator, reference. | |
| limit | No | Max skills to return (default 100, max 200). | |
| domain | No | Filter by accounting domain: income-tax, vat-gst, payroll, bookkeeping, e-invoicing, formation, financial-statements, transfer-pricing, tax-optimization, crypto, cross-border, corporate-tax, estate-wealth-tax, references, sector-guidance, tooling. | |
| offset | No | Number of skills to skip — use the next_offset from the previous response to page through results (default 0). | |
| category | No | (Legacy) display label; prefer domain/role. | |
| jurisdiction | No | Filter by jurisdiction code, e.g. 'US', 'MT', 'DE' |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | No | Page size applied to this response. |
| total | No | Total skills matching the filter (across all pages). |
| offset | No | Offset applied to this response. |
| skills | Yes | Matching published skills. |
| next_action | No | |
| next_offset | No | Present when more results remain — pass as offset to fetch the next page. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses concrete behavioral details: pagination limits (default 100, max 200), the need for offset/next_offset for full catalogue browsing, and the recommendation to filter for performance. It also clarifies that only 'published' skills are returned, adding context not captured in annotations or 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 two dense, front-loaded sentences. The first sentence states the core purpose and result fields; the second covers filtering, pagination, and a recommendation. No filler or repetition—every clause 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?
With an output schema present, the description appropriately avoids detailing return values. It covers purpose, filters, pagination, dataset size, and usage recommendations, which is complete for a read-only list tool. The annotations handle safety and idempotence, so no additional caveats are needed.
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 already provides 100% coverage with descriptions for all six parameters, so the baseline is 3. The description adds operational meaning beyond the schema by explaining that filters are strongly recommended for usability, clarifying that the category field is legacy, and connecting pagination behavior to the offset parameter. This pushes it above the baseline.
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, specific verb+resource: 'List published OpenAccountants skills with their quality tier and verification status.' This immediately distinguishes the tool as a listing operation, and the mention of optional filters by jurisdiction, domain, and role differentiates it from sibling search tools like search_skills.
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 for when to use the tool and how to use it effectively: it explains pagination, recommends filters for the ~1,100-skill catalogue, and notes the preference for jurisdiction/domain over role. However, it does not explicitly mention when to prefer alternatives like search_skills or get_skill, so it falls short of the 'explicit alternatives' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_verifiersList named accountant verifiersARead-onlyIdempotentInspect
Returns named licensed accountants who have signed off on OpenAccountants jurisdictions, with their credentials and covered jurisdictions. Use when the user asks who verified a skill or wants to see the verifier network. If the user wants one of them to review their work, that goes through share_with_openaccountants with request_review: true — at the user's explicit request only.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | No | Optional ISO code filter — only return verifiers for this jurisdiction. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| verifiers | No | |
| next_action | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is well covered. The description adds context about the nature of the data (licensed accountants, signed off on jurisdictions) and the optional jurisdiction filter, exceeding what annotations state. 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?
Two sentences, front-loaded with the core purpose, followed by usage guidance and an explicit alternative. No redundant wording, every sentence contributes valuable 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 tool's simplicity, strong annotations, output schema presence, and complete parameter schema, the description fully covers purpose, usage, and constraints. The only minor omission is return format, but the output schema fills that gap, making the description complete.
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 has full description coverage for the single optional 'jurisdiction' parameter, so the schema already carries parameter semantics. The description does not add new parameter-level details beyond what the schema provides, making the baseline score appropriate.
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 ('Returns') and resource ('named licensed accountants... with their credentials and covered jurisdictions'), clearly distinguishing this tool from siblings like list_jurisdictions or share_with_openaccountants. It precisely communicates the tool's scope and output.
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 states when to use ('when the user asks who verified a skill or wants to see the verifier network') and provides a clear alternative for a related scenario: if the user wants a review, use share_with_openaccountants with request_review: true, at the user's explicit request. This is excellent contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_rulesSearch rules across jurisdictionsARead-onlyIdempotentInspect
Query individual tax RULES/FACTS (rates, thresholds, rules, definitions, tables) ACROSS jurisdictions and metadata, and get back a bundled markdown rule set plus the jurisdiction's OFFICIAL SOURCE. Unlike get_skill (one whole skill), this assembles a cross-cutting SET — e.g. 'VAT rates in MT, IE and DE', 'all income-tax thresholds for 2025', or 'rules mentioning reverse charge'. IMPORTANT: this returns human-reviewed GUIDANCE, and does NOT certify that a figure is current — confirm each number against the official source returned in official_source before you state it, and prefer that source when they disagree. By default returns ALL matching rules, each tagged with its verification status; pass status:'verified' for accountant-/research-verified only. Call list_rule_facets first to see the queryable values.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Free-text search over each rule's label, value, and citation. | |
| limit | No | Max rules to return (default 200, max 500). | |
| roles | No | Skill roles: foundation | compute | orchestrator | reference. | |
| topic | No | Filter by a fact topic. | |
| offset | No | Pagination offset — pass the previous response's next_offset. | |
| reason | No | One sentence on WHY you're making this call, in the user's terms (for routing analysis only). Optional. | |
| status | No | Shorthand for `statuses`: 'verified' = accountant- + research-verified only. Default 'all'. | |
| domains | No | Accounting domains, e.g. ['vat-gst','income-tax']. See list_rule_facets. | |
| statuses | No | Verification statuses to include. Default = all (each rule is tagged). | |
| tax_year | No | Limit to a tax year, e.g. 2025. | |
| block_types | No | Rule kinds to include. Default = all of these (framing prose + workflow steps are excluded). | |
| jurisdictions | No | ISO codes to include, e.g. ['MT','US-CA']. Omit for all jurisdictions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | Total matching rules (across all pages). |
| markdown | Yes | The bundled rule set as markdown — the user saves/runs this locally. |
| truncated | No | |
| fact_count | Yes | Rules returned on this page. |
| next_action | No | |
| next_offset | No | |
| jurisdictions | No | |
| accountant_verified_count | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, non-destructive, and the description adds important behavioral caveats: it returns human-reviewed guidance, does not certify currentness, and may contain disagreements with official sources. This goes well beyond the structured 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 dense but every sentence adds value: purpose, sibling differentiation, examples, safety caveat, default behavior, and facet guidance. No filler or redundant restatement of the title/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 the tool's complexity (12 optional params, output schema present, rich annotations), the description fully covers return shape, verification semantics, default filtering behavior, and how to discover valid facet values. The output schema covers return details, so the description does not need to enumerate them.
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 coverage is 100%, so baseline is 3, but the description adds meaningful parameter context: it gives examples that illustrate text/jurisdictions/topic/tax_year usage, explains the status:'verified' shortcut, and mentions the official_source return field. It does not fully explain every parameter, but the schema already covers those details.
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: 'Query individual tax RULES/FACTS' across jurisdictions, returning a bundled markdown set plus official source. It also explicitly distinguishes itself from get_skill ('Unlike get_skill ... this assembles a cross-cutting SET'), with concrete examples like 'VAT rates in MT, IE and DE'.
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 clearly contrasts with get_skill and gives concrete use cases, plus directs the agent to call list_rule_facets first to see queryable values. It also specifies when to use status:'verified' and advises confirming figures against official_source before stating them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_skillsSearch skills by keywordARead-onlyIdempotentInspect
Full-text search across all published tax and accounting skills. Find, lookup, query, or discover skills by keyword, tax concept, deduction type, form number, or regulation (e.g. 'home office deduction', 'crypto capital gains', 'reverse charge', 'Schedule C', '60-day reporting'). Optionally limit to one jurisdiction. Use this when you don't know the exact skill slug. Set content_type='method' to discover step-by-step METHODS (guided procedures — what you EXECUTE via start()) instead of reference material; each method carries a review_status (accountant-reviewed | source-cited).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term, e.g. 'home office deduction', 'crypto capital gains', 'reverse charge'. With content_type='method', a broad term (or the domain word) lists the available methods. | |
| domain | No | Optional accounting domain to limit the search (e.g. 'vat-gst', 'payroll', 'income-tax', 'crypto'). | |
| content_type | No | What kind of Guide to find. 'method' = step-by-step procedures you EXECUTE via start() (formerly 'workflows'); 'fact' or omitted = reference material (rates/thresholds/rules). A Guide can be either or both. | |
| jurisdiction | No | Optional ISO 2-letter country code to limit the search |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| results | Yes | |
| next_action | No | |
| human_backing | No | Named accountant(s) who review this jurisdiction's guidance (guidance-level, not a per-figure sign-off). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds meaningful behavioral context, such as the distinction between 'method' and 'fact' content, and that methods carry a review_status. This goes well beyond the structured 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 logically structured, starting with the main purpose, then examples, usage condition, and content_type explanation. It is somewhat verbose with the synonym list 'Find, lookup, query, or discover,' which is redundant, but every other 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?
With an output schema present, the description doesn't need to explain return values. It covers the key use cases (searching when slug is unknown, filtering by jurisdiction, discovering methods) and parameter semantics. It doesn't mention pagination or result limits, but given the schema richness and annotations, the description is sufficiently complete.
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 100%, so the baseline is 3. The description adds value by providing concrete examples for the query parameter ('home office deduction', 'crypto capital gains') and clarifying the special behavior of content_type='method'. It does not add much for domain or jurisdiction beyond the schema, but the extra context for query and content_type justifies a 4.
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: 'Full-text search across all published tax and accounting skills.' It provides a specific verb (search) and resource (skills), and distinguishes from siblings by noting 'Use this when you don't know the exact skill slug,' which contrasts with get_skill.
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 gives a clear usage condition: 'Use this when you don't know the exact skill slug.' It also explains how to discover methods via content_type. However, it does not explicitly name alternatives like get_skill or list_skills, so the 'when not to use' is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
startStart a tax workflowARead-onlyIdempotentInspect
Front door for any tax / accounting question once you know what the user wants. intent is REQUIRED (e.g. 'taxes', 'VAT return', 'set up a company', 'find deductions', 'classify transactions', 'payroll'); pass a jurisdiction too (ISO 2-letter, e.g. 'MT', 'GB', 'US-CA'). If you don't yet have an intent, call start_help first. Returns either a clarification request (if jurisdiction is missing) or a ready-to-execute plan with the list of skills to load. Call this FIRST (after start_help if needed) whenever the user asks for tax help.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | User intent — REQUIRED. Free text, e.g. 'taxes', 'VAT return', 'set up a company'. | |
| reason | No | One sentence, in the user's own words, on what they actually asked for here — captured only to improve routing. E.g. 'user sold ETH and wants to know what to report'. Optional but helpful. | |
| acting_as | Yes | REQUIRED. Who the user is: 'self' = a taxpayer handling their OWN taxes; 'client' = a professional (accountant/advisor) working on behalf of a CLIENT. Establish this before calling — if it isn't clear from the conversation, ask the user one short question ('Are these your own taxes, or are you helping a client?'). Never guess. | |
| jurisdiction | No | ISO 2-letter code or US state code (e.g. 'MT', 'GB', 'US-CA'). | |
| taxpayer_type | No | The taxpayer's occupation, when known. Some return-prep workflows fork by it (an employee's Form 1040 is a different guide from a freelancer's). Pass it if the conversation already makes it clear; otherwise omit — start() only asks for it (status:'needs_clarification', needs:['taxpayer_type']) when the guides for this jurisdiction/intent genuinely split by occupation. 'employee' = W-2 wages only; 'self-employed' = freelance / 1099 / sole-proprietor; 'both' = employed AND self-employed; 'company' = a corporate entity. Don't guess — ask the user one short question if unsure. |
Output Schema
| Name | Required | Description |
|---|---|---|
| needs | No | |
| intent | No | |
| status | No | |
| guardrails | No | |
| next_action | No | |
| expectations | No | |
| jurisdiction | No | |
| skills_to_load | No | |
| available_intents | No | |
| available_jurisdictions | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, open-world, and non-destructive. The description adds useful behavioral context by specifying the two possible return types (clarification request or ready-to-execute plan) and that a missing jurisdiction triggers a clarification request. It doesn't mention the optional taxpayer_type clarification, though that is covered in the schema, so a high score is still warranted.
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 three sentences, front-loaded with the core purpose ('Front door'), and packs in examples, required parameters, conditional behavior, and ordering. Every sentence contributes distinct information; there is no 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?
Given the tool is an entry point into a workflow and has an output schema, the description covers all essential elements: purpose, prerequisites, behavior, and when to use an alternative. The output schema can handle the detailed plan structure, so the description does not need to explain return formats further. It is complete for its 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?
Schema description coverage is 100%, so the baseline is 3. The description adds value by emphasizing that 'intent' is REQUIRED and by explaining the consequence of omitting jurisdiction (returns a clarification request). It also clarifies the purpose of 'acting_as' indirectly via 'Never guess' in the schema, but that is schema rather than description. Overall, the description adds meaningful parameter context without duplicating 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 clearly identifies the tool as the 'front door' for any tax/accounting question and explicitly says to call it FIRST whenever the user asks for tax help. It distinguishes itself from the sibling 'start_help' by stating that start_help should be used only when an intent is not yet known.
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 when-to-use guidance: 'Call this FIRST (after start_help if needed) whenever the user asks for tax help.' It also names the alternative (start_help) and the condition for using it: 'If you don't yet have an intent, call start_help first.' This is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_helpGet tax-workflow scoping guidance (no args)ARead-onlyIdempotentInspect
No-argument front door — call this FIRST whenever a user asks 'how can you help me?', 'what can you do?', 'where do I start?', or otherwise opens vaguely (do NOT answer such questions by listing your tools or calling list_jurisdictions). For a signed-in approved accountant it returns a personalized orientation briefing (their standing + what their jurisdiction needs + one next action). For everyone else it returns the two scoping questions plus the available intents and jurisdictions. Once you have an intent, call start(intent, jurisdiction).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| needs | No | |
| status | No | |
| next_action | No | |
| available_intents | No | |
| available_jurisdictions | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context: that the response is conditional on the user's status (approved accountant vs. others) and what each type of user receives, plus the recommended next step. This goes beyond the 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 a single dense sentence but is front-loaded with the essential role ('No-argument front door') and immediately provides actionable usage instructions. While it is somewhat long, every clause carries meaningful information and there is no redundancy. It could be split into two sentences for readability, but it remains appropriately sized for the content.
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 the tool has no parameters and an output schema is present (which presumably describes the return structure), the description covers the key contextual aspects: what the tool does, when to use it, what it returns for two user categories, and the follow-up action. It also clearly differentiates from siblings, making it complete for an AI 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 tool has zero parameters, and the description explicitly notes 'no-argument' and 'No-argument front door,' which is sufficient. With no schema properties to explain, the baseline of 4 is appropriate; the description adds no unnecessary parameter details.
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 identifies this as a no-argument front door for scoping user requests, with a specific verb ('call this FIRST'), a resource (tax-workflow guidance), and distinct behavior for signed-in approved accountants versus everyone else. It explicitly distinguishes itself from sibling tools like list_jurisdictions and start, making its purpose 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 when-to-use guidance ('call this FIRST whenever a user asks...') and when-not-to-use guidance ('do NOT answer such questions by listing your tools or calling list_jurisdictions'). It also names the follow-up tool (`start(intent, jurisdiction)`) and the condition for using it, which fully covers usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_vat_numberValidate a business VAT / tax-ID number (live registry lookup)ARead-onlyIdempotentInspect
Check whether a business's VAT / tax-registration number is real and registered, in real time against the official government registry — and return the registered business NAME and ADDRESS when the authority discloses them. This is an authoritative, unfakeable confirmation you cannot get from a knowledge lookup or from training data. Use it whenever a user wants to verify a supplier's or customer's tax ID: before applying a B2B reverse charge, zero-rating a cross-border sale, or onboarding a vendor. COVERAGE TODAY IS EU ONLY — the 27 EU member states plus 'XI' (Northern Ireland), live via the European Commission's VIES registry (use 'EL' for Greece). Other jurisdictions (e.g. UK/HMRC and beyond) are NOT supported yet but are on the roadmap — for a non-EU number, tell the user live validation isn't available for that country yet rather than guessing a verdict. This is a LIVE external lookup — if the registry is temporarily unavailable it says so plainly rather than inventing an answer.
| Name | Required | Description | Default |
|---|---|---|---|
| vat_number | Yes | The VAT number, with or without the country prefix and spaces, e.g. 'IE6388047V', 'IE 6388047V', or '6388047V'. | |
| country_code | No | 2-letter EU member-state code of the VAT number, e.g. 'DE', 'IE', 'FR'. Use 'EL' for Greece and 'XI' for Northern Ireland. May be omitted if the country prefix is already part of vat_number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | No | true/false verdict from VIES, or null if the service could not be reached (an availability issue, not a verdict). |
| source | No | |
| address | No | |
| message | No | |
| summary | No | |
| checked_at | No | |
| source_url | No | |
| vat_number | No | |
| vies_error | No | |
| full_vat_id | No | |
| next_action | No | |
| country_code | No | |
| business_name | No | |
| human_backing | No | Named accountant(s) who review that country's VAT guidance (guidance-level, not a per-figure sign-off). |
| confirm_available | No | Whether the user can ask a named accountant to confirm the VAT treatment via ask_accountant_to_confirm. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false), the description adds crucial behavioral context: it is a live external lookup, may be temporarily unavailable and will say so plainly rather than inventing an answer, and covers only EU/XI jurisdictions. This gives the agent realistic expectations about failure modes and scope.
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 given the tool's complexity, with every sentence conveying necessary information. It is front-loaded with a clear purpose, then covers usage, coverage, and failure behavior efficiently 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?
The description covers purpose, usage scenarios, geographical coverage and limitations, behavior on unavailability, and the nature of the output (business name/address). With an output schema present and rich annotations, this description provides all context an agent needs to 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 input schema already describes both parameters with 100% coverage. The description adds further meaning by explaining accepted input formats (with/without country prefix, with/without spaces) and clarifying the 'EL' for Greece and 'XI' for Northern Ireland special cases, going well beyond 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 clearly states the tool checks whether a VAT/tax number is real and registered via a live government registry, and returns the registered business name and address when disclosed. This specific verb+resource phrasing distinguishes it from sibling tools like search_rules or list_jurisdictions, 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?
The description explicitly states when to use the tool ('whenever a user wants to verify a supplier's or customer's tax ID' before reverse charge, zero-rating, or vendor onboarding) and when not to use it (non-EU numbers, telling the user to avoid guessing). It also contrasts with 'knowledge lookup or training data', giving clear usage guidance vs alternatives.
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
- AlicenseCqualityBmaintenanceAI-powered skills for financial professionals. Comprehensive collection of finance, accounting, audit, and compliance skills for AI agents. IFRS/GAAP compliant with industry-specific applications.1007MIT
- AlicenseAqualityBmaintenanceAI agents that automate bookkeeping, bank reconciliation, and month-end financial close for SMBs and CA firms.261MIT
- Alicense-qualityAmaintenanceEnables AI assistants to search, compare, and order corporate financial and tax service providers via natural language.MIT
- Alicense-qualityAmaintenanceAccounting AI - MCP server providing AI-powered tools and automation by MEOK AI Labs10MIT
Your Connectors
Sign in to create a connector for this server.