ccpcrate.ca
A deterministic MCP server for the Canadian CCPC corporate rate stack: small business deduction and its grinds, Part IV, RDTOH, the dividend refund, and the provincial layer.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.25 USDC on Base to 0x74d8…a16c9. The signed payment is good for 5 minutes.
- Paid to
- 0x74d8…a16c9
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 250000 smallest units
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x74d8ebac88fd0ccd89db55ead2992ba428da16c9",
"amount": "250000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {
"taxYear": {
"end": "2025-12-31",
"start": "2025-01-01"
},
"province": "ON",
"taxableIncome": 500000,
"groupAaiiPriorYear": 80000,
"activeBusinessIncome": 400000,
"businessLimitAllocated": 500000,
"dividendsPaidNonEligible": 100000,
"aggregateInvestmentIncome": 100000
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"lines": {
"on_tax": 24300,
"part_i_tax": 77667,
"sbd_income": 350000,
"part_iv_tax": 0,
"combined_tax": 101967,
"dividend_refund": 30667,
"reduced_business_limit": 350000,
"small_business_deduction": -66500,
"total_tax_payable_net_of_refund": 71300
},
"rules_version": "0.2.7",
"engine_version": "0.0.1"
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"required": [
"taxYear",
"province"
],
"properties": {
"qc": {
"type": "object",
"description": "Québec inputs (CO-771)"
},
"taxYear": {
"type": "object"
},
"province": {
"enum": [
"AB",
"BC",
"MB",
"NB",
"NL",
"NS",
"NT",
"NU",
"ON",
"PE",
"QC",
"SK",
"YT"
],
"type": "string",
"description": "Province of the permanent establishment (two-letter code)"
},
"cdaOpening": {
"type": "number",
"description": "Capital dividend account opening balance (returns cda_closing)"
},
"rdtohOpening": {
"type": "object",
"description": "Opening ERDTOH / NERDTOH in T2 terms. Omitted = 0 with a warning when it matters"
},
"taxableIncome": {
"type": "number",
"description": "Part I taxable income (T2 line 360). Omit for a holdco and supply the income lines instead; the engine derives it"
},
"netIncomeForTax": {
"type": "number",
"description": "Holdco: net income for tax purposes (Sch 1 result) — overrides the derivation"
},
"propertyExpenses": {
"type": "number",
"description": "Holdco: deductible property expenses of the year (total)"
},
"groupAaiiPriorYear": {
"type": "number",
"description": "T2 line 417: Σ Sch 7 line 745 of the associated group for taxation years ending in the preceding calendar year. REQUI..."
},
"netIncomeAccounting": {
"type": "number",
"description": "Holdco: net income per financial statements"
},
"otherPropertyIncome": {
"type": "number",
"description": "Holdco: property income other than dividends and capital-gains dividends"
},
"taxableCapitalGains": {
"type": "number",
"description": "Sch 6: taxable capital gains (the included half)"
},
"activeBusinessIncome": {
"type": "number",
"description": "T2 line 400: income from an active business carried on in Canada"
},
"lossesByYearOfOrigin": {
"type": "object",
"description": "Sch 4 Part 6: opening balances by year of origin, e.g. {\"2011\": 263564}"
},
"provincialProportion": {
"type": "number",
"description": "Share of taxable income allocated to the province (Reg. 402). Default 1"
},
"capitalGainsDividends": {
"type": "number",
"description": "Capital-gains dividends received (full amount; half to CDA)"
},
"dividendsPaidEligible": {
"type": "number",
"description": "Eligible dividends paid (designated) in the year"
},
"allowableCapitalLosses": {
"type": "number",
"description": "Sch 6: allowable capital losses of the year"
},
"businessLimitAllocated": {
"type": "number",
"description": "Business limit allocated to this corporation (Sch 23 line 410 if associated, else the statutory limit). 0 = allocatio..."
},
"foreignInvestmentIncome": {
"type": "number",
"description": "T2 line 445: foreign investment income"
},
"nonCapitalLossesOpening": {
"type": "number",
"description": "Sch 4: non-capital loss pool at the start of the year"
},
"dividendsPaidNonEligible": {
"type": "number",
"description": "Non-eligible taxable dividends paid in the year"
},
"foreignBusinessTaxCredit": {
"type": "number",
"description": "T2 line 636: foreign business income tax credit"
},
"aggregateInvestmentIncome": {
"type": "number",
"description": "T2 line 440: aggregate investment income (s.129(4))"
},
"dividendsReceivedConnected": {
"type": "array",
"description": "Dividends from connected corporations (s.186(4)) — Part IV only through the payer's refund"
},
"foreignNonBusinessTaxCredit": {
"type": "number",
"description": "T2 line 632: foreign non-business income tax credit"
},
"taxableCapitalGroupPriorYear": {
"type": "number",
"description": "T2 line 415: taxable capital employed in Canada of the group, prior year. Omit when under 10 M"
},
"dividendsPaidOfWhichConnected": {
"type": "number",
"description": "How much OF the dividends paid above went to connected corporations — a portion of dividendsPaidEligible + dividendsP..."
},
"dividendsReceivedPortfolioEligible": {
"type": "number",
"description": "Eligible taxable dividends from non-connected payers (Part IV → ERDTOH)"
},
"nonCapitalLossesClaimedAgainstPartI": {
"type": "number",
"description": "Non-capital losses claimed against Part I income"
},
"nonCapitalLossesClaimedAgainstPartIV": {
"type": "number",
"description": "Non-capital / farm losses claimed against Part IV (s.186(1)(c),(d)) — the loss amount"
},
"dividendsReceivedPortfolioNonEligible": {
"type": "number",
"description": "Non-eligible taxable dividends from non-connected payers (Part IV → NERDTOH)"
}
}
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-09-09 23:33Z
- Last indexed by Roundhouse
- 2026-09-24 07:00Z
- Last enriched (probe, favicon, geo)
- 2026-09-10 00:45Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 405
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 15 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service ccpcrate.ca and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=ccpcrate.ca' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://ccpcrate.ca/v1/resolve, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.