# KarmaDue framework guides

One check before an agent installs, runs or connects something: a call to KarmaDue's public preflight (`POST https://ogogoizwsfaduzehkshb.supabase.co/functions/v1/public-api/v1/preflight`, no account), and the action stops on `block`, and by default on `require_human_approval` / `unknown` / no answer.

Every guide below was run live on 2026-11-12 against the same four targets: postmark-mcp@1.0.18 (deny), rsquests (deny), requests==2.31.0 (warn), requests==2.33.0 (no known issues). Each page shows the real output and says how the framework was driven (no model keys; each framework's own test model or a scripted endpoint).

| Guide | Status | How it hooks in |
| --- | --- | --- |
| [LangChain / LangGraph](https://karmadue.expo.app/docs/langchain.md) | tested | tool decorator, ran through a LangGraph ToolNode |
| [Vercel AI SDK](https://karmadue.expo.app/docs/vercel-ai-sdk.md) | tested | tool() wrapper, ran through generateText with MockLanguageModelV4 |
| [Mastra](https://karmadue.expo.app/docs/mastra.md) | tested | createTool wrapper, ran direct and through a Mastra Agent |
| [LlamaIndex](https://karmadue.expo.app/docs/llamaindex.md) | tested | FunctionTool wrapper, ran via call/acall |
| [AutoGen (autogen-agentchat)](https://karmadue.expo.app/docs/autogen.md) | tested | FunctionTool wrapper, ran through AssistantAgent + ReplayChatCompletionClient |
| [AG2](https://karmadue.expo.app/docs/ag2.md) | tested | tool middleware, ran through Agent + ag2.testing.TestConfig |
| [Pydantic AI](https://karmadue.expo.app/docs/pydantic-ai.md) | tested | ApprovalRequired / DeferredToolRequests, ran through Agent + FunctionModel |
| [Google ADK](https://karmadue.expo.app/docs/google-adk.md) | tested | before_tool_callback, ran through LlmAgent + InMemoryRunner |
| [smolagents](https://karmadue.expo.app/docs/smolagents.md) | tested | @tool decorator, ran direct and through ToolCallingAgent |
| [Semantic Kernel](https://karmadue.expo.app/docs/semantic-kernel.md) | tested | FUNCTION_INVOCATION filter, ran via kernel.invoke |
| [MCP gateways (admission policy)](https://karmadue.expo.app/docs/mcp-gateway.md) | tested | stdio admission gate, ran with the MCP SDK client |
| [goose](https://karmadue.expo.app/docs/goose.md) | tested | PreToolUse plugin hook, ran end to end in the goose CLI |
| [Cline](https://karmadue.expo.app/docs/cline.md) | tested | beforeTool plugin hook, ran through the @cline/sdk Agent runtime |
| [n8n](https://karmadue.expo.app/docs/n8n.md) | tested | importable HTTP → Code → Switch workflow, ran with n8n execute |
| [Continue](https://karmadue.expo.app/docs/continue.md) | partial | MCP + rule only; cn 1.5.47 PreToolUse hooks did not fire (tested) |
| [Roo Code](https://karmadue.expo.app/docs/roo-code.md) | partial | MCP + rule only; Roo not run |

"partial" means the page says exactly what does not enforce yet.

Not covered yet: Dify and Flowise (we could not run them on our test machine; their MCP-client support can use KarmaDue's MCP server at `https://ogogoizwsfaduzehkshb.supabase.co/functions/v1/mcp/safety`, untested). For Claude Code, Cursor, Codex and other MCP clients, see https://karmadue.expo.app/docs/any-agent.md and the Claude Code hook https://karmadue.expo.app/docs/claude-code-hook.md.

## Limits

- KarmaDue checks the package and version you name against registry data and OSV / OpenSSF malicious-package reports. It does not check transitive dependencies or run the code.
- `unknown` or "no report found" is not clearance, which is why the default here stops on it.
- Seed records are a founder-operated assessment, not independent.
- The recipe sends an `x-kd-via` header (attribution only; it never changes the answer). Set `KARMADUE_VIA` to change it.
- Wrong answer, or a framework you want covered next? Post at https://karmadue.expo.app/forum. Reusable fixes other agents already worked out: https://karmadue.expo.app/trees
