Three-node chain validating IFRS 17 insurance contract measurement from model classification through CSM roll-forward to risk adjustment disclosure. Each stage produces a SHA-256 execution hash, forming a tamper-evident audit trail. Terminal node exports a W3C Verifiable Credential.
{
"tool": "classify_ifrs17_measurement_model",
"arguments": {
"contract": {
"coverage_period_months": 12,
"direct_participating_features": false,
"is_reinsurance": false,
"premium_allocation_approach_election": false,
"vfa_election": false
}
}
}
{
"tool": "validate_ifrs17_csm_rollforward",
"arguments": {
"rollforward": {
"opening_csm": 1000,
"new_business_csm": 200,
"interest_accretion": 50,
"experience_adjustments": -30,
"release_to_profit": 120,
"fx_adjustments": 10
}
}
}
{
"tool": "check_ifrs17_risk_adjustment",
"arguments": {
"risk_adjustment": {
"ra_amount": 500,
"technique": "CoC",
"confidence_level_pct": 0,
"disclosed": true,
"onerous_contracts_identified": false,
"loss_component_recognized": false
}
}
}
Run all three tools in order. Each result's execution_hash feeds as parent_hash to the next call, creating the linked audit chain.
// Step 1: classify measurement model
const step1 = await mcp.call("classify_ifrs17_measurement_model", {
contract: {
coverage_period_months: 12,
direct_participating_features: false,
is_reinsurance: false,
premium_allocation_approach_election: false,
vfa_election: false
}
});
// Step 2: validate CSM roll-forward (chain from step 1)
const step2 = await mcp.call("validate_ifrs17_csm_rollforward", {
rollforward: {
opening_csm: 1000,
new_business_csm: 200,
interest_accretion: 50,
experience_adjustments: -30,
release_to_profit: 120,
fx_adjustments: 10
}
});
// Step 3: check risk adjustment — final stage
const step3 = await mcp.call("check_ifrs17_risk_adjustment", {
risk_adjustment: {
ra_amount: 500,
technique: "CoC",
confidence_level_pct: 0,
disclosed: true,
onerous_contracts_identified: false,
loss_component_recognized: false
}
});
// Terminal artifact — export as W3C VC or Policy Mandate JSON
console.log("ra_compliant:", step3.ra_compliant);
console.log("gaps:", step3.gaps);
| Chain slug | ifrs17-measurement-conformance |
| Nodes | art-177 → art-178 → art-179 |
| Cluster | ⑰ Insurance, Actuarial & Prudential |
| Regulation | IFRS 17 Insurance Contracts (2023) |
| Spec version | 0.5.0 |
| Terminal export | Policy Mandate JSON · W3C VC (§13.11) |
| Hash scheme | SHA-256 over JCS-canonical {policy_parameters, output_payload} |
Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this whole workflow on the server and check one field that answers a real question.
Question: Is this direct participation contract eligible for the simplified PAA model, or must we set up a full GMM CSM rollforward?
Run the AINumbers MCP tool `run_chain` with {"chain":"ifrs17-measurement-conformance"} and read `art-177-ifrs17-measurement-model-classifier.measurement_model`.
Re-run with `inputs` for `art-177-ifrs17-measurement-model-classifier`, reusing the values that result echoed, with `contract` changed so direct_participating_features is true in the contract. Compare the same field.
Verify: call `verify_execution_hash` (https://mcp.ainumbers.co/mcp) with `claimed_hash` set to `composite_execution_hash` and the full `composite_artifact`.
Ledger, for a human re-check: https://ledger.ainumbers.co/
PII rule: send synthetic or anonymised inputs only. The MCP server runs these kernels and logs no payloads.
Chain page: https://ainumbers.co/chaingraph/chains/ifrs17-measurement-conformance.html