Skip to main content
Attesta provides first-class integrations for the most popular AI agent frameworks. Every integration follows the same pattern: intercept tool/action calls, evaluate risk through the Attesta pipeline, and only allow approved actions to execute.

Choosing an Integration

FrameworkLanguageIntegration ClassHook PointInstall Extra
LangChain / LangGraphPythonAttestaToolWrapper, attesta_nodeTool func/coroutine replacement; LangGraph nodeattesta[langchain]
LangChain (TS)TypeScriptgatedTool, createGateNodeProxy on invoke; LangGraph node@kyberon/attesta
OpenAI Agents SDKPythonattesta_approval_handler, AttestaGuardrailRunner.run(approval_handler=...), Agent(tool_guardrails=[...])attesta[openai]
Anthropic ClaudePythonAttestaToolGatetool_use content block evaluationattesta[anthropic]
CrewAIPythonAttestaHumanInputTask(callback=...)attesta[crewai]
MCPPythonattesta_tool_handler, MCPProxycall_tool decorator; stdio proxyattesta (core)
Vercel AI SDKTypeScriptgatedVercelTool, createAttestaMiddlewareTool execute wrapper; experimental_onToolCall@kyberon/attesta
Not sure which integration to use? If you are building a Python agent, start with the framework-specific integration (LangChain, OpenAI, etc.). If you are building a TypeScript agent, use the Vercel AI or LangChain TS integration. If you want to gate any MCP server without code changes, use the MCPProxy.

How Integrations Work

Every integration follows the same 4-stage pipeline described in How It Works:
1

Intercept

The integration intercepts tool calls before they execute. Each framework has a different hook point (tool wrapper, approval handler, decorator, middleware, etc.), but the result is the same: the call is paused.
2

Build ActionContext

The integration extracts the tool name, arguments, and any available metadata (description, agent ID, session) and builds an ActionContext object for Attesta to evaluate.
3

Evaluate

The ActionContext is passed to attesta.evaluate(), which runs risk scoring, challenge selection, verification, and audit logging.
4

Dispatch

Based on the verdict:
  • Approved / Modified — the original tool call proceeds normally
  • Denied / Timed Out / Escalated — the call is blocked and a denial message is returned (or an exception is raised, depending on the integration)

Installation

Install Attesta with the extras for your framework:
# Pick one or more:
pip install attesta[langchain]
pip install attesta[openai]
pip install attesta[anthropic]
pip install attesta[crewai]

# MCP is included in the core package:
pip install attesta

Common Pattern

Regardless of framework, every integration starts with a configured Attesta instance:
from attesta import Attesta

# Minimal (all defaults)
attesta = Attesta()

# With config file
attesta = Attesta.from_config("attesta.yaml")
Then pass this instance to the framework-specific integration class. See the individual integration pages for complete examples.

No-Code Platforms

If you are using a visual workflow builder instead of writing code, see the No-Code Platforms section for drop-in nodes and components:

n8n

AttestaGate node for n8n workflows

Flowise

AttestaGate tool component for chatflows

Langflow

AttestaGate component for Langflow pipelines

Dify

Attesta plugin for the Dify platform