vouch-protocol 2.2.0__tar.gz → 2.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. {vouch_protocol-2.2.0/vouch_protocol.egg-info → vouch_protocol-2.2.1}/PKG-INFO +1 -1
  2. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/pyproject.toml +1 -1
  3. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_vouch_mcp.py +25 -0
  4. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/__init__.py +1 -1
  5. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/mcp/__init__.py +28 -10
  6. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1/vouch_protocol.egg-info}/PKG-INFO +1 -1
  7. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/LICENSE +0 -0
  8. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/MANIFEST.in +0 -0
  9. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/README.md +0 -0
  10. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/setup.cfg +0 -0
  11. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_accountability.py +0 -0
  12. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_agent_enroll.py +0 -0
  13. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_attribution.py +0 -0
  14. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_audio_bridge.py +0 -0
  15. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_audit_trail.py +0 -0
  16. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_auditor.py +0 -0
  17. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_authority_state.py +0 -0
  18. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_authority_state_vectors.py +0 -0
  19. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_autosign.py +0 -0
  20. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_behavioral_attestation.py +0 -0
  21. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_bridge.py +0 -0
  22. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_budget.py +0 -0
  23. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_c2pa_formats.py +0 -0
  24. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_cache.py +0 -0
  25. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_canary.py +0 -0
  26. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_caveats.py +0 -0
  27. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_cli_init.py +0 -0
  28. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_cli_root.py +0 -0
  29. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_conformance.py +0 -0
  30. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_credential_gate.py +0 -0
  31. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_data_integrity.py +0 -0
  32. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_delegation_attenuation.py +0 -0
  33. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_deliberation.py +0 -0
  34. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_disconnected_edge.py +0 -0
  35. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_dtn_pads.py +0 -0
  36. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_dx_sugar.py +0 -0
  37. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_examples_robotics.py +0 -0
  38. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_fastapi_credential_gate.py +0 -0
  39. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_fleet.py +0 -0
  40. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_git_workflow.py +0 -0
  41. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_grade.py +0 -0
  42. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_halos_evidence.py +0 -0
  43. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_hardware_seam.py +0 -0
  44. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_hasura_integration.py +0 -0
  45. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_heartbeat.py +0 -0
  46. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_hybrid.py +0 -0
  47. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_hybrid_interop.py +0 -0
  48. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_intent_recheck.py +0 -0
  49. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_jcs.py +0 -0
  50. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_jcs_interop.py +0 -0
  51. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_liveness_conformance.py +0 -0
  52. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_mcp_server_shield.py +0 -0
  53. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_media_badge.py +0 -0
  54. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_media_native.py +0 -0
  55. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_merkle.py +0 -0
  56. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_mint_contributor_credential.py +0 -0
  57. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_multikey.py +0 -0
  58. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_nonce.py +0 -0
  59. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_orbital_accumulator.py +0 -0
  60. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_proof_of_integration.py +0 -0
  61. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_provenance.py +0 -0
  62. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_quorum.py +0 -0
  63. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_reasoning.py +0 -0
  64. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_receipts.py +0 -0
  65. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_recovery.py +0 -0
  66. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_reputation.py +0 -0
  67. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_reputation_aggregate.py +0 -0
  68. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_reputation_disputes.py +0 -0
  69. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_reputation_ledger.py +0 -0
  70. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_reputation_policy.py +0 -0
  71. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_reputation_portability.py +0 -0
  72. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_revocation.py +0 -0
  73. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_access.py +0 -0
  74. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_conformance.py +0 -0
  75. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_consent.py +0 -0
  76. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_custody.py +0 -0
  77. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_embodiment.py +0 -0
  78. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_fusion.py +0 -0
  79. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_handover.py +0 -0
  80. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_handshake_blackbox_passport.py +0 -0
  81. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_identity.py +0 -0
  82. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_lease_quorum.py +0 -0
  83. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_lifecycle.py +0 -0
  84. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_liveness_revocation.py +0 -0
  85. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_odd.py +0 -0
  86. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_perception.py +0 -0
  87. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_pq.py +0 -0
  88. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_provenance_capability.py +0 -0
  89. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_root_identity.py +0 -0
  90. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_safety_record.py +0 -0
  91. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_swarm.py +0 -0
  92. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_teleop.py +0 -0
  93. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_robot_wear.py +0 -0
  94. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_root_of_trust.py +0 -0
  95. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_root_of_trust_vectors.py +0 -0
  96. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_ros2_action_gate.py +0 -0
  97. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_runtime_vectors.py +0 -0
  98. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_scan.py +0 -0
  99. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_secure_key_custody.py +0 -0
  100. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_security_hardening.py +0 -0
  101. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_shield_guard.py +0 -0
  102. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_shield_rules.py +0 -0
  103. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_shield_vectors.py +0 -0
  104. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_signer_vc.py +0 -0
  105. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_status_list.py +0 -0
  106. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_threshold.py +0 -0
  107. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_threshold_loader.py +0 -0
  108. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_tool_registry.py +0 -0
  109. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_transparency.py +0 -0
  110. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_transport.py +0 -0
  111. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_transport_http_rendezvous.py +0 -0
  112. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_transport_rendezvous.py +0 -0
  113. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_transport_udna_sdk.py +0 -0
  114. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_trifecta.py +0 -0
  115. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_trust_check.py +0 -0
  116. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_trust_entropy.py +0 -0
  117. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_validator_server.py +0 -0
  118. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_vc.py +0 -0
  119. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/tests/test_verifier_vc.py +0 -0
  120. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/accountability.py +0 -0
  121. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/agent.py +0 -0
  122. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/async_verifier.py +0 -0
  123. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/attenuation.py +0 -0
  124. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/attribution.py +0 -0
  125. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/attribution_cli.py +0 -0
  126. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/audio.py +0 -0
  127. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/audit_trail.py +0 -0
  128. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/auditor.py +0 -0
  129. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/authority_state.py +0 -0
  130. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/autosign.py +0 -0
  131. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/behavioral_attestation.py +0 -0
  132. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/bridge/__init__.py +0 -0
  133. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/bridge/audio_routes.py +0 -0
  134. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/bridge/config.py +0 -0
  135. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/bridge/server.py +0 -0
  136. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/budget.py +0 -0
  137. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/cache.py +0 -0
  138. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/canary.py +0 -0
  139. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/caveats.py +0 -0
  140. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/cli.py +0 -0
  141. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/config.py +0 -0
  142. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/conformance.py +0 -0
  143. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/credential.py +0 -0
  144. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/data_integrity.py +0 -0
  145. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/data_integrity_hybrid.py +0 -0
  146. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/deliberation.py +0 -0
  147. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/did_web.py +0 -0
  148. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/fleet.py +0 -0
  149. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/gate.py +0 -0
  150. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/grade.py +0 -0
  151. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/heartbeat.py +0 -0
  152. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/_common.py +0 -0
  153. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/a2a.py +0 -0
  154. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/adk.py +0 -0
  155. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/amnesia.py +0 -0
  156. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/autogen/__init__.py +0 -0
  157. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/autogpt/__init__.py +0 -0
  158. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/autogpt/commands.py +0 -0
  159. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/claude-code/settings.hooks.json +0 -0
  160. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/crewai/__init__.py +0 -0
  161. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/crewai/tool.py +0 -0
  162. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/fastapi.py +0 -0
  163. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/google.py +0 -0
  164. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/goose.py +0 -0
  165. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/hasura/__init__.py +0 -0
  166. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/hasura/webhook.py +0 -0
  167. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/langchain/__init__.py +0 -0
  168. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/langchain/tool.py +0 -0
  169. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/langgraph.py +0 -0
  170. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/mcp/__init__.py +0 -0
  171. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/mcp/server.py +0 -0
  172. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/mlflow.py +0 -0
  173. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/n8n.py +0 -0
  174. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/openai.py +0 -0
  175. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/safetensors.py +0 -0
  176. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/streamlit/__init__.py +0 -0
  177. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/streamlit/seal.py +0 -0
  178. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/integrations/vertex_ai/__init__.py +0 -0
  179. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/intent_recheck.py +0 -0
  180. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/jcs.py +0 -0
  181. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/keys.py +0 -0
  182. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/keystore.py +0 -0
  183. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/kms.py +0 -0
  184. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/liveness_conformance.py +0 -0
  185. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/mcp/_guard.py +0 -0
  186. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/mcp_guard.py +0 -0
  187. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/media/__init__.py +0 -0
  188. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/media/badge.py +0 -0
  189. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/media/c2pa.py +0 -0
  190. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/media/native.py +0 -0
  191. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/merkle.py +0 -0
  192. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/metrics.py +0 -0
  193. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/multikey.py +0 -0
  194. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/nonce.py +0 -0
  195. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/onboard.py +0 -0
  196. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/proof_of_integration.py +0 -0
  197. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/provenance.py +0 -0
  198. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/quorum.py +0 -0
  199. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/ratelimit.py +0 -0
  200. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/reasoning.py +0 -0
  201. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/receipts.py +0 -0
  202. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/recovery.py +0 -0
  203. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/registry.py +0 -0
  204. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/reputation.py +0 -0
  205. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/reputation_aggregate.py +0 -0
  206. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/reputation_disputes.py +0 -0
  207. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/reputation_ledger.py +0 -0
  208. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/reputation_policy.py +0 -0
  209. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/reputation_portability.py +0 -0
  210. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/revocation.py +0 -0
  211. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/__init__.py +0 -0
  212. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/_signing.py +0 -0
  213. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/_verify.py +0 -0
  214. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/access.py +0 -0
  215. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/accumulator.py +0 -0
  216. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/blackbox.py +0 -0
  217. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/bundle.py +0 -0
  218. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/capability.py +0 -0
  219. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/conformance.py +0 -0
  220. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/consent.py +0 -0
  221. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/custody.py +0 -0
  222. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/dtn_revocation.py +0 -0
  223. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/edge_trust.py +0 -0
  224. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/embodiment.py +0 -0
  225. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/freshness.py +0 -0
  226. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/fusion.py +0 -0
  227. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/geoscope.py +0 -0
  228. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/halos.py +0 -0
  229. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/handover.py +0 -0
  230. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/handshake.py +0 -0
  231. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/hardware.py +0 -0
  232. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/identity.py +0 -0
  233. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/lease.py +0 -0
  234. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/lifecycle.py +0 -0
  235. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/liveness.py +0 -0
  236. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/localization.py +0 -0
  237. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/odd.py +0 -0
  238. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/orbital.py +0 -0
  239. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/passport.py +0 -0
  240. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/perception.py +0 -0
  241. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/perception_consensus.py +0 -0
  242. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/physical_quorum.py +0 -0
  243. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/pq.py +0 -0
  244. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/presence.py +0 -0
  245. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/provenance.py +0 -0
  246. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/quorum_trust.py +0 -0
  247. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/revocation.py +0 -0
  248. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/root_identity.py +0 -0
  249. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/safety_record.py +0 -0
  250. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/swarm.py +0 -0
  251. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/teleop.py +0 -0
  252. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/robotics/wear.py +0 -0
  253. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/root_of_trust.py +0 -0
  254. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/scan/__init__.py +0 -0
  255. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/scan/detector.py +0 -0
  256. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/scan/patterns.py +0 -0
  257. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/seal.py +0 -0
  258. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/shield/__init__.py +0 -0
  259. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/shield/demo.py +0 -0
  260. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/shield/flight_recorder.py +0 -0
  261. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/shield/rules.py +0 -0
  262. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/shield/shield.py +0 -0
  263. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/shield/trust_registry.py +0 -0
  264. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/signer.py +0 -0
  265. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/ssrf.py +0 -0
  266. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/status_list.py +0 -0
  267. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/status_list_fetcher.py +0 -0
  268. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/threshold.py +0 -0
  269. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/tool_registry.py +0 -0
  270. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transparency.py +0 -0
  271. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/__init__.py +0 -0
  272. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/base.py +0 -0
  273. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/did_key.py +0 -0
  274. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/envelope.py +0 -0
  275. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/http_rendezvous.py +0 -0
  276. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/http_transport.py +0 -0
  277. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/manager.py +0 -0
  278. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/rendezvous.py +0 -0
  279. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/transport/udna.py +0 -0
  280. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/trifecta.py +0 -0
  281. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/trust_check.py +0 -0
  282. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/trust_entropy.py +0 -0
  283. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/validator_server.py +0 -0
  284. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/vc.py +0 -0
  285. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/verification.py +0 -0
  286. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch/verifier.py +0 -0
  287. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch_protocol.egg-info/SOURCES.txt +0 -0
  288. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch_protocol.egg-info/dependency_links.txt +0 -0
  289. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch_protocol.egg-info/entry_points.txt +0 -0
  290. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch_protocol.egg-info/requires.txt +0 -0
  291. {vouch_protocol-2.2.0 → vouch_protocol-2.2.1}/vouch_protocol.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vouch-protocol
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: The Identity & Reputation Standard for AI Agents
5
5
  Author-email: Vouch Protocol Contributors <hello@vouch-protocol.com>
6
6
  License: Apache License 2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vouch-protocol"
7
- version = "2.2.0"
7
+ version = "2.2.1"
8
8
  description = "The Identity & Reputation Standard for AI Agents"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -441,3 +441,28 @@ def test_every_decision_is_logged_once(server, env, caplog):
441
441
  deny_lines = [r for r in caplog.records if r.getMessage().startswith("DENY")]
442
442
  assert len(deny_lines) == 1
443
443
  assert "credential does not match request" in deny_lines[0].getMessage()
444
+
445
+
446
+ # ---------------------------------------------------------------------------
447
+ # SDK compatibility
448
+ # ---------------------------------------------------------------------------
449
+
450
+
451
+ def test_works_against_whichever_mcp_sdk_is_installed():
452
+ """The SDK renamed its server class; both names reach the same subclass.
453
+
454
+ mcp 1.x ships `FastMCP`, mcp 2.x renamed it to `MCPServer`. Importing only
455
+ one of them made this module fail outright on the other line, so the base
456
+ class is chosen at import time and both names are exported.
457
+ """
458
+ import vouch.mcp as module
459
+
460
+ assert module.MCPServer is module.FastMCP
461
+ assert isinstance(module._MCP_SDK_V2, bool)
462
+
463
+ # Whichever line is installed, the subclass really extends that SDK's class.
464
+ base = type(module.FastMCP).__mro__[0]
465
+ assert base is type
466
+ parents = [c.__name__ for c in module.FastMCP.__mro__]
467
+ assert parents[0] == "FastMCP"
468
+ assert any(name in parents for name in ("FastMCP", "MCPServer"))
@@ -5,7 +5,7 @@ This package provides cryptographic identity binding for autonomous AI agents,
5
5
  enabling verifiable proof of intent and non-repudiation.
6
6
  """
7
7
 
8
- __version__ = "2.2.0"
8
+ __version__ = "2.2.1"
9
9
 
10
10
  # Core signing/verification
11
11
  from .signer import Signer, sign
@@ -53,20 +53,33 @@ from ._guard import (
53
53
 
54
54
  logger = logging.getLogger(__name__)
55
55
 
56
+ # The official MCP Python SDK renamed its high-level server class for the
57
+ # 2026-07-28 protocol revision: mcp>=2.0 ships ``mcp.server.MCPServer`` while
58
+ # mcp 1.x ships ``mcp.server.fastmcp.FastMCP``. Their ``tool()`` decorators take
59
+ # the same shape, so one subclass covers both and the installed SDK decides
60
+ # which protocol revisions are spoken on the wire.
56
61
  try:
57
- from mcp.server.fastmcp import FastMCP as _BaseFastMCP
58
- except ImportError as exc: # pragma: no cover
59
- raise ImportError(
60
- "vouch.mcp needs the MCP SDK. Install it with:\n"
61
- " pip install 'vouch-protocol[mcp]'\n"
62
- "or\n"
63
- " pip install mcp\n"
64
- f"(import error: {exc})"
65
- ) from exc
62
+ from mcp.server import MCPServer as _BaseServer # mcp >= 2.0
63
+
64
+ _MCP_SDK_V2 = True
65
+ except ImportError:
66
+ try:
67
+ from mcp.server.fastmcp import FastMCP as _BaseServer # mcp 1.x
68
+
69
+ _MCP_SDK_V2 = False
70
+ except ImportError as exc: # pragma: no cover
71
+ raise ImportError(
72
+ "vouch.mcp needs the MCP SDK. Install it with:\n"
73
+ " pip install 'vouch-protocol[mcp]'\n"
74
+ "or\n"
75
+ " pip install mcp\n"
76
+ f"(import error: {exc})"
77
+ ) from exc
66
78
 
67
79
 
68
80
  __all__ = [
69
81
  "FastMCP",
82
+ "MCPServer",
70
83
  "protect",
71
84
  "GuardConfig",
72
85
  "Refusal",
@@ -77,7 +90,7 @@ __all__ = [
77
90
  ]
78
91
 
79
92
 
80
- class FastMCP(_BaseFastMCP):
93
+ class FastMCP(_BaseServer):
81
94
  """An MCP server whose tools are protected by default.
82
95
 
83
96
  A thin subclass. The constructor takes everything the SDK's ``FastMCP``
@@ -249,3 +262,8 @@ def protect(server: Any, *, guard: Optional[ToolGuard] = None, **config: Any) ->
249
262
  server.call_tool = guarded_call_tool # type: ignore[assignment]
250
263
  server.vouch_guard = guard # type: ignore[attr-defined]
251
264
  return server
265
+
266
+
267
+ #: The name the 2026-07-28 SDK uses for the same class. Both names refer to the
268
+ #: one subclass; which base it extends depends on the installed SDK.
269
+ MCPServer = FastMCP
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vouch-protocol
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: The Identity & Reputation Standard for AI Agents
5
5
  Author-email: Vouch Protocol Contributors <hello@vouch-protocol.com>
6
6
  License: Apache License 2.0
File without changes
File without changes
File without changes