Skip to main content
Glama

ccpcrate — Canadian CCPC corporate tax

Explain a resolution

ccpcrate_explain
Read-onlyIdempotent

Free diagnostic pass over the same input as ccpcrate_resolve: which layers run, the defaults the engine would apply, every warning with its meaning (grind binding, provincial asymmetries, missing inputs), the rule rows in force for the year with sources and verification status, the open verifications, and what the paid computation would return. Contains no computed amounts — the numbers are in ccpcrate_resolve.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qcNoQuébec inputs (CO-771)
taxYearYes
provinceYesProvince of the permanent establishment (two-letter code)
cdaOpeningNoCapital dividend account opening balance (returns cda_closing)
rdtohOpeningNoOpening ERDTOH / NERDTOH in T2 terms. Omitted = 0 with a warning when it matters
taxableIncomeNoPart I taxable income (T2 line 360). Omit for a holdco and supply the income lines instead; the engine derives it
netIncomeForTaxNoHoldco: net income for tax purposes (Sch 1 result) — overrides the derivation
propertyExpensesNoHoldco: deductible property expenses of the year (total)
groupAaiiPriorYearNoT2 line 417: Σ Sch 7 line 745 of the associated group for taxation years ending in the preceding calendar year. REQUIRED whenever a business limit is claimed
netIncomeAccountingNoHoldco: net income per financial statements
otherPropertyIncomeNoHoldco: property income other than dividends and capital-gains dividends
taxableCapitalGainsNoSch 6: taxable capital gains (the included half)
activeBusinessIncomeNoT2 line 400: income from an active business carried on in Canada
lossesByYearOfOriginNoSch 4 Part 6: opening balances by year of origin, e.g. {"2011": 263564}
provincialProportionNoShare of taxable income allocated to the province (Reg. 402). Default 1
capitalGainsDividendsNoCapital-gains dividends received (full amount; half to CDA)
dividendsPaidEligibleNoEligible dividends paid (designated) in the year
allowableCapitalLossesNoSch 6: allowable capital losses of the year
businessLimitAllocatedNoBusiness limit allocated to this corporation (Sch 23 line 410 if associated, else the statutory limit). 0 = allocation zero
foreignInvestmentIncomeNoT2 line 445: foreign investment income
nonCapitalLossesOpeningNoSch 4: non-capital loss pool at the start of the year
dividendsPaidNonEligibleNoNon-eligible taxable dividends paid in the year
foreignBusinessTaxCreditNoT2 line 636: foreign business income tax credit
aggregateInvestmentIncomeNoT2 line 440: aggregate investment income (s.129(4))
dividendsReceivedConnectedNoDividends from connected corporations (s.186(4)) — Part IV only through the payer's refund
foreignNonBusinessTaxCreditNoT2 line 632: foreign non-business income tax credit
taxableCapitalGroupPriorYearNoT2 line 415: taxable capital employed in Canada of the group, prior year. Omit when under 10 M
dividendsPaidOfWhichConnectedNoHow much OF the dividends paid above went to connected corporations — a portion of dividendsPaidEligible + dividendsPaidNonEligible, never an amount on top of them. Raises the cascade warning on the payer side. In a ccpcrate_group call the recipients' own dividendsReceivedConnected amounts govern the 186(1)(b) share; this field is then cross-checked against them
dividendsReceivedPortfolioEligibleNoEligible taxable dividends from non-connected payers (Part IV → ERDTOH)
nonCapitalLossesClaimedAgainstPartINoNon-capital losses claimed against Part I income
nonCapitalLossesClaimedAgainstPartIVNoNon-capital / farm losses claimed against Part IV (s.186(1)(c),(d)) — the loss amount
dividendsReceivedPortfolioNonEligibleNoNon-eligible taxable dividends from non-connected payers (Part IV → NERDTOH)

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

The description states 'Contains no computed amounts', directly reinforcing the readOnlyHint and idempotentHint annotations. It also explains the non-computational nature of the output. No side effects are implied, and no contradiction exists with 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.

Conciseness5/5

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

The description is succinct and well-structured, fitting a single dense sentence. It front-loads the core purpose and uses a colon to efficiently list output components without unnecessary wording.

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

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description lists the main result categories thoroughly enough for an agent to know what to expect. It does not mention potential error cases or detailed output formats, but for a diagnostic tool the described output set is reasonably complete.

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

Parameters3/5

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

The input schema has very high coverage (97%) with detailed field descriptions and nested object explanations, so the description adds little parameter-level semantics. It appropriately points out that the input is identical to ccpcrate_resolve, which is useful, but the schema already carries the parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a diagnostic pass over the same input as ccpcrate_resolve, and enumerates the exact outputs: layers run, defaults, warnings, rule rows, verifications, and the paid computation result. It is distinct from the sibling tools, especially ccpcrate_resolve.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly frames the tool as free and diagnostic, with the actual numbers deferred to ccpcrate_resolve, giving agents a strong hint to use this tool for explanation rather than final amounts. It could be more explicit about when to prefer it over ccpcrate_rules or ccpcrate_group, but the contrast with ccpcrate_resolve is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources