Integrations
Drop Iqrar into any AI agent codebase — TypeScript, Python, hosted platforms, OpenTelemetry, MCP. Same wire format, same dashboard, every framework.
Iqrar's wire format is plain HTTP/JSON, so any agent runtime that can make a network request can register and stream telemetry. We ship first-class SDKs and adapters for the platforms that cover ~95% of agents in production today.
Pick your runtime
TypeScript / JavaScript — @iqrar/agent
Three-line drop-in. Framework-specific entrypoints exist for the most common stacks.
| Platform | Entrypoint | Page |
|---|---|---|
| OpenAI SDK / Assistants | @iqrar/agent/openai | |
| Anthropic SDK | @iqrar/agent/anthropic | |
| Vercel AI SDK | @iqrar/agent/vercel-ai | |
| Mastra | @iqrar/agent/mastra | |
| LangChain.js / LangGraph.js | @iqrar/agent/langchain | |
| OpenClaw / NemoClaw | Iqrar(...).wrap(claw) + llms.txt self-onboard | |
| Anything else | Iqrar(...).wrap(target) |
Python — iqrar-agent
Mirrors the TS surface signature-for-signature. Same wire format, same dashboard.
| Platform | Adapter | Page |
|---|---|---|
| CrewAI | iqrar.adapters.crewai.attach | |
| LangChain / LangGraph (Python) | IqrarCallbackHandler | |
| OpenAI Agents SDK (Python) | IqrarRunHooks | |
| AutoGen v0.4 | IqrarMiddleware | |
| Pydantic AI / LlamaIndex / Smolagents | direct Iqrar(...).wrap() | covered below |
Hosted / managed agent platforms
When you don't run the agent yourself, hook into the platform's event stream and forward to Iqrar's /telemetry endpoint.
| Platform | Bridge | Status |
|---|---|---|
| AWS Bedrock Agents | EventBridge → Lambda → /telemetry | |
| Azure AI Agent Service | Diagnostic Settings → Event Hub → Function | |
| Vertex AI Agent Builder | Pub/Sub → Cloud Function | |
| OpenAI Assistants (hosted) | Run/Step polling or webhook |
Universal escape hatches
| Surface | What we ship | Page |
|---|---|---|
OpenTelemetry (gen_ai.* semconv) | @iqrar/otel-exporter | |
| Model Context Protocol (MCP) | Iqrar MCP server | |
| Direct HTTP | the wire format itself |
What every integration does
Regardless of platform, the integration shape is the same:
- Register the agent once at startup with
org,jurisdiction,capabilities, and a stableagent_id. - Fetch + cache the regulator-published ruleset for your jurisdiction; the SDK self-classifies your risk tier from your declared capabilities.
- Emit telemetry on each invocation, tool call, and decision. Below Tier 3 the SDK summarises payloads automatically.
- Sync verbosity from the regulator-issued runtime directives every 30 seconds (or on demand) without redeploying.
- Disclose AI use to consumers via the canonical
disclose()string when your tier requires it (Article 50 / §11).
The framework adapters above just wire those five steps into whatever lifecycle hooks your platform exposes — step_callback for CrewAI, BaseCallbackHandler for LangChain, RunHooks for the OpenAI Agents SDK, the v0.4 event bus for AutoGen, and so on. Your call sites stay unchanged.
Authentication
The integrations above all accept the optional apiKey config field (read automatically from IQRAR_API_KEY on most stacks). It's required once your org has been Authorization: Bearer iqr_… on every call.
const iqrar = Iqrar({
org: "acme",
jurisdiction: "AE",
apiKey: process.env.IQRAR_API_KEY,
});
If a request to a claimed org arrives without a matching key, the worker responds 401; with a key that belongs to a different org, 403.
Don't see your platform?
The TS and Python SDKs both expose Iqrar(...).wrap(target) which transparently proxies any callable or class instance. If your platform exposes a structured event stream we should write an adapter for, open an issue — or just call the /register, /rules/<j>, /telemetry) cover 90% of integrations.