Skip to content

Integrations

Actaro does not require a specific agent framework. Keep the framework's tool interface and place Actaro around the side effect and its independent read.

MCP tools

Use fromMcpTool() when the existing tool follows the MCP-style shape of an input schema, a call function, and a verifier:

ts
import { fromMcpTool, actaro } from "actaro-sdk";
import { z } from "zod";

const records = new Map<string, string>();

const action = fromMcpTool({
  name: "save-record",
  input: z.object({ key: z.string(), value: z.string() }),
  call: ({ key, value }) => {
    records.set(key, value);
    return { content: [{ type: "text", text: "Record created" }] };
  },
  verify: ({ key, value }) =>
    records.get(key) === value
      ? { status: "verified", evidence: { key } }
      : { status: "failed", reason: "Stored value differs" },
});

const receipt = await actaro.run(action, {
  key: "release",
  value: "0.1.0",
});

The textual MCP response is useful feedback, but it is not evidence. The verify function must read the state that matters to the user.

See examples/local-mcp-style.ts for a complete local example.

LLM tool responses

After running an action, format the receipt for the model:

ts
import { toAgentResult } from "actaro-sdk";

const receipt = await actaro.run(action, input);
const { toolResult, canClaimCompletion } = toAgentResult(receipt);

return {
  content: [{ type: "text", text: toolResult }],
  canClaimCompletion,
};

canClaimCompletion is false for pending and failed receipts. Use it in the host agent to prevent the model from claiming that an unverified side effect completed.

The formatter is independent of the model provider, so the same result can be returned from OpenAI, Anthropic, DeepSeek, or a custom tool adapter.

Existing workflows

Actaro can run inside an existing request handler, MCP server, queue consumer, or workflow activity. It verifies one side effect at a time; it is not a replacement for durable workflow orchestration.

For long-running or distributed workflows:

  1. Let the workflow engine handle scheduling, recovery, and delivery.
  2. Wrap each externally visible side effect in an Actaro action.
  3. Persist receipts with a store that matches the workflow's durability needs.
  4. Use the receipt status to decide whether the workflow can advance.

See Actaro versus Temporal for the boundary between verification and orchestration.

Released under the MIT License.