CVP verified calculation capability
Solve a Euclidean triangle from SSS, SAS, ASA, AAS, or SSA (ambiguous). Not the Pythagorean-only page.
Math · Geometry Capability ID math.geometry.triangle version 1.1.0 CVP VERIFIED CURRENT Core
Law of sines
a / sin A = b / sin B = c / sin Cc² = a² + b² − 2ab cos Carea = (1/2) ab sin CCanonical symbols for this capability. Agent schemas remain the contract.
| Symbol | Quantity | Unit policy | Role |
|---|---|---|---|
a | length | consistent length unit | input / output |
b | length | consistent length unit | input / output |
c | length | consistent length unit | input / output |
A_deg | scalar plane angle | — | input / output |
B_deg | scalar plane angle | — | input / output |
C_deg | scalar plane angle | — | input / output |
A | scalar plane angle | — | input |
B | scalar plane angle | — | input |
C | scalar plane angle | — | input |
area | area | square of input unit | output |
perimeter | length | same length unit | output |
solution_count | — | — | input / output |
solutions | — | — | input / output |
model | — | — | output |
Inspectable numeric contract for this Capability@Version. Not a rewrite of the engine.
| Field | Declaration |
|---|---|
numeric_domain | real |
exactness | float64 |
algorithm | Exact dyadic SSS predicates/Kahan polynomial area and atan2 angles; half-angle SAS; sine-law ASA/AAS; stable SSA quadratic roots with full ordered candidate set |
valid_domain | Positive normal binary64 lengths; degree angles strictly0<angle<180 with normal radian conversion; all reported positive values finite normal binary64. Strict raw decimals, max1024 characters, matching degree aliases. Complete1/2 SSA candidates; zero solution is an error. |
singularity_policy | INVALID_INPUT for impossible raw triangles or zero SSA candidates. NUMERIC_CONDITION for non-exact SSA height relative discriminant <=1e-8, angles rounded to endpoints, or derived rounded triangle gaps <=64*Number.EPSILON times the shortest side. Exact sin30/sin90/sin150 identities bypass height guard; raw SSS uses exact inequalities. NUMERIC_RANGE requires rescaling for nonnormal outputs. |
branch_policy | not applicable — real principal value only |
tolerance | type: relative; value: 5e-10; note: Independent mpmath750 model values; exact status/count/array cardinality and primary candidate identity. Not an input perturbation bound. |
convergence | not applicable — non-iterative |
conditioning | Near-flat triangles and SSA near tangent roots are input-sensitive. Exact predicates concern normalized binary64 only; decimal rounding can change the number of solutions. Two near-coincident solutions remain distinct or the case is rejected; never merged by an epsilon. |
rounding | ieee754_round_ties_to_even |
overflow | ieee754_nonfinite_or_coded_error |
reproducibility | deterministic algorithm + Capability@Version |
independent_oracle | cvp:math.geometry.triangle O2 Python mpmath750 cosine-law/Heron/inverse-sine independent fixtures |
golden_vectors | Evidence golden + boundary + property (and published_reference_case when listed) |
Declared scope for this capability. Do not use it outside this domain.
Assumptions
One numerical check. The calculator page holds worked steps and FAQ.
mode=sss a=3 b=4 c=5 → C=90°
CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance · all published modes. Computational verification is defined by CVP. Supplemental domain review (internal) and named expert review are defined by the Review policy and do not by themselves determine CVP conformance.
Human page, REST, and MCP share the same engine and calculation_version.
Build verified hashes workspace artifacts only. After deploy, attest:production GETs canonical URLs twice — the public/cached view an Agent actually hits, and origin — including every /capabilities/{id} HTML page. Public Capability HTML version must match catalog before production attestation passes. Live Trust rows above fetch /.well-known/calculatorx-production-attestation.json
and the output schema const. Build hashes: release integrity. That proves currently published page / engine / schema / evidence / MCP agree — not that a historical version is independently immutable. Reference Calculation Standard — Production surface contract 5/5.
curl -sS -X POST 'https://www.calculatorx.com/api/v1/calc/triangle-solver' \
-H 'Content-Type: application/json' \
-d '{"inputs":{"mode":"sss","a":3,"b":4,"c":5},"calculation_version":"1.1.0"}'{
"inputs": {
"mode": "sss",
"a": 3,
"b": 4,
"c": 5
},
"calculation_version": "1.1.0"
}POST /api/v1/calc/triangle-solver. This is a POST calculate endpoint — do not GET it.
Full REST contract: REST API docs.
Human-readable sources plus CVP reference evidence classes.
Sources
Reference evidence classes: O1 model · O2 expected_values · O2 numerical_behavior
Inspect, then execute. Same engine as REST and the human calculator.
curl -sS -X POST 'https://www.calculatorx.com/mcp' \
-H 'Content-Type: application/json' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: tools/call' \
-H 'Mcp-Name: inspect_capability' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"inspect_capability","arguments":{"capability_id":"math.geometry.triangle"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientInfo":{"name":"calculatorx-docs-example","version":"1.0.0"},"io.modelcontextprotocol/clientCapabilities":{}}}}'curl -sS -X POST 'https://www.calculatorx.com/mcp' \
-H 'Content-Type: application/json' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: tools/call' \
-H 'Mcp-Name: execute_calculation' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"execute_calculation","arguments":{"capability_id":"math.geometry.triangle","inputs":{"mode":"sss","a":3,"b":4,"c":5},"calculation_version":"1.1.0"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientInfo":{"name":"calculatorx-docs-example","version":"1.0.0"},"io.modelcontextprotocol/clientCapabilities":{}}}}'Pin calculation_version (1.1.0) when the result must stay reproducible.
Inspect the trust tier and required assurance level before execution. Full protocol notes: MCP docs.