CAIN-42 CAIN Studio

Evidence library · niche

Tools, MCP, protocols & adapters

How agents reach tools, APIs and each other, safely. 684 tested invariants.

Last reviewed 2026-10-01

684 of 684 held

Where this niche's rules come from

Test families in this niche

adapter (270) · protocol_domain (56) · discovery (36) · abi (28) · interchange (28) · universal_action (20) · routing (19) · sdk (19) · gateway (19) · gip_carrier (16) · channel (14) · overlay_protocol (13) · uact (12) · route (12) · runtime_adapter (12) · agency_graph (12) · runtime_swap (9) · message_class (9) · runtime_binding (8) · protocol_conformance (8) · operation_kind (8) · edge (6) · abi_error (5) · action (5) · carrier (3) · radar (3) · telemetry (2) · moat (2) · competitive_gap (2) · risk (1) · translation (1) · out_of_band (1) · reassessment (1) · integrity (1) · developer (1) · gap_detector (1) · ip (1) · lab (1) · physical_hybrid (1) · protocol (1)

Where these come from

Rules 1–150 of 684

IDRuleBundleResult
G71physical governance does not claim physical controlE19held
I112physical and societal control is not claimedE20held
D39tool promotion requires governanceE21held
D63no discovery bypasses E8E21held
D122a researcher cannot confirm their own discoveryE21held
D123the discovery lifecycle has no shortcutsE21held
D148the discovery flywheel has no terminal stateE21held
META-I064a legitimate runtime action commits through E8E23held
META-P015a diff is material exactly when components or edges changed (all depth-2 candidates)E23held
META-L025META-025 NO EVOLUTION MAY REMOVE THE ABILITY TO AUDIT THAT EVOLUTIONE23held
NET-I031MCP execution reaches E8E24held
NET-I034API actions reach E8E24held
NET-I035physical consequential actions reach E8E24held
NET-I047every discovery answers the eight questionsE24held
NET-S-tool-rollbacka rolled-back tool is refusedE24held
NET-L01NET-L01 DISCOVERY IS NOT TRUSTE24held
NET-L18NET-L18 NO PROTOCOL BYPASSES E8E24held
I-ADAPTER-a2a-events_recordeda2a: events_recordedE25held
I-ADAPTER-a2a-signed_envelope_identitya2a: signed_envelope_identityE25held
I-ADAPTER-a2a-unsigned_envelope_refuseda2a: unsigned_envelope_refusedE25held
I-ADAPTER-a2a-unmapped_operation_refuseda2a: unmapped_operation_refusedE25held
I-ADAPTER-a2a-relabel_refuseda2a: relabel_refusedE25held
I-ADAPTER-a2a-deny_respecteda2a: deny_respectedE25held
I-ADAPTER-a2a-commit_without_allow_refuseda2a: commit_without_allow_refusedE25held
I-ADAPTER-a2a-executor_sealeda2a: executor_sealedE25held
I-ADAPTER-a2a-parameter_mutation_refuseda2a: parameter_mutation_refusedE25held
I-ADAPTER-a2a-token_single_usea2a: token_single_useE25held
I-ADAPTER-a2a-binding_change_invalidatesa2a: binding_change_invalidatesE25held
I-ADAPTER-a2a-policy_change_invalidatesa2a: policy_change_invalidatesE25held
I-ADAPTER-a2a-receipt_chain_verifiesa2a: receipt_chain_verifiesE25held
I-ADAPTER-a2a-quarantine_cascadesa2a: quarantine_cascadesE25held
I-ADAPTER-a2a-replay_matchesa2a: replay_matchesE25held
I-ADAPTER-browser-events_recordedbrowser: events_recordedE25held
I-ADAPTER-browser-signed_envelope_identitybrowser: signed_envelope_identityE25held
I-ADAPTER-browser-unsigned_envelope_refusedbrowser: unsigned_envelope_refusedE25held
I-ADAPTER-browser-unmapped_operation_refusedbrowser: unmapped_operation_refusedE25held
I-ADAPTER-browser-relabel_refusedbrowser: relabel_refusedE25held
I-ADAPTER-browser-deny_respectedbrowser: deny_respectedE25held
I-ADAPTER-browser-commit_without_allow_refusedbrowser: commit_without_allow_refusedE25held
I-ADAPTER-browser-executor_sealedbrowser: executor_sealedE25held
I-ADAPTER-browser-parameter_mutation_refusedbrowser: parameter_mutation_refusedE25held
I-ADAPTER-browser-token_single_usebrowser: token_single_useE25held
I-ADAPTER-browser-binding_change_invalidatesbrowser: binding_change_invalidatesE25held
I-ADAPTER-browser-policy_change_invalidatesbrowser: policy_change_invalidatesE25held
I-ADAPTER-browser-receipt_chain_verifiesbrowser: receipt_chain_verifiesE25held
I-ADAPTER-browser-quarantine_cascadesbrowser: quarantine_cascadesE25held
I-ADAPTER-browser-replay_matchesbrowser: replay_matchesE25held
I-ADAPTER-cli-events_recordedcli: events_recordedE25held
I-ADAPTER-cli-signed_envelope_identitycli: signed_envelope_identityE25held
I-ADAPTER-cli-unsigned_envelope_refusedcli: unsigned_envelope_refusedE25held
I-ADAPTER-cli-unmapped_operation_refusedcli: unmapped_operation_refusedE25held
I-ADAPTER-cli-relabel_refusedcli: relabel_refusedE25held
I-ADAPTER-cli-deny_respectedcli: deny_respectedE25held
I-ADAPTER-cli-commit_without_allow_refusedcli: commit_without_allow_refusedE25held
I-ADAPTER-cli-executor_sealedcli: executor_sealedE25held
I-ADAPTER-cli-parameter_mutation_refusedcli: parameter_mutation_refusedE25held
I-ADAPTER-cli-token_single_usecli: token_single_useE25held
I-ADAPTER-cli-binding_change_invalidatescli: binding_change_invalidatesE25held
I-ADAPTER-cli-policy_change_invalidatescli: policy_change_invalidatesE25held
I-ADAPTER-cli-receipt_chain_verifiescli: receipt_chain_verifiesE25held
I-ADAPTER-cli-quarantine_cascadescli: quarantine_cascadesE25held
I-ADAPTER-cli-replay_matchescli: replay_matchesE25held
I-ADAPTER-cloud_api-events_recordedcloud_api: events_recordedE25held
I-ADAPTER-cloud_api-signed_envelope_identitycloud_api: signed_envelope_identityE25held
I-ADAPTER-cloud_api-unsigned_envelope_refusedcloud_api: unsigned_envelope_refusedE25held
I-ADAPTER-cloud_api-unmapped_operation_refusedcloud_api: unmapped_operation_refusedE25held
I-ADAPTER-cloud_api-relabel_refusedcloud_api: relabel_refusedE25held
I-ADAPTER-cloud_api-deny_respectedcloud_api: deny_respectedE25held
I-ADAPTER-cloud_api-commit_without_allow_refusedcloud_api: commit_without_allow_refusedE25held
I-ADAPTER-cloud_api-executor_sealedcloud_api: executor_sealedE25held
I-ADAPTER-cloud_api-parameter_mutation_refusedcloud_api: parameter_mutation_refusedE25held
I-ADAPTER-cloud_api-token_single_usecloud_api: token_single_useE25held
I-ADAPTER-cloud_api-binding_change_invalidatescloud_api: binding_change_invalidatesE25held
I-ADAPTER-cloud_api-policy_change_invalidatescloud_api: policy_change_invalidatesE25held
I-ADAPTER-cloud_api-receipt_chain_verifiescloud_api: receipt_chain_verifiesE25held
I-ADAPTER-cloud_api-quarantine_cascadescloud_api: quarantine_cascadesE25held
I-ADAPTER-cloud_api-replay_matchescloud_api: replay_matchesE25held
I-ADAPTER-computer_use-events_recordedcomputer_use: events_recordedE25held
I-ADAPTER-computer_use-signed_envelope_identitycomputer_use: signed_envelope_identityE25held
I-ADAPTER-computer_use-unsigned_envelope_refusedcomputer_use: unsigned_envelope_refusedE25held
I-ADAPTER-computer_use-unmapped_operation_refusedcomputer_use: unmapped_operation_refusedE25held
I-ADAPTER-computer_use-relabel_refusedcomputer_use: relabel_refusedE25held
I-ADAPTER-computer_use-deny_respectedcomputer_use: deny_respectedE25held
I-ADAPTER-computer_use-commit_without_allow_refusedcomputer_use: commit_without_allow_refusedE25held
I-ADAPTER-computer_use-executor_sealedcomputer_use: executor_sealedE25held
I-ADAPTER-computer_use-parameter_mutation_refusedcomputer_use: parameter_mutation_refusedE25held
I-ADAPTER-computer_use-token_single_usecomputer_use: token_single_useE25held
I-ADAPTER-computer_use-binding_change_invalidatescomputer_use: binding_change_invalidatesE25held
I-ADAPTER-computer_use-policy_change_invalidatescomputer_use: policy_change_invalidatesE25held
I-ADAPTER-computer_use-receipt_chain_verifiescomputer_use: receipt_chain_verifiesE25held
I-ADAPTER-computer_use-quarantine_cascadescomputer_use: quarantine_cascadesE25held
I-ADAPTER-computer_use-replay_matchescomputer_use: replay_matchesE25held
I-ADAPTER-container-events_recordedcontainer: events_recordedE25held
I-ADAPTER-container-signed_envelope_identitycontainer: signed_envelope_identityE25held
I-ADAPTER-container-unsigned_envelope_refusedcontainer: unsigned_envelope_refusedE25held
I-ADAPTER-container-unmapped_operation_refusedcontainer: unmapped_operation_refusedE25held
I-ADAPTER-container-relabel_refusedcontainer: relabel_refusedE25held
I-ADAPTER-container-deny_respectedcontainer: deny_respectedE25held
I-ADAPTER-container-commit_without_allow_refusedcontainer: commit_without_allow_refusedE25held
I-ADAPTER-container-executor_sealedcontainer: executor_sealedE25held
I-ADAPTER-container-parameter_mutation_refusedcontainer: parameter_mutation_refusedE25held
I-ADAPTER-container-token_single_usecontainer: token_single_useE25held
I-ADAPTER-container-binding_change_invalidatescontainer: binding_change_invalidatesE25held
I-ADAPTER-container-policy_change_invalidatescontainer: policy_change_invalidatesE25held
I-ADAPTER-container-receipt_chain_verifiescontainer: receipt_chain_verifiesE25held
I-ADAPTER-container-quarantine_cascadescontainer: quarantine_cascadesE25held
I-ADAPTER-container-replay_matchescontainer: replay_matchesE25held
I-ADAPTER-database-events_recordeddatabase: events_recordedE25held
I-ADAPTER-database-signed_envelope_identitydatabase: signed_envelope_identityE25held
I-ADAPTER-database-unsigned_envelope_refuseddatabase: unsigned_envelope_refusedE25held
I-ADAPTER-database-unmapped_operation_refuseddatabase: unmapped_operation_refusedE25held
I-ADAPTER-database-relabel_refuseddatabase: relabel_refusedE25held
I-ADAPTER-database-deny_respecteddatabase: deny_respectedE25held
I-ADAPTER-database-commit_without_allow_refuseddatabase: commit_without_allow_refusedE25held
I-ADAPTER-database-executor_sealeddatabase: executor_sealedE25held
I-ADAPTER-database-parameter_mutation_refuseddatabase: parameter_mutation_refusedE25held
I-ADAPTER-database-token_single_usedatabase: token_single_useE25held
I-ADAPTER-database-binding_change_invalidatesdatabase: binding_change_invalidatesE25held
I-ADAPTER-database-policy_change_invalidatesdatabase: policy_change_invalidatesE25held
I-ADAPTER-database-receipt_chain_verifiesdatabase: receipt_chain_verifiesE25held
I-ADAPTER-database-quarantine_cascadesdatabase: quarantine_cascadesE25held
I-ADAPTER-database-replay_matchesdatabase: replay_matchesE25held
I-ADAPTER-deployment-events_recordeddeployment: events_recordedE25held
I-ADAPTER-deployment-signed_envelope_identitydeployment: signed_envelope_identityE25held
I-ADAPTER-deployment-unsigned_envelope_refuseddeployment: unsigned_envelope_refusedE25held
I-ADAPTER-deployment-unmapped_operation_refuseddeployment: unmapped_operation_refusedE25held
I-ADAPTER-deployment-relabel_refuseddeployment: relabel_refusedE25held
I-ADAPTER-deployment-deny_respecteddeployment: deny_respectedE25held
I-ADAPTER-deployment-commit_without_allow_refuseddeployment: commit_without_allow_refusedE25held
I-ADAPTER-deployment-executor_sealeddeployment: executor_sealedE25held
I-ADAPTER-deployment-parameter_mutation_refuseddeployment: parameter_mutation_refusedE25held
I-ADAPTER-deployment-token_single_usedeployment: token_single_useE25held
I-ADAPTER-deployment-binding_change_invalidatesdeployment: binding_change_invalidatesE25held
I-ADAPTER-deployment-policy_change_invalidatesdeployment: policy_change_invalidatesE25held
I-ADAPTER-deployment-receipt_chain_verifiesdeployment: receipt_chain_verifiesE25held
I-ADAPTER-deployment-quarantine_cascadesdeployment: quarantine_cascadesE25held
I-ADAPTER-deployment-replay_matchesdeployment: replay_matchesE25held
I-ADAPTER-event_stream-events_recordedevent_stream: events_recordedE25held
I-ADAPTER-event_stream-signed_envelope_identityevent_stream: signed_envelope_identityE25held
I-ADAPTER-event_stream-unsigned_envelope_refusedevent_stream: unsigned_envelope_refusedE25held
I-ADAPTER-event_stream-unmapped_operation_refusedevent_stream: unmapped_operation_refusedE25held
I-ADAPTER-event_stream-relabel_refusedevent_stream: relabel_refusedE25held
I-ADAPTER-event_stream-deny_respectedevent_stream: deny_respectedE25held
I-ADAPTER-event_stream-commit_without_allow_refusedevent_stream: commit_without_allow_refusedE25held
I-ADAPTER-event_stream-executor_sealedevent_stream: executor_sealedE25held
I-ADAPTER-event_stream-parameter_mutation_refusedevent_stream: parameter_mutation_refusedE25held
I-ADAPTER-event_stream-token_single_useevent_stream: token_single_useE25held
I-ADAPTER-event_stream-binding_change_invalidatesevent_stream: binding_change_invalidatesE25held
I-ADAPTER-event_stream-policy_change_invalidatesevent_stream: policy_change_invalidatesE25held
I-ADAPTER-event_stream-receipt_chain_verifiesevent_stream: receipt_chain_verifiesE25held

1 2 3 4 5

Other niches

Consensus & distributed systems · Attacks, threats & containment · Identity, authority & delegation · Evidence, receipts & proofs · Memory, data & privacy · Prediction, world models & simulation · Transactions, markets & economics · Autonomy, control loops & recovery · Policy, law & governance · Trust & reputation · Supply chain, registry & lifecycle · Benchmarks, coverage & performance · Core guarantees

Try CAIN-42 on your own agents

Create a free account and every new account starts with a 7-day trial of the full platform. Or try the sandbox first, with no account at all.

Create a free account →  ·  Try the sandbox  ·  See the whole ecosystem