agenticdome-python-sdk 1.2.10__tar.gz → 1.2.11__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 (78) hide show
  1. {agenticdome_python_sdk-1.2.10/agenticdome_python_sdk.egg-info → agenticdome_python_sdk-1.2.11}/PKG-INFO +52 -181
  2. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/README.md +51 -180
  3. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11/agenticdome_python_sdk.egg-info}/PKG-INFO +52 -181
  4. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/SOURCES.txt +0 -1
  5. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/pyproject.toml +1 -1
  6. agenticdome_python_sdk-1.2.10/tests/test_live_tenant.py +0 -113
  7. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/LICENSE +0 -0
  8. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/MANIFEST.in +0 -0
  9. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/dependency_links.txt +0 -0
  10. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/entry_points.txt +0 -0
  11. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/requires.txt +0 -0
  12. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_python_sdk.egg-info/top_level.txt +0 -0
  13. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/__init__.py +0 -0
  14. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/_framework_firewall.py +0 -0
  15. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/_mode.py +0 -0
  16. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/agno.py +0 -0
  17. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/autogen.py +0 -0
  18. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/aws_bedrock.py +0 -0
  19. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/claude.py +0 -0
  20. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/client.py +0 -0
  21. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/crewai.py +0 -0
  22. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/demo.py +0 -0
  23. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/google_adk.py +0 -0
  24. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/identity.py +0 -0
  25. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/langgraph.py +0 -0
  26. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/llamaindex.py +0 -0
  27. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/mcp_host.py +0 -0
  28. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/microsoft_agent_framework.py +0 -0
  29. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/microsoft_ai_foundry.py +0 -0
  30. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/openai_agents.py +0 -0
  31. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/proof.py +0 -0
  32. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/pydantic.py +0 -0
  33. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/simulation.py +0 -0
  34. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/agenticdome_sdk/smolagents.py +0 -0
  35. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/PRODUCTION_INTEGRATION.md +0 -0
  36. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/README.md +0 -0
  37. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/attack_demo.py +0 -0
  38. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/crewai_agenticdome_firewall.py +0 -0
  39. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/README.md +0 -0
  40. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/_shared.py +0 -0
  41. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/agno.py +0 -0
  42. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/autogen.py +0 -0
  43. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/aws_bedrock.py +0 -0
  44. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/claude_agent_sdk.py +0 -0
  45. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/crewai.py +0 -0
  46. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/custom_python.py +0 -0
  47. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/google_adk.py +0 -0
  48. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/langgraph.py +0 -0
  49. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/llamaindex.py +0 -0
  50. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/mcp.py +0 -0
  51. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/microsoft_agent_framework.py +0 -0
  52. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/microsoft_ai_foundry.py +0 -0
  53. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/openai_agents.py +0 -0
  54. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/pydanticai.py +0 -0
  55. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/frameworks/smolagents.py +0 -0
  56. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/langgraph_agenticdome_firewall.py +0 -0
  57. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/examples/local_simulation_gallery.py +0 -0
  58. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/setup.cfg +0 -0
  59. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/setup.py +0 -0
  60. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_agno_integration.py +0 -0
  61. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_attack_demo.py +0 -0
  62. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_autogen_integration.py +0 -0
  63. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_aws_bedrock_integration.py +0 -0
  64. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_claude_integration.py +0 -0
  65. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_client.py +0 -0
  66. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_crewai_integration.py +0 -0
  67. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_execution_broker.py +0 -0
  68. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_google_adk_integration.py +0 -0
  69. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_identity_context.py +0 -0
  70. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_langgraph_integration.py +0 -0
  71. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_llamaindex_integration.py +0 -0
  72. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_local_simulation.py +0 -0
  73. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_mcp_host_integration.py +0 -0
  74. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_microsoft_agent_framework_integration.py +0 -0
  75. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_microsoft_ai_foundry_integration.py +0 -0
  76. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_openai_agents_integration.py +0 -0
  77. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_pydanticai_integration.py +0 -0
  78. {agenticdome_python_sdk-1.2.10 → agenticdome_python_sdk-1.2.11}/tests/test_smolagents_integration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenticdome-python-sdk
3
- Version: 1.2.10
3
+ Version: 1.2.11
4
4
  Summary: Official Python SDK for AgenticDome security guardrails, DLP, tool authorization, and multi-agent delegation enforcement.
5
5
  Author: AgenticDome
6
6
  License: Proprietary
@@ -111,6 +111,8 @@ Dynamic: license-file
111
111
  [![Python Versions](https://img.shields.io/pypi/pyversions/agenticdome-python-sdk.svg)](https://pypi.org/project/agenticdome-python-sdk/)
112
112
  [![License: Proprietary](https://img.shields.io/badge/License-Proprietary-blue.svg)](#license)
113
113
 
114
+ [Source and examples](https://github.com/agenticdome/agenticdome-python-sdk) · [Issue tracker](https://github.com/agenticdome/agenticdome-python-sdk/issues) · [PyPI package](https://pypi.org/project/agenticdome-python-sdk/)
115
+
114
116
  > **Production-grade security guardrails, DLP, tool authorization, and cryptographically verified multi-agent delegation for Python autonomous AI runtimes.**
115
117
 
116
118
  `agenticdome-python-sdk` is the official Python SDK and middleware package for [AgenticDome](https://agenticdome.io). It enforces deterministic security controls at every boundary your agents cross — prompt ingress, tool execution, agent-to-agent handoffs, and output egress — using the tenant's assigned AgenticDome runtime sidecar.
@@ -188,7 +190,7 @@ result = crew.kickoff() # hostile prompts, unsafe tools, and rogue
188
190
  - [CrewAI](#crewai) · [PydanticAI](#pydanticai) · [LangGraph](#langgraph) · [Microsoft Agent Framework](#microsoft-agent-framework) · [Microsoft AutoGen](#microsoft-autogen) · [Microsoft AI Foundry](#microsoft-ai-foundry) · [OpenAI Agents SDK](#openai-agents-sdk) · [Claude Agent SDK](#claude-agent-sdk) · [Hugging Face smolagents](#hugging-face-smolagents) · [Agno](#agno) · [Google ADK](#google-adk) · [LlamaIndex](#llamaindex) · [AWS Bedrock](#aws-bedrock) · [MCP Host / Gateway](#mcp-host--gateway)
189
191
  9. [Core SDK Client (Custom Runtimes)](#core-sdk-client-custom-runtimes)
190
192
  10. [Production Deployment](#production-deployment)
191
- 11. [Package Build and Verification](#package-build-and-verification)
193
+ 11. [Source Installation and Verification](#source-installation-and-verification)
192
194
  12. [License](#license)
193
195
 
194
196
  ---
@@ -203,7 +205,7 @@ An agent can be hijacked while holding valid tokens, approved tools, and fully a
203
205
  | **Tool & skill authorization** | Unauthorized or out-of-policy tool calls, evaluated on agent identity, tool name, arguments, session, source metadata, and delegation chain | Before tool execution |
204
206
  | **Cryptographic delegation handoffs** | Confused-deputy attacks, lateral privilege escalation, stolen-token replay between agents | At every manager→specialist handoff |
205
207
  | **Inline output DLP** | Leakage of PII, emails, phone numbers, API keys, access tokens, cloud credentials, corporate secrets, compliance-sensitive records | Before output is persisted, displayed, or re-enters the agent loop |
206
- | **Fail-safe runtime behavior** | Silent security bypass when the control plane is unreachable | Configurable fail-closed (production) / fail-open (dev) |
208
+ | **Fail-safe runtime behavior** | Silent security bypass when the assigned runtime is unavailable | Configurable fail-closed (production) / fail-open (dev) |
207
209
 
208
210
  **Delegation tokens are the differentiator.** Every authorized handoff issues a decision token that binds the originating human subject (when present), the ordered and nested agent actor chain, source manager and target specialist, exact tool name and arguments, session ID, trace and lineage root/parent IDs, intent digest, policy binding, authorized scopes, trust epochs, tenant context, and the policy decision itself. Execution verification consumes the server-side call budget and checks revocation state — a token authorizes one exact action, once.
209
211
 
@@ -238,50 +240,25 @@ client.a2a_verify_decision_token_rpc(
238
240
 
239
241
  ## How It Works
240
242
 
241
- AgenticDome uses a **hybrid split-plane architecture**. Your local Python runtime executes agents, tools, workflows, and framework lifecycle hooks. The AgenticDome central governance plane provides policy decisions, API-key authentication, tenant isolation, incident tracking, delegation-token validation, and threat analytics. The SDK is the bridge: it intercepts framework boundaries locally and enforces the central plane's verdicts.
243
+ AgenticDome uses a **hybrid split-plane architecture**. Your application executes agents, tools and workflows. The SDK protects the application-controlled boundaries and sends live policy checks to the tenant's assigned runtime sidecar. The management console distributes configuration to that runtime out of band; it is not the per-action SDK endpoint.
242
244
 
243
245
  ```text
244
- [ LOCAL ENTERPRISE RUNTIME PERIMETER ] [ AGENTICDOME CENTRAL PLANE ]
245
-
246
- +--------------------------------------------+ +--------------------------------+
247
- | Python Agent Runtime | | https://demo-sidecar |
248
- | CrewAI / PydanticAI / LangGraph / | | .agenticdome.io |
249
- | Microsoft AF / AI Foundry / Agno / | | Centralized Policy Engine |
250
- | OpenAI Agents / MCP / Bedrock / | +--------------------------------+
251
- | Google ADK / LlamaIndex | ^ ^
252
- +--------------------------------------------+ | |
253
- | | |
254
- | 1. Prompt ingress | |
255
- v | |
256
- +--------------------------+ | |
257
- | Ingress Guardrail Scan |------------------------------ + |
258
- +--------------------------+ verdict |
259
- | |
260
- | 2. Tool call |
261
- v |
262
- +-----------------------------------+ 4. verdict / token enforcement |
263
- | AgenticDome Python Shield |-------------------------------------- -+
264
- +-----------------------------------+ |
265
- | if delegation detected |
266
- v |
267
- +---------------------------------------------+ validate token |
268
- | Distributed Shared Token Store |--------------------------- --+
269
- | InMemory lock / Redis multi-worker cache |
270
- +---------------------------------------------+
271
- |
272
- | 3. Execute tool / skill
273
- v
274
- +------------------------+
275
- | Specialized Workforce |
276
- +------------------------+
277
- |
278
- | 5. Output review
279
- v
280
- +---------------------------+
281
- | Egress DLP Firewall |
282
- | PII / secrets filtering |
283
- +---------------------------+
284
- ```
246
+ Management console / control plane
247
+ |
248
+ | policy and tenant configuration (out of band)
249
+ v
250
+ Tenant-assigned runtime sidecar <------ live policy checks ------+
251
+ | |
252
+ +---------------- verdict / authorization -------------->|
253
+ |
254
+ Customer application |
255
+ user input -> agent -> tool / MCP -> agent -> output |
256
+ ^ ^ ^ |
257
+ +---------+--------------------+------------------+
258
+ AgenticDome SDK protection boundaries
259
+ ```
260
+
261
+ The SDK must be attached in application code; setting environment variables alone does not intercept a framework. The assigned sidecar authenticates the tenant and evaluates live requests. Tools still execute in the customer's environment or selected provider unless a separate execution service has been deliberately configured.
285
262
 
286
263
  ### Who does what
287
264
 
@@ -289,8 +266,9 @@ AgenticDome uses a **hybrid split-plane architecture**. Your local Python runtim
289
266
  | :--- | :--- | :--- |
290
267
  | **Enterprise / organization** | Hosts the local agent runtime. Uses the AgenticDome console to create policies, obtain a Tenant ID, generate API keys, and monitor security events. | Paid subscriber (SaaS license or API volume) |
291
268
  | **Agent / tool developer** | Builds tools, skills, agents, and workflow components. Uses the SDK to support secure tool calls, delegation metadata, and DLP-aware outputs. | Free ecosystem partner — no subscription required |
292
- | **This Python SDK** | Runs inside the local Python process. Intercepts framework lifecycle hooks, calls the central plane, manages tokens, and enforces policy results. | Runtime security utility |
293
- | **AgenticDome cloud plane** | Centralized policy evaluation, threat analytics, incident tracking, tenant isolation, governance workflows, delegation verification. | Cloud governance plane |
269
+ | **This Python SDK** | Runs inside the application process. Protects supported framework boundaries, calls the assigned runtime sidecar, and enforces returned policy results. | Runtime security utility |
270
+ | **Assigned runtime sidecar** | Authenticates the tenant and evaluates live guardrail, tool, delegation and output requests using distributed policy. | Runtime enforcement service |
271
+ | **Management console / control plane** | Manages tenant configuration, policy distribution, governance workflows and evidence. It is not the SDK's per-action API URL. | Management plane |
294
272
 
295
273
  ---
296
274
 
@@ -396,7 +374,7 @@ Some adapters are dependency-light at import time: Google ADK, LlamaIndex, Bedro
396
374
 
397
375
  ### Framework-version compatibility
398
376
 
399
- AgenticDome supports framework versions only inside the range certified by the SDK Harness. When an upstream framework release appears, **Upgrade & Certify** keeps the existing certified version as the compatibility floor, tests the new release as the ceiling, and publishes an inclusive dependency range such as `framework>=floor,<=ceiling` only when both endpoints pass the adapter and firewall release gates. Multi-package integrations such as LangGraph/LangChain are also retested at their complete certified floor set.
377
+ AgenticDome supports framework versions inside the dependency ranges declared by the published package. Check the package metadata and compatibility table before upgrading an integration, especially for multi-package stacks such as LangGraph/LangChain.
400
378
 
401
379
  This means upgrading support for the latest framework does not silently drop customers on the previously certified version. Versions below the displayed certified floor are not claimed as supported until they are tested. Customers managing framework dependencies themselves may install the core SDK without an extra, but their framework version must still be inside the certified range for a production support claim.
402
380
 
@@ -492,7 +470,7 @@ export AGENTICDOME_PRODUCTION_MODE="false" # production hardening (st
492
470
  | `AGENTICDOME_HANDOFF_TOKEN_TTL_S` | integer | `900` | Delegation token TTL in seconds. |
493
471
  | `AGENTICDOME_REDIS_URL` | string | empty | Optional Redis connection URL for distributed token storage. |
494
472
  | `AGENTICDOME_REDIS_KEY_PREFIX` | string | framework-specific | Redis key prefix. |
495
- | `AGENTICDOME_TOKEN_HMAC_SECRET` | string | empty | Optional HMAC secret for tagging stored decision-token records. |
473
+ | `AGENTICDOME_TOKEN_HMAC_SECRET` | string | empty | Optional secret-manager value used by the SDK to protect shared delegation state. Applications should not inspect or construct that state. |
496
474
  | `AGENTICDOME_PRODUCTION_MODE` | boolean | `false` | Enables production hardening such as stable session ID enforcement. |
497
475
  | `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD` | boolean | `true` | Requires a stable session/run/trace ID when production mode is enabled. |
498
476
  | `AGENTICDOME_CLOUD_PROVIDER` | string | empty | Optional cloud/provider label added to policy context. |
@@ -599,7 +577,7 @@ For a shorter operator/developer handoff, use the [production integration playbo
599
577
  | [Google ADK](#google-adk) | `agenticdome_sdk.google_adk` | Module where `LlmAgent(...)` or ADK plugins are declared | `build_callback_kwargs()`, `create_plugin()`, or `install_on_agent(...)` | `wrap_tool_handler()` or `@firewall.secure_tool(...)` |
600
578
  | [LlamaIndex](#llamaindex) | `agenticdome_sdk.llamaindex` | Module where tools, query engines, retrievers, callbacks, or agents are assembled | `run_query_securely()`, `wrap_query_engine()`, `wrap_retriever()`, `create_node_postprocessor()`, `create_callback_handler()` | `wrap_tool_function()`, `to_function_tool()`, `@firewall.secure_tool(...)`, handoff verifiers |
601
579
  | [AWS Bedrock](#aws-bedrock) | `agenticdome_sdk.aws_bedrock` | Module calling `converse(...)`, `invoke_model(...)`, `invoke_agent(...)`, action-group Lambdas, or retrieval | `converse_securely()`, `converse_stream_securely()`, `invoke_model_securely()`, `invoke_model_with_response_stream_securely()`, `invoke_agent_securely()` | `wrap_tool_handler()`, `@firewall.secure_tool(...)`, `wrap_action_group_lambda()`, delegation verifiers |
602
- | [MCP host / gateway](#mcp-host--gateway) | `agenticdome_sdk.mcp_host` | The JSON-RPC gateway/proxy function that forwards MCP requests | `preflight_request()` or `forward_with_firewall()` around the forwarder | `authorize_manager_handoff()`, `verify_decision_token_if_present()`; private `_AgenticDome_*` metadata stripped before forwarding |
580
+ | [MCP host / gateway](#mcp-host--gateway) | `agenticdome_sdk.mcp_host` | The JSON-RPC gateway/proxy function that forwards MCP requests | `preflight_request()` or `forward_with_firewall()` around the forwarder | `authorize_manager_handoff()` and `verify_decision_token_if_present()`; SDK-managed security metadata never reaches the upstream server |
603
581
  | [Custom Python](#core-sdk-client-custom-runtimes) | `agenticdome_sdk.client` | Your API handler, gateway, router, or tool executor | `guardrail_validate()` before prompts/tools; `mesh_validate()` before returning output | `a2a_authorize_tool()` and `a2a_verify_decision_token_rpc()` for delegation |
604
582
 
605
583
  In production, wire AgenticDome at **every** local boundary your process controls: prompt ingress, tool execution, delegation handoff, specialist execution, and output egress.
@@ -670,12 +648,12 @@ def lookup_customer(agent, customer_id: str):
670
648
  return crm.get_customer(customer_id)
671
649
  ```
672
650
 
673
- **Security flow:** (1) prompts are screened before the LLM is called; (2) tool name, clean arguments, session context, agent identity, and policy metadata are validated before execution; (3) manager→specialist delegation is authorized and can return a decision token; (4) the specialist's token is verified against the central plane and consumed once from local/Redis storage; (5) output is reviewed and can be redacted, blocked, or preserved as structured output before leaving the runtime.
651
+ **Security flow:** (1) prompts are screened before the LLM is called; (2) tool name, clean arguments, session context, agent identity, and policy metadata are validated before execution; (3) manager→specialist delegation is authorized and can return a decision token; (4) the specialist's token is verified through the assigned runtime and consumed once using the configured SDK state store; (5) output is reviewed and can be redacted, blocked, or preserved as structured output before leaving the runtime.
674
652
 
675
653
  <details>
676
654
  <summary>CrewAI capabilities, configuration, and imports</summary>
677
655
 
678
- Supports: prompt screening before LLM calls · direct tool authorization · manager-to-specialist handoff authorization with explicit target metadata · specialist-side delegated execution verification via direct token metadata or one-time token-store recovery · Redis-backed token storage with `GETDEL` consume fallback and optional HMAC validation · private `_AgenticDome_*` argument stripping, sanitized tool arguments, optional schema validation · output DLP with structured-output preservation and sanitized JSON parsing · streaming sanitization via `sanitize_streaming_response()` · production mode with stable session ID requirements · local size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, and emergency deny lists.
656
+ Supports: prompt screening before LLM calls · direct tool authorization · manager-to-specialist handoff authorization with explicit target metadata · specialist-side delegated execution verification using SDK-managed, one-time shared state · sanitized tool arguments and optional schema validation · output DLP with structured-output preservation and sanitized JSON parsing · streaming sanitization via `sanitize_streaming_response()` · production mode with stable session ID requirements · local size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, and emergency deny lists.
679
657
 
680
658
  ```bash
681
659
  export AGENTICDOME_PLATFORM="crewai"
@@ -793,7 +771,7 @@ async for safe_chunk in firewall.sanitize_streaming_response(
793
771
  <details>
794
772
  <summary>PydanticAI capabilities, version notes, and imports</summary>
795
773
 
796
- Supports: prompt ingress checks via legacy lifecycle hooks where available · native `Hooks` capability creation through `create_hooks()` for current PydanticAI versions · tool perimeter authorization via `@firewall.secure_tool(...)` · Pydantic/JSON-schema argument validation and sanitized-argument execution · delegation-token generation for handoff tools using clean target args before token injection · specialist decision-token verification from explicit args or one-time token-store fallback · in-memory and Redis-backed handoff-token storage with optional HMAC-tagged records · egress output DLP with correct `block_on_sensitive_output` semantics · structured-output preservation (sanitized JSON parsed back to dicts/lists) · stable session ID enforcement in production mode · local rate limits, size limits, retries, circuit breaker, audit logging, OpenTelemetry span events · streaming sanitization · identity-rich policy context from `ctx`, `deps`, or nested identity/principal objects · emergency deny lists.
774
+ Supports: prompt ingress checks via legacy lifecycle hooks where available · native `Hooks` capability creation through `create_hooks()` for current PydanticAI versions · tool perimeter authorization via `@firewall.secure_tool(...)` · Pydantic/JSON-schema argument validation and sanitized-argument execution · manager/specialist delegation with SDK-managed, integrity-protected shared state · egress output DLP with correct `block_on_sensitive_output` semantics · structured-output preservation (sanitized JSON parsed back to dicts/lists) · stable session ID enforcement in production mode · local rate limits, size limits, retries, circuit breaker, audit logging, OpenTelemetry span events · streaming sanitization · identity-rich policy context from `ctx`, `deps`, or nested identity/principal objects · emergency deny lists.
797
775
 
798
776
  Version notes: PydanticAI lifecycle hook APIs have evolved. Current PydanticAI documents `pydantic_ai.capabilities.Hooks` for lifecycle interception across runs, model requests, tool validation/execution, output processing, and event streams. Prefer `create_hooks()` / `install_native_hooks()` on current runtimes; keep `@firewall.secure_tool(...)` on sensitive tools as a hard enforcement boundary. If legacy lifecycle decorators are available, `attach_to_agent()` attaches prompt ingress and egress DLP hooks; if not, `@firewall.secure_tool(...)` still protects tool execution. `AGENTICDOME_BLOCK_ON_SENSITIVE_OUTPUT=true` means AgenticDome may ask Mesh to block sensitive output; the SDK only blocks when the policy response verdict is `BLOCKED`.
799
777
 
@@ -922,7 +900,7 @@ state["AgenticDome"] = {
922
900
  }
923
901
  ```
924
902
 
925
- Specialist execution is verified when the delegated tool call reaches `authorize_transition()` or a wrapped tool node. Tokens can be carried in state, passed as `_AgenticDome_decision_token`, or recovered from Redis/in-memory storage; stored records are consumed once (Redis uses atomic `GETDEL` when available, with a pipeline fallback). Set `AGENTICDOME_TOKEN_HMAC_SECRET` to bind stored tokens to source agent, target agent, tool name, and sanitized argument hash.
903
+ Specialist execution is verified when the delegated tool call reaches `authorize_transition()` or a wrapped tool node. The SDK carries or recovers integrity-protected delegation state and consumes it once. Applications should use the public handoff/wrapper APIs rather than create, inspect or forward the SDK's internal metadata.
926
904
 
927
905
  **Hardening helpers** — policy-control sensitive graph edges; blocked states set `AgenticDome.route` and `next_agent_id` to `security_block`:
928
906
 
@@ -948,7 +926,7 @@ Use `sanitize_retrieval_documents()` before adding retrieved chunks to model con
948
926
  <details>
949
927
  <summary>LangGraph capabilities, interception notes, and imports</summary>
950
928
 
951
- Supports: prompt ingress via `screen_input()` / `input_node()` · tool-call authorization via `authorize_transition()` / `transition_node()` · delegation authorization when state or tool arguments identify `target_agent_id`, `delegate_to`, `coworker`, `specialist_agent_id`, or equivalent handoff fields · specialist-side token verification from graph state, tool arguments, or token storage · one-time token consumption with optional HMAC binding · sanitized tool-argument mutation before local execution · final message and tool-output DLP via `sanitize_output()` / `output_node()` · retrieval and streaming sanitization · graph transition authorization · `security_block` routing · wrappers for existing agent and tool nodes.
929
+ Supports: prompt ingress via `screen_input()` / `input_node()` · tool-call authorization via `authorize_transition()` / `transition_node()` · delegation authorization from documented handoff fields · specialist-side verification using SDK-managed one-time state · sanitized tool-argument mutation before local execution · final message and tool-output DLP via `sanitize_output()` / `output_node()` · retrieval and streaming sanitization · graph transition authorization · `security_block` routing · wrappers for existing agent and tool nodes.
952
930
 
953
931
  Interception notes: LangGraph is graph-native — reliable interception means inserting security nodes or wrapping nodes/tool nodes. LangChain's modern `create_agent()` supports a `middleware` parameter documented as the way to intercept model, tool, and agent-loop behavior; `as_langchain_middleware()` targets that style, and the adapter mutates sanitized tool arguments back into the tool request for local execution. For custom `StateGraph` workflows, implement middleware as graph nodes or wrappers at the boundaries you must enforce: before model input, before tool execution, before handoff execution, and before final output. Remote or provider-hosted tools that execute outside your Python process can only be guarded at the local request/response boundary.
954
932
 
@@ -1074,7 +1052,7 @@ secure_refund_handler = firewall.wrap_delegated_tool_handler(
1074
1052
  <details>
1075
1053
  <summary>Microsoft Agent Framework capabilities, configuration, notes, and imports</summary>
1076
1054
 
1077
- Supports: prompt ingress via `screen_input()`, middleware hooks, or `run_agent_securely()` · function-tool authorization with internal argument stripping and sanitized-argument enforcement · manager-to-specialist delegation with HMAC-tagged token records and atomic Redis consumption where available · specialist-side verification via `verify_specialist_execution()` or `wrap_delegated_tool_handler()` · stable session ID enforcement for production · Entra/principal identity context propagation · output DLP with structured JSON preservation and optional response-object mutation · streaming sanitization · OpenTelemetry events and structured audit logging · local rate limits, size limits, retries, circuit breaker · optional Copilot / AI Foundry threat helper enforcement · Redis-backed multi-worker token storage · emergency deny lists.
1055
+ Supports: prompt ingress via `screen_input()`, middleware hooks, or `run_agent_securely()` · function-tool authorization with sanitized-argument enforcement · manager-to-specialist delegation and specialist verification through public wrapper APIs · stable session ID enforcement for production · Entra/principal identity context propagation · output DLP with structured JSON preservation and optional response-object mutation · streaming sanitization · OpenTelemetry events and structured audit logging · local rate limits, size limits, retries, circuit breaker · optional Copilot / AI Foundry threat helper enforcement · shared multi-worker delegation state · emergency deny lists.
1078
1056
 
1079
1057
  ```bash
1080
1058
  export AGENTICDOME_PLATFORM="microsoft_agent_framework_v1"
@@ -1092,7 +1070,7 @@ export AGENTICDOME_MSAF_OTEL_ENABLED="true"
1092
1070
  # Optional local emergency controls:
1093
1071
  # export AGENTICDOME_MSAF_EMERGENCY_BLOCK_TOOLS="payments.refund.create"
1094
1072
  # export AGENTICDOME_MSAF_EMERGENCY_BLOCK_AGENTS="legacy_agent"
1095
- # Optional HMAC tag for stored decision-token records:
1073
+ # Optional integrity secret for SDK-managed shared delegation state:
1096
1074
  # export AGENTICDOME_TOKEN_HMAC_SECRET="change-me"
1097
1075
  # Optional Copilot / AI Foundry helper enforcement:
1098
1076
  # export AGENTICDOME_ENABLE_COPILOT_THREAT_API="true"
@@ -1353,7 +1331,7 @@ async for safe_chunk in firewall.sanitize_streaming_response(
1353
1331
  <details>
1354
1332
  <summary>Microsoft AI Foundry capabilities, notes, and imports</summary>
1355
1333
 
1356
- Supports: prompt/run validation via `validate_prompt_contract()`, `before_run()`, or `run_secure()` · middleware hooks via `create_middleware()` / `install_on_client()` · local function-tool analysis via `analyze_tool_execution()`, `before_tool_call()`, or `wrap_tool_executor()` · `@firewall.secure_tool(...)` for high-risk callables · argument stripping, lightweight JSON-schema validation, sanitized-argument execution · enterprise identity context propagation for Entra IDs, roles/scopes, Foundry project IDs, and Purview/sensitivity labels · production-mode stable session ID and output-sanitization requirements · output DLP through Mesh · structured-output preservation · local rate limits, size limits, retries, circuit breaker, audit logging, OpenTelemetry span events · streaming sanitization · optional handoff authorization, token verification, in-memory/Redis token storage, HMAC-tagged records · emergency deny lists.
1334
+ Supports: prompt/run validation via `validate_prompt_contract()`, `before_run()`, or `run_secure()` · middleware hooks via `create_middleware()` / `install_on_client()` · local function-tool analysis via `analyze_tool_execution()`, `before_tool_call()`, or `wrap_tool_executor()` · `@firewall.secure_tool(...)` for high-risk callables · lightweight JSON-schema validation and sanitized-argument execution · enterprise identity context propagation for Entra IDs, roles/scopes, Foundry project IDs, and Purview/sensitivity labels · production-mode stable session ID and output-sanitization requirements · output DLP through Mesh · structured-output preservation · local rate limits, size limits, retries, circuit breaker, audit logging, OpenTelemetry span events · streaming sanitization · optional handoff authorization and SDK-managed multi-worker verification · emergency deny lists.
1357
1335
 
1358
1336
  Notes: Foundry function calling asks your application to execute local functions and return tool output — wrap that local execution before output is submitted back to Foundry. Production deployments should pass a stable `session_id`, `run_id`, `trace_id`, `conversation_id`, or `thread_id`; generated fallback IDs are for local development only. Pass Entra identity, roles/scopes, Foundry project IDs, and Purview/sensitivity labels on `ctx` or `policy_context` for identity-aware server-side policy. Hosted tools executing entirely inside a remote provider runtime can only be protected at the local request/response boundary. Threat-contract prompt and tool analysis additionally require `AGENTICDOME_BEARER_TOKEN`.
1359
1337
 
@@ -1411,7 +1389,7 @@ input_guardrail = firewall.create_input_guardrail()
1411
1389
  output_guardrail = firewall.create_output_guardrail()
1412
1390
  ```
1413
1391
 
1414
- **Secure a function tool** — wrap the local implementation before exposing it with `@function_tool`; sanitized arguments replace originals and private metadata is stripped before the handler runs:
1392
+ **Secure a function tool** — wrap the local implementation before exposing it with `@function_tool`; sanitized arguments replace originals and SDK-managed security metadata is never passed to the business handler:
1415
1393
 
1416
1394
  ```python
1417
1395
  from agents import function_tool
@@ -1456,7 +1434,7 @@ secure_refund_tool = firewall.wrap_delegated_tool_handler(
1456
1434
  <details>
1457
1435
  <summary>OpenAI Agents SDK capabilities, configuration, notes, and imports</summary>
1458
1436
 
1459
- Supports: prompt ingress via `screen_input()`, `run_agent_securely()`, `run_agent_stream_securely()`, or `create_input_guardrail()` · function-tool authorization via `wrap_tool_handler()` / `@firewall.secure_tool(...)` · private `_AgenticDome_*` argument stripping, sanitized arguments, optional schema validation · handoff authorization via `authorize_manager_handoff()` · specialist-side verification via `verify_specialist_execution()` and `wrap_delegated_tool_handler()` · in-memory or Redis token storage with one-time consume and optional HMAC validation · output DLP via `sanitize_output()` and `create_output_guardrail()` · streaming sanitization · structured-output preservation and sanitized JSON parsing · production mode with stable session IDs · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, identity-rich policy context, emergency deny lists.
1437
+ Supports: prompt ingress via `screen_input()`, `run_agent_securely()`, `run_agent_stream_securely()`, or `create_input_guardrail()` · function-tool authorization via `wrap_tool_handler()` / `@firewall.secure_tool(...)` · sanitized arguments and optional schema validation · handoff authorization via `authorize_manager_handoff()` · specialist-side verification via `verify_specialist_execution()` and `wrap_delegated_tool_handler()` · SDK-managed one-time multi-worker delegation state · output DLP via `sanitize_output()` and `create_output_guardrail()` · streaming sanitization · structured-output preservation and sanitized JSON parsing · production mode with stable session IDs · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, identity-rich policy context, emergency deny lists.
1460
1438
 
1461
1439
  ```bash
1462
1440
  export AGENTICDOME_PLATFORM="openai_agents_sdk"
@@ -1567,7 +1545,7 @@ export AGENTICDOME_CLAUDE_EMERGENCY_BLOCK_TOOLS=""
1567
1545
  export AGENTICDOME_CLAUDE_EMERGENCY_BLOCK_AGENTS=""
1568
1546
  ```
1569
1547
 
1570
- Use `authorize_manager_handoff()` and `verify_specialist_execution()` when a manager delegates sensitive work. Configure Redis and `AGENTICDOME_TOKEN_HMAC_SECRET` when authorization and specialist execution can land on different workers. Claude hooks protect operations visible to the local SDK process; externally hosted services still require enforcement at their local gateway or MCP host.
1548
+ Use `authorize_manager_handoff()` and `verify_specialist_execution()` when a manager delegates sensitive work. Configure the documented shared store and integrity secret when authorization and specialist execution can land on different workers. Claude hooks protect operations visible to the local SDK process; externally hosted services still require enforcement at their local gateway or MCP host.
1571
1549
 
1572
1550
  Official references: [Claude Agent SDK Python](https://github.com/anthropics/claude-agent-sdk-python) · [Claude Agent SDK overview](https://platform.claude.com/docs/en/agent-sdk/overview)
1573
1551
 
@@ -1729,7 +1707,7 @@ async for safe_chunk in firewall.sanitize_streaming_response(
1729
1707
  <details>
1730
1708
  <summary>Agno capabilities, configuration, notes, and imports</summary>
1731
1709
 
1732
- Supports: prompt ingress via `pre_hook` / `cybersec_pre_hook` · tool-call authorization via `pre_hook`, `tool_hook`, and `@firewall.secure_tool` · argument stripping, sanitized arguments, optional schema validation · delegation authorization when handoff metadata is present · specialist-side one-time token verification from hook kwargs, tool args, or token storage · optional token HMAC validation · output DLP via `post_hook` / `cybersec_post_hook` with structured-output preservation · retrieved-context sanitization for Agno knowledge/RAG pipelines · streaming sanitization · production mode with stable session IDs · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, identity-rich policy context, emergency deny lists.
1710
+ Supports: prompt ingress via `pre_hook` / `cybersec_pre_hook` · tool-call authorization via `pre_hook`, `tool_hook`, and `@firewall.secure_tool` · sanitized arguments and optional schema validation · delegation authorization and specialist-side one-time verification through SDK-managed state · output DLP via `post_hook` / `cybersec_post_hook` with structured-output preservation · retrieved-context sanitization for Agno knowledge/RAG pipelines · streaming sanitization · production mode with stable session IDs · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, identity-rich policy context, emergency deny lists.
1733
1711
 
1734
1712
  ```bash
1735
1713
  export AGENTICDOME_PLATFORM="agno"
@@ -1803,7 +1781,7 @@ firewall.install_on_agent(agent) # attach to an existing agent
1803
1781
  plugin = firewall.create_plugin() # plugin-style registration
1804
1782
  ```
1805
1783
 
1806
- **Tool protection** — sanitized arguments replace originals and private `_AgenticDome_*` metadata is stripped before the handler runs; pass a Pydantic model, Pydantic v1 model, or JSON-schema-like dict to validate arguments:
1784
+ **Tool protection** — sanitized arguments replace originals and SDK-managed security metadata is never passed to the business handler; pass a Pydantic model, Pydantic v1 model, or JSON-schema-like dict to validate arguments:
1807
1785
 
1808
1786
  ```python
1809
1787
  @firewall.secure_tool(tool_name="crm.customer.read", tool_platform="crm")
@@ -1818,7 +1796,7 @@ secured_lookup = firewall.wrap_tool_handler(
1818
1796
  )
1819
1797
  ```
1820
1798
 
1821
- **Multi-agent delegation** — the adapter stores a decision token against the clean target tool arguments, injects private handoff metadata into the payload, and verifies delegated execution before the specialist runs the tool:
1799
+ **Multi-agent delegation** — use the public handoff methods so the adapter manages authorization state and verifies delegated execution before the specialist runs the tool:
1822
1800
 
1823
1801
  ```python
1824
1802
  record = await firewall.authorize_manager_handoff(
@@ -1841,7 +1819,7 @@ await firewall.verify_delegated_execution(
1841
1819
  <details>
1842
1820
  <summary>Google ADK capabilities, configuration, notes, and imports</summary>
1843
1821
 
1844
- Supports: prompt screening via `before_model` · model output sanitization via `after_model` · tool argument authorization, metadata stripping, schema validation, and sanitized-argument enforcement via `before_tool` · tool result sanitization with structured JSON preservation via `after_tool` · lifecycle audit visibility via `before_agent` / `after_agent` · explicit wrappers via `wrap_tool_handler()` / `@firewall.secure_tool(...)` · handoff authorization with `DecisionTokenStore`, `InMemoryDecisionTokenStore`, optional `RedisDecisionTokenStore` · delegated execution verification with one-time token consumption and optional HMAC validation · streaming sanitization with a sliding review buffer · rate limits, size limits, retries/backoff, circuit breaker, structured audit logs, OpenTelemetry span events, identity-rich policy context, emergency deny lists.
1822
+ Supports: prompt screening via `before_model` · model output sanitization via `after_model` · tool argument authorization, schema validation, and sanitized-argument enforcement via `before_tool` · tool result sanitization with structured JSON preservation via `after_tool` · lifecycle audit visibility via `before_agent` / `after_agent` · explicit wrappers via `wrap_tool_handler()` / `@firewall.secure_tool(...)` · manager/specialist handoff authorization with SDK-managed one-time state · streaming sanitization with a sliding review buffer · rate limits, size limits, retries/backoff, circuit breaker, structured audit logs, OpenTelemetry span events, identity-rich policy context, emergency deny lists.
1845
1823
 
1846
1824
  ```bash
1847
1825
  export AGENTICDOME_PLATFORM="google_adk"
@@ -1865,7 +1843,7 @@ export AGENTICDOME_GOOGLE_ADK_OTEL_ENABLED="true"
1865
1843
  # export AGENTICDOME_TOKEN_HMAC_SECRET="replace-with-secret-from-your-secret-manager"
1866
1844
  ```
1867
1845
 
1868
- Notes: register callbacks, the plugin object, or tool wrappers — env config alone does not intercept ADK execution. Use async callback methods (`before_model`, `after_model`, `before_tool`, `after_tool`) when your ADK runner supports them; the `*_callback` sync methods are for synchronous configurations only. In production, provide stable ADK context values (`session_id`, `run_id`, `trace_id`, `conversation_id`, `request_id`) — otherwise the adapter fails closed when `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD=true`. The SDK protects the local ADK callback boundary and returned content, not execution inside remote tools/services. Include Google Cloud identity and project context in ADK state when available (`project_id`, `service_account_email`, `principal_id`, `roles`, `scopes`, `region`, `sensitivity_label`). Use Redis and `AGENTICDOME_TOKEN_HMAC_SECRET` for multi-worker or Kubernetes deployments.
1846
+ Notes: register callbacks, the plugin object, or tool wrappers — env config alone does not intercept ADK execution. Use async callback methods (`before_model`, `after_model`, `before_tool`, `after_tool`) when your ADK runner supports them; the `*_callback` sync methods are for synchronous configurations only. In production, provide stable ADK context values (`session_id`, `run_id`, `trace_id`, `conversation_id`, `request_id`) — otherwise the adapter fails closed when `AGENTICDOME_REQUIRE_STABLE_SESSION_ID_IN_PROD=true`. The SDK protects the local ADK callback boundary and returned content, not execution inside remote tools/services. Include Google Cloud identity and project context when available. Use the documented shared store and integrity secret for multi-worker or Kubernetes deployments.
1869
1847
 
1870
1848
  ```python
1871
1849
  from agenticdome_sdk.google_adk import (
@@ -2170,7 +2148,7 @@ safe_retrieval = await firewall.sanitize_retrieval_result(
2170
2148
  <details>
2171
2149
  <summary>AWS Bedrock capabilities, configuration, notes, and imports</summary>
2172
2150
 
2173
- Supports: prompt screening before `converse(...)`, `converse_stream(...)`, `invoke_model(...)`, `invoke_model_with_response_stream(...)`, and `invoke_agent(...)` · model output DLP before responses leave your application · streaming sanitization for ConverseStream and InvokeModelWithResponseStream events · provider-specific prompt/response parsing (Claude, Titan, Llama, Mistral, Converse) · local tool-use and action-group authorization · sanitized arguments, `_AgenticDome_*` stripping, optional schema validation · tool/action output review · knowledge-base retrieval sanitization at the node level · production mode with stable session IDs · AWS account, region, role, principal, agent, and knowledge-base context in policy decisions · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, emergency deny lists · optional handoff authorization with in-memory/Redis token storage and HMAC validation.
2151
+ Supports: prompt screening before `converse(...)`, `converse_stream(...)`, `invoke_model(...)`, `invoke_model_with_response_stream(...)`, and `invoke_agent(...)` · model output DLP before responses leave your application · streaming sanitization for ConverseStream and InvokeModelWithResponseStream events · provider-specific prompt/response parsing · local tool-use and action-group authorization · sanitized arguments and optional schema validation · tool/action output review · knowledge-base retrieval sanitization at the node level · production mode with stable session IDs · AWS identity/resource context in policy decisions · size limits, rate limits, retries/backoff, circuit breaker, audit logs, OpenTelemetry events, emergency deny lists · optional manager/specialist handoff through SDK-managed shared state.
2174
2152
 
2175
2153
  ```bash
2176
2154
  export AGENTICDOME_PLATFORM="aws_bedrock"
@@ -2265,30 +2243,7 @@ response["result"] = await firewall.sanitize_mcp_result(
2265
2243
  return response
2266
2244
  ```
2267
2245
 
2268
- **Delegated execution** — if another orchestrator already issued a decision token, pass it as private MCP arguments; the adapter verifies the token and strips private metadata before forwarding (partial handoff metadata is blocked include both token and source agent ID):
2269
-
2270
- ```python
2271
- request = {
2272
- "jsonrpc": "2.0",
2273
- "id": "req-42",
2274
- "method": "tools/call",
2275
- "params": {
2276
- "name": "payments.refund.create",
2277
- "arguments": {
2278
- "customer_id": "cust_123",
2279
- "amount": 250,
2280
- "_AgenticDome_decision_token": decision_token,
2281
- "_AgenticDome_source_agent_id": "support_manager",
2282
- },
2283
- },
2284
- }
2285
- ```
2286
-
2287
- The third-party MCP server receives only the business arguments after preflight succeeds:
2288
-
2289
- ```python
2290
- {"customer_id": "cust_123", "amount": 250}
2291
- ```
2246
+ **Delegated execution** — use the adapter's public handoff and verification methods. The SDK manages the authorization context and ensures that only approved business arguments are forwarded to the third-party MCP server. Applications should not construct or depend on the adapter's internal transport metadata.
2292
2247
 
2293
2248
  If the gateway itself owns manager-to-specialist delegation, authorize the handoff first; the issued token is stored and consumed when specialist execution reaches the gateway:
2294
2249
 
@@ -2306,7 +2261,7 @@ await firewall.authorize_manager_handoff(
2306
2261
  <details>
2307
2262
  <summary>MCP capabilities, configuration, notes, and imports</summary>
2308
2263
 
2309
- Supports: optional upstream prompt screening from host context · `tools/call` authorization via `mcp_guardrail_validate()` · authorization for `tools/list`, `resources/list`, `resources/read`, `prompts/list`, `prompts/get`, and `sampling/createMessage` · `tools/list` response filtering so low-privilege agents do not see tools they cannot use · resource, prompt, sampling, tool, and streaming-output sanitization · delegated decision-token verification when handoff metadata is present · manager-to-MCP handoff authorization with in-memory or Redis token storage · per-server policy context (server ID, URL, vendor, trust level) · sanitized tool argument forwarding · size limits, rate limiting, audit logging · `_AgenticDome_*` metadata stripping before forwarding · Mesh output sanitization for common MCP result shapes (`content[].text`, prompt messages, top-level `text`, lists, serialized structured results) · fail-closed/fail-open behavior via `AGENTICDOME_FAIL_CLOSED`.
2264
+ Supports: optional upstream prompt screening from host context · `tools/call` authorization via `mcp_guardrail_validate()` · authorization for tool, resource, prompt and sampling methods · tool-list filtering according to policy · resource, prompt, sampling, tool, and streaming-output sanitization · delegated verification through public handoff methods · per-server policy context · sanitized business-argument forwarding · size limits, rate limiting and audit logging · Mesh output sanitization for supported MCP result shapes · fail-closed/fail-open behavior via `AGENTICDOME_FAIL_CLOSED`.
2310
2265
 
2311
2266
  ```bash
2312
2267
  export AGENTICDOME_PLATFORM="mcp"
@@ -2550,7 +2505,7 @@ headers = client.enforcement_headers(
2550
2505
  )
2551
2506
  ```
2552
2507
 
2553
- The control-plane website, provenance registry, SBOM registry, and LLM are not called on this request path. Approved provenance and policy bundles are already cached in the assigned sidecar. If the gateway is in enforce mode, a missing, expired, replayed, destination-mismatched, method-mismatched, or workload-mismatched receipt fails closed.
2508
+ Receipt verification occurs on the assigned runtime and enforcement-gateway path. In enforce mode, an absent, invalid or action-mismatched receipt fails closed. Applications should use the public SDK response and header helpers rather than depend on internal receipt representation or service topology.
2554
2509
 
2555
2510
  Framework adapters share this core client, but the application still owns the final executor boundary: pass the real destination/method and attach the returned headers where the framework invokes the external tool. Customers using an AgenticDome-managed sidecar install only the SDK; the deployment administrator operates Envoy, Tetragon/eBPF, SPIFFE, and sandbox infrastructure.
2556
2511
 
@@ -2576,7 +2531,7 @@ export AGENTICDOME_REDIS_URL="redis://redis.example.internal:6379/0"
2576
2531
  export AGENTICDOME_REDIS_KEY_PREFIX="AgenticDome:runtime:handoff"
2577
2532
  ```
2578
2533
 
2579
- Redis deployments use atomic `GETDEL` for one-time token consumption where available, with a pipeline fallback. Set `AGENTICDOME_TOKEN_HMAC_SECRET` to bind stored token records to source agent, target agent, tool name, and sanitized argument hash.
2534
+ The SDK provides integrity-protected, one-time delegation state for supported shared-store deployments. Configure `AGENTICDOME_TOKEN_HMAC_SECRET` from a secret manager and let the SDK create and consume these records; applications should not construct or modify their internal representation.
2580
2535
 
2581
2536
  ### Production checklist
2582
2537
 
@@ -2603,9 +2558,9 @@ Plus, for every production deployment:
2603
2558
 
2604
2559
  ---
2605
2560
 
2606
- ## Package Build and Verification
2561
+ ## Source Installation and Verification
2607
2562
 
2608
- Run the Python SDK release gate from the SDK root:
2563
+ Most customers should install the published package from PyPI. Contributors evaluating the public source can perform a network-free verification from the SDK root:
2609
2564
 
2610
2565
  ```bash
2611
2566
  python3 -m venv .venv
@@ -2613,96 +2568,12 @@ source .venv/bin/activate
2613
2568
 
2614
2569
  python -m pip install --upgrade pip setuptools wheel
2615
2570
  python -m pip install -e ".[dev]"
2616
- python -m pip install -e ".[crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
2617
-
2618
- python -m pytest -q
2619
- rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
2620
- python -m build
2621
- python -m twine check dist/*
2622
- ```
2623
-
2624
- `python -m pytest -q` runs the core SDK tests and every dependency-light framework adapter test in one pass — the normal offline full-suite command. Adapter tests use fake framework/client boundaries where possible, so CI verifies authorization, delegation-token handling, sanitized tool arguments, output DLP, streaming sanitization, rate limits, and fail-open/fail-closed behavior without live third-party services. Private release automation separately validates package metadata and rejects internal-only files from both wheel and source-distribution artifacts.
2625
-
2626
- ### Framework Test Matrix
2627
-
2628
- Run one framework at a time with its matching test file. For a single-framework development loop:
2629
-
2630
- ```bash
2631
- python -m pip install -e ".[langgraph]"
2632
- python -m pytest -q tests/test_langgraph_integration.py
2633
- ```
2634
-
2635
- | Runtime / integration | Test command | Coverage focus |
2636
- | :--- | :--- | :--- |
2637
- | Core SDK client | `python -m pytest -q tests/test_client.py` | Request validation, headers, guardrail calls, A2A/MCP JSON-RPC calls, Mesh DLP, HTTP errors, JSON handling |
2638
- | Attack demos | `python -m pytest -q tests/test_attack_demo.py` | Offline vulnerable-vs-protected CLI coverage, including AutoGen, Claude Agent SDK, and Hugging Face smolagents |
2639
- | Local simulation parity | `python -m pytest -q tests/test_local_simulation.py` | No-credential/no-network mode, production refusal, broker fail-closed behavior, installed demo catalog and constructor coverage for every supported Python adapter |
2640
- | CrewAI | `python -m pytest -q tests/test_crewai_integration.py` | Prompt/tool hooks, handoff token injection, specialist verification, output redaction, schema checks, rate limits, retries, streaming DLP |
2641
- | PydanticAI | `python -m pytest -q tests/test_pydanticai_integration.py` | Agent hooks, secure tools, sanitized arguments, token-store fallback, production session enforcement, rate limits, retries, streaming output |
2642
- | LangGraph / LangChain | `python -m pytest -q tests/test_langgraph_integration.py` | Graph input, transition, tool, retrieval, middleware, security routing, token consumption, output DLP, streaming events |
2643
- | Microsoft Agent Framework | `python -m pytest -q tests/test_microsoft_agent_framework_integration.py` | Tool/run boundaries, delegated tool verification, middleware install helpers, identity context, Copilot enforcement hooks, streaming output |
2644
- | Microsoft AutoGen | `python -m pytest -q tests/test_autogen_integration.py` | Current AgentChat team/Core interception, legacy send/receive hooks, rolling Family 2 context, session freeze, trust incident and revocation escalation |
2645
- | Microsoft AI Foundry | `python -m pytest -q tests/test_microsoft_ai_foundry_integration.py` | Prompt threat contracts, local tool executors, run boundaries, bearer/API-key configuration, delegated execution, circuit breaker, stream DLP |
2646
- | OpenAI Agents SDK | `python -m pytest -q tests/test_openai_agents_integration.py` | Runner wrappers, guardrail helpers, function-tool wrappers, handoff/delegated tools, HMAC token storage, schema checks, retries, streaming output |
2647
- | Claude Agent SDK | `python -m pytest -q tests/test_claude_integration.py` | Native prompt/tool hooks, tool-output replacement, secure query responses, decision-token binding and one-time consumption |
2648
- | Hugging Face smolagents | `python -m pytest -q tests/test_smolagents_integration.py` | Native Tool wrapper, pre-execution CodeAgent scanning, idempotent attachment, managed-agent handoff verification, output DLP |
2649
- | Agno | `python -m pytest -q tests/test_agno_integration.py` | Agent/team hooks, tool hooks, middleware/plugin helpers, delegated specialist execution, retrieved text sanitization, schema checks, stream DLP |
2650
- | MCP host / gateway | `python -m pytest -q tests/test_mcp_host_integration.py` | JSON-RPC preflight, tool/resource/prompt authorization, private metadata stripping, delegated token verification, response filtering, forwarder DLP |
2651
- | AWS Bedrock | `python -m pytest -q tests/test_aws_bedrock_integration.py` | Converse/InvokeModel wrappers, Bedrock Agents streams, action-group Lambda wrappers, retrieval DLP, tool authorization, handoff tokens, retries |
2652
- | Google ADK | `python -m pytest -q tests/test_google_adk_integration.py` | Model/tool callbacks, plugin helpers, secure tools, delegated execution, sanitized args, production sessions, rate limits, retries, stream DLP |
2653
- | LlamaIndex | `python -m pytest -q tests/test_llamaindex_integration.py` | FunctionTool/query/retrieval wrappers, callback handlers, secure tools, delegated execution, fail-open behavior, output DLP |
2654
-
2655
- ### Release gates
2656
-
2657
- **Metadata and artifact validation:**
2658
-
2659
- ```bash
2660
- rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
2661
- python -m build
2662
- python -m twine check dist/*
2663
- ```
2664
-
2665
- The private release pipeline performs additional package-contract and forbidden-file checks before upload.
2666
-
2667
- **Full offline release gate** across all supported Python integrations:
2668
-
2669
- ```bash
2670
- python -m pip install -e ".[dev,crewai,pydanticai,langgraph,microsoft,autogen,foundry,agno,openai-agents,claude,smolagents,mcp,bedrock,google-adk,llamaindex,redis]"
2671
2571
  python -m pytest -q
2672
- rm -rf build dist *.egg-info agenticdome_sdk.egg-info agenticdome_python_sdk.egg-info
2673
2572
  python -m build
2674
2573
  python -m twine check dist/*
2675
2574
  ```
2676
2575
 
2677
- **Focused verification** optional live tenant smoke tests:
2678
-
2679
- ```bash
2680
- python -m pytest -q tests/test_live_tenant.py
2681
- ```
2682
-
2683
- | Part | Meaning |
2684
- | :--- | :--- |
2685
- | `python -m pytest` | Runs `pytest` using the current Python environment |
2686
- | `-q` | Quiet mode — compact results instead of verbose test names |
2687
- | `tests/test_live_tenant.py` | Live AgenticDome tenant smoke tests — skipped by default, only runs when explicitly enabled |
2688
-
2689
- **Live tenant release gate** — against a real AgenticDome tenant:
2690
-
2691
- ```bash
2692
- export AGENTICDOME_API_BASE="https://www.agenticdome.io"
2693
- export AGENTICDOME_TENANT_ID="<tenant_id>"
2694
- export AGENTICDOME_API_KEY="<tenant_api_key>"
2695
- export AGENTICDOME_LIVE_TENANT_TEST=1
2696
- python -m pytest -q tests/test_live_tenant.py
2697
- ```
2698
-
2699
- For strict security-policy validation, add:
2700
-
2701
- ```bash
2702
- export AGENTICDOME_LIVE_EXPECT_STRICT=1
2703
- ```
2704
-
2705
- The live tenant suite performs real `guardrail_validate()` and `mesh_validate()` calls, verifies that one request can carry an originating human subject and upstream agent actor together, and queries the tenant's active threat-signature bundle through the public SDK method. With `AGENTICDOME_LIVE_EXPECT_STRICT=1`, it additionally requires sensitive output enforcement plus a signed bundle whose provenance is `agenticdome_private_collection`. Framework-specific behavior remains covered by the offline adapter test matrix above.
2576
+ The public suite verifies the package contract and supported adapter behavior without tenant credentials or live third-party services. AgenticDome operates live certification and package publication separately from customer application environments.
2706
2577
 
2707
2578
  ---
2708
2579