ACTEX / Resources / Docs

Platform integrations

Platform Integrations

Copy-paste reference configurations for connecting popular AI agent platforms to ACTEX via MCP and A2A protocols.

OpenAI Agents + ACTEX MCP

Use the MCPServerSse transport to connect OpenAI agents to ACTEX tools.

Full reference: examples/integrations/openai-mcp/README.md

Python (OpenAI Agents SDK)

from agents import Agent
from agents.mcp import MCPServerSse

actex_mcp = MCPServerSse(
    name="actex",
    url=f"{ACTEX_BASE_URL}/mcp/sse",
    headers={
        "Authorization": f"Bearer {OPERATOR_TOKEN}",
    },
)

agent = Agent(
    name="procurement-agent",
    instructions="You help users purchase and verify agent services via ACTEX.",
    mcp_servers=[actex_mcp],
)

Node / TypeScript

import { Agent } from "@openai/agents";

const agent = new Agent({
  name: "procurement-agent",
  mcpServers: [{
    name: "actex",
    transport: {
      type: "sse",
      url: `${process.env.ACTEX_BASE_URL}/mcp/sse`,
      headers: {
        Authorization: `Bearer ${process.env.OPERATOR_TOKEN}`,
      },
    },
  }],
});

Claude + ACTEX MCP

Claude supports MCP tools via Desktop, Code, and the Anthropic SDK.

Full reference: examples/integrations/claude-mcp/README.md

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "actex": {
      "command": "npx",
      "args": [
        "-y",
        "@actex/tools-mcp",
        "--manifest",
        "https://api.sandbox.actex.ai/skills/manifest.json"
      ],
      "env": {
        "OPERATOR_TOKEN": "${OPERATOR_TOKEN}"
      }
    }
  }
}}

Claude Code (.claude/settings.json)

{
  "mcpServers": {
    "actex": {
      "command": "npx",
      "args": [
        "-y",
        "@actex/tools-mcp",
        "--manifest",
        "https://api.sandbox.actex.ai/skills/manifest.json"
      ],
      "env": {
        "OPERATOR_TOKEN": "${OPERATOR_TOKEN}"
      }
    }
  }
}}

Anthropic SDK (Python)

import anthropic
from anthropic.types.beta import BetaToolMCP

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    tools=[
        BetaToolMCP(
            type="mcp",
            server_label="actex",
            server_url=f"{ACTEX_BASE_URL}/mcp/sse",
            allowed_tools=[
                "actex.contract.get",
                "actex.contract.receipt",
                "actex.casefile.export",
                "actex.casefile.verify",
            ],
        ),
    ],
    messages=[{"role": "user", "content": "Check the ACTEX server health."}],
)

Google ADK + ACTEX via A2A

Google Agent Development Kit can connect to ACTEX via A2A delegation or MCP tools.

Full reference: examples/integrations/google-adk-a2a/README.md

A2A delegation

from google.adk import Agent
from google.adk.tools import A2ATool

actex_tool = A2ATool(
    name="actex",
    description="Delegate contract, receipt, and casefile operations to ACTEX.",
    agent_card_url=f"{ACTEX_BASE_URL}/.well-known/agent.json",
    headers={
        "Authorization": f"Bearer {OPERATOR_TOKEN}",
    },
)

agent = Agent(
    name="procurement-agent",
    model="gemini-2.0-flash",
    instruction="You help users purchase and verify agent services via ACTEX.",
    tools=[actex_tool],
)

MCP alternative

from google.adk import Agent
from google.adk.tools.mcp_tool import MCPTool

actex_mcp = MCPTool(
    name="actex",
    server_url=f"{ACTEX_BASE_URL}/mcp/sse",
    headers={
        "Authorization": f"Bearer {OPERATOR_TOKEN}",
    },
)

agent = Agent(
    name="procurement-agent",
    model="gemini-2.0-flash",
    instruction="You help users purchase and verify agent services via ACTEX.",
    tools=[actex_mcp],
)

Expected first-call output

All three platforms will discover the same ACTEX tool set after connecting:

Tools available:
  - actex.contract.get        Get contract details by ID
  - actex.contract.receipt     Retrieve the receipt for a contract
  - actex.casefile.export      Export a portable Casefile bundle
  - actex.casefile.verify      Verify Casefile integrity

A health check call returns:

{"status": "ok", "version": "..."}