Skip to main content
Glama

ccpcrate — Canadian CCPC corporate tax

Resolve the CCPC rate stack for one taxation year

ccpcrate_resolve
Read-onlyIdempotent

Compute the federal Part I / Part IV / refundable / RDTOH / dividend-refund lines and the provincial layer for one CCPC and one taxation year. Returns a readable summary plus the structured result: lines (rounded, as printed), unrounded audit values, facts, warnings, layers, balances carried forward, the inputs still missing, engine and rules versions and a request hash. Deductions are negative, taxes positive. A missing required input is an error, not a default. Paid: 0.25 USD per call in USDC over x402 (Base); without a payment the call returns the x402 payment requirements.

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

A5/5.0
Behavior5/5

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

The description discloses output structure (readable summary plus structured result with lines, audit values, warnings, etc.), sign conventions (deductions negative, taxes positive), error behavior for missing inputs, and payment behavior. This complements the annotations (readOnlyHint, idempotentHint) without contradiction, giving a full picture of what the tool does and what to expect.

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 dense but front-loaded with the core computation, then efficiently expands into output details, sign conventions, error semantics, and payment. Every sentence adds essential information for a complex tax domain; no filler or redundancy.

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

Completeness5/5

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

Given the tool's complexity and lack of an output schema, the description covers all necessary context: what it computes, what types of outputs are returned, sign conventions, error handling, payment conditions, and scope. This is sufficient for an agent to decide when and how to call it correctly.

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

Parameters5/5

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

Though the schema already covers 97% of parameters, the description adds meaningful context beyond the schema: e.g., 'hours07aCurrentYear required with 07b for the CO-771 layer', 'Omit for a holdco and supply the income lines instead', 'REQUIRED whenever a business limit is claimed', and clarifications like 'never an amount on top of them'. These enrich parameter understanding far beyond the baseline.

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 states a specific action ('Compute'), a specific resource ('federal Part I / Part IV / refundable / RDTOH / dividend-refund lines and the provincial layer'), and a precise scope ('for one CCPC and one taxation year'). This clearly distinguishes it from the group-level sibling ccpcrate_group.

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

Usage Guidelines5/5

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

The description explicitly scopes the tool to a single CCPC and single taxation year, implying when to use it versus ccpcrate_group. It also gives concrete usage conditions such as the payment requirement ('Paid: 0.25 USD per call... without a payment the call returns the x402 payment requirements') and clarifies error semantics ('A missing required input is an error, not a default').

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