groTAX by Grovisor
Server Details
UAE Corporate Tax: CT computation, SBR, penalties, free zone test, TP and health-check.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each tool targets a distinct function: computation, SBR comparison, rules lookup, health check, question listing, penalties, QFZP de minimis, and TP thresholds. The only mild overlap is grotax_compute_ct vs grotax_compare_sbr, but the comparison tool's documentation explicitly distinguishes it as a two-scenario variant.
All tools share the grotax_ prefix and snake_case, which is a strong, predictable pattern. A few tools are noun phrases rather than verb_noun (grotax_penalties, grotax_tp_thresholds, grotax_qfzp_de_minimis), a minor deviation from the verb-led style of the rest.
Eight tools is well-scoped for a specialized UAE CT computation server, with each tool earning its place by covering a distinct regulatory area. No redundant or filler tools.
The surface covers computation, SBR comparison, rules, health-check diagnostics, penalties, free-zone de minimis, and TP thresholds—a solid regulatory lifecycle. Minor gaps exist around registration handling or multi-period loss carry-forward tracking, but core workflows are covered.
Available Tools
8 toolsgrotax_compare_sbrgroTAX: Small Business Relief, elected vs notARead-onlyIdempotentInspect
Compute the same facts with and without Small Business Relief (revenue ≤ AED 3m, periods ending by 31 Dec 2029). Shows tax payable and what carries forward each way: in an SBR year a tax loss and disallowed interest are forfeited. Takes the same inputs as grotax_compute_ct (sbrElect is ignored).
| Name | Required | Description | Default |
|---|---|---|---|
| ftc | No | Foreign tax credit, AED | |
| mne | No | Member of a multinational group (blocks SBR) | |
| wht | No | Withholding tax credit, AED | |
| qfzp | No | Treat as a Qualifying Free Zone Person (simplified: 0% on qualifying income) | |
| fines | No | Fines and penalties (non-compensatory), AED | |
| ebitda | No | Tax-EBITDA, AED, for the 30% interest cap. Leave out to have it calculated from taxable income + net interest + depreciation | |
| revenue | No | Revenue for the tax period, AED (drives Small Business Relief and audit checks) | |
| lossesBF | No | Tax losses brought forward, AED | |
| sbrElect | No | Elect Small Business Relief if eligible | |
| donations | No | Donations to non-qualifying bodies, AED | |
| periodEnd | No | Tax period end date, YYYY-MM-DD (default 2025-12-31) | |
| interestBF | No | Net interest disallowed in earlier periods and carried forward, AED (deducted within this period's cap) | |
| netInterest | No | Net interest expense, AED | |
| depreciation | No | Depreciation and amortisation, AED (used to calculate tax-EBITDA when ebitda is not given) | |
| entertainment | No | Total client entertainment expense, AED (50% is added back) | |
| naturalPerson | No | The business is owned by an individual (sole establishment or civil company of a natural person) | |
| otherAddBacks | No | Other non-deductible expenses, AED | |
| ownerDrawings | No | Owner's drawings or salary booked as expenses, AED (added back only when naturalPerson is true) | |
| associateShare | No | Equity-accounted share of profit (+) or loss (-) of associates and joint ventures, AED (taken out) | |
| connectedExcess | No | Payments to connected persons above market value, AED | |
| exemptDividends | No | Exempt dividends from UAE/free zone companies, AED | |
| otherDeductions | No | Other allowable deductions, AED | |
| unrealisedGains | No | Net unrealised gain (+) or loss (-) in the accounts, AED (adjusted only when realisationElect is true) | |
| accountingProfit | Yes | Net profit (or loss, negative) per the financial statements, AED | |
| qualifyingIncome | No | QFZP qualifying income taxed at 0%, AED | |
| realisationElect | No | Elected to tax gains and losses on realisation rather than as booked | |
| connectedPayments | No | Total paid to connected persons in the period, AED (raises the transfer pricing disclosure warning above AED 500,000) | |
| dividendsExpensed | No | Dividends or profit distributions booked as expenses, AED (always added back) | |
| foreignTaxExpensed | No | Foreign and withholding taxes booked as expenses, AED (added back) | |
| participationIncome | No | Participation exemption income, AED | |
| exemptIncomeExpenses | No | Expenses relating to exempt income, AED | |
| revenueExceededBefore | No | Revenue exceeded AED 3m in an earlier CT period (blocks SBR permanently) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive for this pure computation, so the safety profile is covered. The description adds genuine domain behavior beyond that: the SBR eligibility boundaries (revenue ≤ AED 3m, periods ending by 31 Dec 2029) and the material consequence that a tax loss and disallowed interest are forfeited in an SBR year.
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, front-loaded with purpose, then the carry-forward consequence, then the input contract. No filler; each sentence carries distinct 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?
For a 32-parameter comparison tool with full schema coverage and no output schema, the description tells the agent what it computes and what it returns (tax payable and carry-forward each way). The absence of output schema is compensated by naming the outputs, though edge behaviors (e.g. what happens if ineligible for SBR) are left implicit.
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 the schema already documents all 32 parameters (baseline 3). The description adds one important semantic that the schema does not: sbrElect is ignored by this tool, which an agent would otherwise reasonably set given the SBR framing.
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?
States a specific verb (Compute) and resource (the same facts with and without Small Business Relief), and explicitly frames the tool as a two-way comparison of tax payable and carry-forwards. This distinguishes it cleanly from sibling grotax_compute_ct, which it names.
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?
Establishes the context by tying itself to grotax_compute_ct ('takes the same inputs'), implying it is the tool to use when a side-by-side SBR comparison is wanted rather than a single computation. It does not spell out an explicit 'use this instead when...' rule, but the routing is inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grotax_compute_ctgroTAX: compute UAE Corporate TaxARead-onlyIdempotentInspect
Estimate UAE Corporate Tax using the Grovisor computation (rows A–K): AED 375,000 0% band then 9%, 50% entertainment add-back, interest cap (higher of AED 12m or 30% of adjusted EBITDA), 75% loss relief, Small Business Relief, simplified QFZP and WHT/FTC credits. Only accountingProfit is required; pass revenue to test SBR. Returns a markdown table plus structured rows. Indicative, not tax advice.
| Name | Required | Description | Default |
|---|---|---|---|
| ftc | No | Foreign tax credit, AED | |
| mne | No | Member of a multinational group (blocks SBR) | |
| wht | No | Withholding tax credit, AED | |
| qfzp | No | Treat as a Qualifying Free Zone Person (simplified: 0% on qualifying income) | |
| fines | No | Fines and penalties (non-compensatory), AED | |
| ebitda | No | Tax-EBITDA, AED, for the 30% interest cap. Leave out to have it calculated from taxable income + net interest + depreciation | |
| revenue | No | Revenue for the tax period, AED (drives Small Business Relief and audit checks) | |
| lossesBF | No | Tax losses brought forward, AED | |
| sbrElect | No | Elect Small Business Relief if eligible | |
| donations | No | Donations to non-qualifying bodies, AED | |
| periodEnd | No | Tax period end date, YYYY-MM-DD (default 2025-12-31) | |
| interestBF | No | Net interest disallowed in earlier periods and carried forward, AED (deducted within this period's cap) | |
| netInterest | No | Net interest expense, AED | |
| depreciation | No | Depreciation and amortisation, AED (used to calculate tax-EBITDA when ebitda is not given) | |
| entertainment | No | Total client entertainment expense, AED (50% is added back) | |
| naturalPerson | No | The business is owned by an individual (sole establishment or civil company of a natural person) | |
| otherAddBacks | No | Other non-deductible expenses, AED | |
| ownerDrawings | No | Owner's drawings or salary booked as expenses, AED (added back only when naturalPerson is true) | |
| associateShare | No | Equity-accounted share of profit (+) or loss (-) of associates and joint ventures, AED (taken out) | |
| connectedExcess | No | Payments to connected persons above market value, AED | |
| exemptDividends | No | Exempt dividends from UAE/free zone companies, AED | |
| otherDeductions | No | Other allowable deductions, AED | |
| unrealisedGains | No | Net unrealised gain (+) or loss (-) in the accounts, AED (adjusted only when realisationElect is true) | |
| accountingProfit | Yes | Net profit (or loss, negative) per the financial statements, AED | |
| qualifyingIncome | No | QFZP qualifying income taxed at 0%, AED | |
| realisationElect | No | Elected to tax gains and losses on realisation rather than as booked | |
| connectedPayments | No | Total paid to connected persons in the period, AED (raises the transfer pricing disclosure warning above AED 500,000) | |
| dividendsExpensed | No | Dividends or profit distributions booked as expenses, AED (always added back) | |
| foreignTaxExpensed | No | Foreign and withholding taxes booked as expenses, AED (added back) | |
| participationIncome | No | Participation exemption income, AED | |
| exemptIncomeExpenses | No | Expenses relating to exempt income, AED | |
| revenueExceededBefore | No | Revenue exceeded AED 3m in an earlier CT period (blocks SBR permanently) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, read-only, idempotent, non-destructive operation, so that burden is lifted. The description adds valuable context beyond annotations: it discloses the output format ('markdown table plus structured rows') and the important caveat 'Indicative, not tax advice.'
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 purpose is front-loaded and the dense tax-rule summary is appropriate for a 32-parameter computation tool. It is compact but not terse; every clause contributes a rule, required input, or output note.
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 high complexity (32 parameters) and absence of an output schema, the description does well: it specifies the required parameter, optional SBR input, key computation rules, return format, and a disclaimer. Some parameter-level nuance is left to the schema, which is fully documented.
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 schema fully documents all 32 parameters. The description still adds meaning by explaining how some inputs drive the computation (e.g., 50% entertainment add-back, revenue drives SBR, WHT/FTC credits), going beyond bare parameter labels.
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?
States a specific verb and resource: 'Estimate UAE Corporate Tax' and names the underlying computation method. This clearly separates it from sibling tools like grotax_get_rules or grotax_compare_sbr, though it does not explicitly call out those alternatives.
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?
Gives limited usage guidance by noting 'Only accountingProfit is required; pass revenue to test SBR.' However, it does not state when to prefer this tool over siblings such as grotax_compare_sbr or grotax_penalties, leaving the broader routing decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grotax_get_rulesgroTAX: thresholds and sourcesARead-onlyIdempotentInspect
List every rate and threshold groTAX uses, with its legal source and whether it still needs verification (verify: true).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond the annotations by disclosing that each entry carries a legal source and a 'verify: true' flag indicating unverified values, which tells the agent the data is not uniformly trustworthy.
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?
One sentence, front-loaded with the action and scope, with the return-relevant detail (legal source, verification flag) appended efficiently. 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?
No output schema exists, so the description must carry the return-value burden, and it does partially by naming legal source and the verify flag. What remains underspecified is the scope of 'every rule' relative to the tp_thresholds sibling and the overall output shape.
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 takes zero parameters, so the baseline of 4 applies. With no arguments to misinterpret, there is nothing further the description needs to add here.
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 gives a specific verb+resource (list every rate and threshold groTAX uses) and disambiguates the vague tool name 'get_rules' into a concrete catalog of rates/thresholds with legal sources. It does not, however, differentiate itself from the sibling grotax_tp_thresholds, which also concerns thresholds.
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?
Usage is implied: call this to enumerate the full rate/threshold catalog when you need legal sourcing or verification status. There is no explicit when-to-use, when-not-to-use, or pointer to the overlapping tp_thresholds sibling, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grotax_health_checkgroTAX: CT compliance health-checkARead-onlyIdempotentInspect
Run the Grovisor CT reviewer red-flag checklist (SBR, free zone/QFZP, TP disclosure and Local/Master File, connected-person pay, related-party loans, entertainment, fines, interest cap, loss continuity, audit threshold, exempt income). Pass the answers you know; call grotax_list_health_questions first for the keys and allowed values. Returns findings ranked High → Low.
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | Answers keyed by question id: revenueBand, sbrElected, freeZone, qualifyingAnalysis, auditedFS, mneGroup, rptLarge, cpPayments, tpDisclosure, ownerPayBenchmarked, rpLoansNoInterest, entertainment, entertainmentSplit, fines, netInterest, taxLosses, ownershipChanged, dividends |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds two behavioral facts: partial answers are tolerated and results come back ranked High → Low, which is real value in the absence of an output schema. It still says nothing about how scoring or ranking is derived, so it is useful but not rich.
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?
Front-loaded with the action, followed by the prerequisite and the return-shape note; every clause is functional. The long parenthetical domain list is dense but each item maps to real checklist coverage rather than filler, so the size is defensible though slightly heavy.
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 1-parameter, deeply nested tool with no output schema, the description supplies the prerequisite call, the partial-answer allowance and the returned ordering, which is most of what an agent needs. It stops short of describing the finding structure or severity semantics, a minor gap given the otherwise complete input documentation.
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% and all 18 nested answer fields carry their own descriptions and allowed values, so the schema does the heavy lifting and the baseline is 3. The description only adds the routing instruction to fetch keys/allowed values from grotax_list_health_questions, which is meta-guidance rather than new per-parameter meaning.
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?
States a specific verb and resource ('Run the Grovisor CT reviewer red-flag checklist') and enumerates the exact domains covered (SBR, free zone/QFZP, TP disclosure, interest cap, loss continuity, etc.), so an agent knows precisely what this tool evaluates. It also distinguishes itself from the sibling grotax_list_health_questions by assigning them different roles (input discovery vs. review execution).
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?
Gives explicit operational guidance: 'Pass the answers you know' signals partial input is acceptable, and 'call grotax_list_health_questions first for the keys and allowed values' establishes a concrete call ordering with a named alternative. Nothing about when to invoke this vs. a sibling is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grotax_list_health_questionsgroTAX: list health-check questionsARead-onlyIdempotentInspect
List the groTAX health-check questions with their answer keys and allowed values, including which questions only apply after others (dependsOn). Use before grotax_health_check.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value by disclosing the return content (answer keys, allowed values, dependsOn relationships), which matters because there is no output schema, though it stops short of describing format or size.
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?
One dense sentence covering subject and payload followed by a one-clause routing instruction; every clause earns its place and the purpose is 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?
With no parameters and no output schema, the description carries the burden of describing returns and does so reasonably (keys, allowed values, dependsOn). Minor gaps remain around result shape and ordering, but nothing essential to calling it correctly 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 tool takes zero parameters, so per the rubric the baseline is 4; there is nothing for the description to disambiguate and it makes no misleading parameter claims.
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?
Specific verb ('List') plus resource ('groTAX health-check questions') and enumerates the payload (answer keys, allowed values, dependsOn), which no sibling tool offers. An agent can distinguish this from grotax_health_check or grotax_get_rules without opening a schema.
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 it relative to a named sibling: 'Use before grotax_health_check.' That is actionable sequencing guidance, though it does not state any exclusions or alternative paths for retrieving the same data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grotax_penaltiesgroTAX: CT deadlines and late penaltiesARead-onlyIdempotentInspect
Return and payment due date (9 months after period end) and estimated penalties: late filing AED 500 a month for 12 months then AED 1,000, late payment 14% a year charged monthly (from 14 Apr 2026), AED 10,000 late registration, waived if the first return is filed within 7 months of the end of the first tax period. Blank filing date = today; blank payment date = filing date.
| Name | Required | Description | Default |
|---|---|---|---|
| today | No | Override today's date (testing / what-if) | |
| taxDue | No | Corporate Tax payable for the period, AED (for the late payment penalty) | |
| periodEnd | Yes | Tax period end date, YYYY-MM-DD | |
| filingDate | No | Date the return was or will be filed, YYYY-MM-DD (default today) | |
| firstPeriod | No | This period is the first tax period (used for the registration waiver) | |
| paymentDate | No | Date the tax was or will be paid, YYYY-MM-DD (default = filingDate) | |
| firstPeriodEnd | No | End of the first tax period, if this is not the first period | |
| firstReturnFiled | No | Date the first return was filed, if this is not the first period | |
| lateRegistration | No | Registered for Corporate Tax after the deadline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds useful behavioral context beyond annotations: penalty escalation, waiver condition, and default date behavior. It does not describe output shape or calculation assumptions, but it is strong overall.
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 dense sentences pack the due-date rule, penalty rates, waiver condition, and defaults with no filler. It is front-loaded, but the long clause chain could be easier to scan if structured as a list.
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 9-parameter calculator with no output schema, the description covers the return due date, late filing/payment penalties, late registration penalty, waiver, and date defaults. It omits explicit output fields and assumption notes, but is largely complete for correct invocation.
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 meaning by linking parameters to the calculation: due date is 9 months after periodEnd, the registration waiver depends on firstReturnFiled, and blank filing/payment dates default to today/filingDate. Some of this repeats schema descriptions, but it still enriches parameter semantics.
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 title and description state that the tool returns CT return/payment due dates and estimated penalties, with specific penalty amounts and rates. It is clear what the tool calculates, but it does not explicitly distinguish itself from siblings such as grotax_compute_ct.
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?
There is no when-to-use guidance, no alternatives mentioned, and no exclusions. The description only provides domain rules and defaults, leaving the agent to infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grotax_qfzp_de_minimisgroTAX: free zone (QFZP) de minimis testARead-onlyIdempotentInspect
Test whether a free zone company's non-qualifying revenue stays within the de minimis limit: the lower of 5% of total revenue or AED 5m (MD 229 of 2025). Failing it ends Qualifying Free Zone Person status for that period and the next 4.
| Name | Required | Description | Default |
|---|---|---|---|
| totalRevenue | Yes | Total revenue of the free zone company, AED | |
| nonQualifyingRevenue | Yes | Non-qualifying revenue (excluding disregarded revenue), AED |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior context beyond that: the failure outcome (loss of Qualifying Free Zone Person status for the period plus the next 4 periods) and the regulatory basis, which is exactly the kind of consequence an agent cannot infer from 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?
Two tight sentences: the test criteria first, then the consequence. No filler, no restatement of the name, and the numeric threshold is front-loaded where an agent will read it.
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 two-number, read-only calculation the description covers the rule, the regulatory source, and the failure consequence. With no output schema present it could optionally say what the result contains (pass/fail, headroom), but nothing needed to invoke it correctly 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 coverage is 100% with both parameters documented, including the nuance that nonQualifyingRevenue excludes disregarded revenue. The description adds no further parameter semantics, so the baseline of 3 is appropriate when the schema does the heavy lifting.
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?
Specific verb (test) and resource (free zone company's non-qualifying revenue against the de minimis limit), with the exact rule stated (lower of 5% of total revenue or AED 5m, MD 229 of 2025). No sibling tool overlaps this domain, so an agent can select it unambiguously.
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 makes the triggering condition clear (a QFZP's non-qualifying revenue) and states the consequence of failure, which implicitly tells the agent when this test matters. It does not name any alternative tool or state when not to run it, but the siblings are unrelated domains so the gap is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grotax_tp_thresholdsgroTAX: transfer pricing documentation checkARead-onlyIdempotentInspect
Check which UAE transfer pricing documents apply: TP Disclosure Form (related-party transactions > AED 40m with a category > AED 4m, or connected-person payments > AED 0.5m), Local File + Master File (revenue > AED 200m or MNE group).
| Name | Required | Description | Default |
|---|---|---|---|
| revenue | No | Standalone revenue, AED | |
| mneGroup | No | Constituent entity of a multinational group | |
| relatedPartyTotal | No | Aggregate related-party transactions in the period, AED | |
| connectedPersonPayments | No | Total payments/benefits to connected persons (owners, directors, relatives), AED | |
| relatedPartyLargestCategory | No | Largest single transaction category with related parties, AED (omit if unknown) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds substantive domain behavior by spelling out the exact threshold rules (e.g., > AED 40m with a category > AED 4m triggers the TP Disclosure Form). It does not describe return format or handling of missing optional parameters, but it meaningfully extends the safety profile with evaluation logic.
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?
A single sentence front-loads the core action ('Check which UAE transfer pricing documents apply') and then efficiently enumerates the conditions. Every clause carries necessary threshold information with no 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?
The description gives the governing rules and all five parameters are schema-documented, but there is no output schema and the description does not state what the tool returns (e.g., a list of applicable documents) or how it behaves when optional inputs are omitted. For a check tool with zero required parameters, that gap keeps completeness at a minimum viable level.
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 schema already documents each parameter's meaning. The description nevertheless adds value by mapping those parameters to decision thresholds (revenue > AED 200m, relatedPartyTotal > AED 40m, connectedPersonPayments > AED 0.5m, etc.), giving rule-level semantics beyond the raw field definitions.
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 ('Check which UAE transfer pricing documents apply') and resource (UAE TP documents), and even enumerates the thresholds for each document. It is highly specific, but it does not explicitly differentiate itself from any sibling tool (though no sibling appears to be a near-equivalent).
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?
Usage is implied: call this tool when you need to determine which UAE transfer pricing documentation obligations apply. There is no explicit 'use when' clause, no exclusions, and no named alternative among the siblings, so guidance remains at the implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
grotax_compare_sbr11 fields changed- added
Input schema / properties / associateShareAdded value: +{ + "description": "Equity-accounted share of profit (+) or loss (-) of associates and joint ventures, AED (taken out)", + "type": "number" +} - added
Input schema / properties / connectedPaymentsAdded value: +{ + "description": "Total paid to connected persons in the period, AED (raises the transfer pricing disclosure warning above AED 500,000)", + "type": "number" +} - added
Input schema / properties / depreciationAdded value: +{ + "description": "Depreciation and amortisation, AED (used to calculate tax-EBITDA when ebitda is not given)", + "type": "number" +} - added
Input schema / properties / dividendsExpensedAdded value: +{ + "description": "Dividends or profit distributions booked as expenses, AED (always added back)", + "type": "number" +} - changed
Input schema / properties / ebitda / descriptionPrevious value: -"Adjusted (tax) EBITDA, AED — used for the 30% interest cap"New value: +"Tax-EBITDA, AED, for the 30% interest cap. Leave out to have it calculated from taxable income + net interest + depreciation" - added
Input schema / properties / foreignTaxExpensedAdded value: +{ + "description": "Foreign and withholding taxes booked as expenses, AED (added back)", + "type": "number" +} - added
Input schema / properties / interestBFAdded value: +{ + "description": "Net interest disallowed in earlier periods and carried forward, AED (deducted within this period's cap)", + "type": "number" +} - added
Input schema / properties / naturalPersonAdded value: +{ + "description": "The business is owned by an individual (sole establishment or civil company of a natural person)", + "type": "boolean" +} - added
Input schema / properties / ownerDrawingsAdded value: +{ + "description": "Owner's drawings or salary booked as expenses, AED (added back only when naturalPerson is true)", + "type": "number" +} - added
Input schema / properties / realisationElectAdded value: +{ + "description": "Elected to tax gains and losses on realisation rather than as booked", + "type": "boolean" +} - added
Input schema / properties / unrealisedGainsAdded value: +{ + "description": "Net unrealised gain (+) or loss (-) in the accounts, AED (adjusted only when realisationElect is true)", + "type": "number" +}
- Changed
grotax_compute_ct11 fields changed- added
Input schema / properties / associateShareAdded value: +{ + "description": "Equity-accounted share of profit (+) or loss (-) of associates and joint ventures, AED (taken out)", + "type": "number" +} - added
Input schema / properties / connectedPaymentsAdded value: +{ + "description": "Total paid to connected persons in the period, AED (raises the transfer pricing disclosure warning above AED 500,000)", + "type": "number" +} - added
Input schema / properties / depreciationAdded value: +{ + "description": "Depreciation and amortisation, AED (used to calculate tax-EBITDA when ebitda is not given)", + "type": "number" +} - added
Input schema / properties / dividendsExpensedAdded value: +{ + "description": "Dividends or profit distributions booked as expenses, AED (always added back)", + "type": "number" +} - changed
Input schema / properties / ebitda / descriptionPrevious value: -"Adjusted (tax) EBITDA, AED — used for the 30% interest cap"New value: +"Tax-EBITDA, AED, for the 30% interest cap. Leave out to have it calculated from taxable income + net interest + depreciation" - added
Input schema / properties / foreignTaxExpensedAdded value: +{ + "description": "Foreign and withholding taxes booked as expenses, AED (added back)", + "type": "number" +} - added
Input schema / properties / interestBFAdded value: +{ + "description": "Net interest disallowed in earlier periods and carried forward, AED (deducted within this period's cap)", + "type": "number" +} - added
Input schema / properties / naturalPersonAdded value: +{ + "description": "The business is owned by an individual (sole establishment or civil company of a natural person)", + "type": "boolean" +} - added
Input schema / properties / ownerDrawingsAdded value: +{ + "description": "Owner's drawings or salary booked as expenses, AED (added back only when naturalPerson is true)", + "type": "number" +} - added
Input schema / properties / realisationElectAdded value: +{ + "description": "Elected to tax gains and losses on realisation rather than as booked", + "type": "boolean" +} - added
Input schema / properties / unrealisedGainsAdded value: +{ + "description": "Net unrealised gain (+) or loss (-) in the accounts, AED (adjusted only when realisationElect is true)", + "type": "number" +}
8 tool updates
- First observed
grotax_compare_sbr - First observed
grotax_compute_ct - First observed
grotax_get_rules - First observed
grotax_health_check - First observed
grotax_list_health_questions - First observed
grotax_penalties - First observed
grotax_qfzp_de_minimis - First observed
grotax_tp_thresholds
Related MCP Connectors
UAE Corporate Tax Calculator: the site's own MCP server — calculator, enquiry (enquiry = a human...
UAE corporate tax, EU AI Act risk class and CBAM certificate cost, each line citing its Article
31Deterministic cross-border tax engine: PE, GAAR, Indian TP, rule-level lookup. Compiled law, no LLM.
ZATCA-compliant Saudi invoicing and accounting: invoices, receivables, VAT, ledger, payroll.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables UAE e-invoicing and PINT AE compliance checks, including TRN/TIN validation, a 51-field mandatory checklist, structural invoice review, and UBL XML stub generation.539 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides GCC regulatory intelligence including ZATCA e-invoicing, Arabic NLP, UAE Corporate Tax, and compliance tools for AI agents via the Model Context Protocol.63 npmMIT

OpenAccountantsofficial
AlicenseAqualityAmaintenanceOpen-source, accountant-verified tax computation skills for AI agents. 261+ skills across 172+ jurisdictions covering income tax, VAT/GST, payroll, corporate tax, crypto, and cross-border planning. Every skill is verified section-by-section by licensed CPAs and chartered accountants. 3 tools (list_skills, get_skill, get_skill_sections) and 1 prompt (skill-review).123424AGPL 3.0- AlicenseAqualityAmaintenanceLocal MCP for Australian accountants: ATO benchmarks, Payday Super timing, limited Division 7A reviews, 7 bounded tax worksheets and cited legislation search, plus synthetic CTR/BAS test data. Experimental reviews need professional judgement. No advice or lodgements.181MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.