> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentium.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Durable protocol hosts

> Public durable protocol hosts signatures and configuration in @agentium/transport 4.0.0.

Import these **11 exports** from `@agentium/transport`. Read the [durable protocol hosts guide](/durable/protocols) for setup and behavior, or return to the [package reference](/api-reference/transport).

A `?` marks an optional field. These are declarations for lookup; run the examples in the linked guide. Follow related-type links for Agentium types and source links for imported dependency types.

## createDurableMCPTaskHandler

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/mcp/durable-task-handler.ts)

```typescript theme={null}
/** Pinned modern HTTP/Tasks extension adapter. SDK handles discovery/schema framing;
 * task extension methods are explicitly implemented here, not by the base SDK.
 * The modern protocol negotiates capabilities in each validated request envelope.
 */
export declare function createDurableMCPTaskHandler(options: DurableMCPTaskHandlerOptions): Promise<DurableMCPTaskHandler>;
```

Related: [`DurableMCPTaskHandler`](/api-reference/transport/durable#durablemcptaskhandler), [`DurableMCPTaskHandlerOptions`](/api-reference/transport/durable#durablemcptaskhandleroptions).

## createDurableTaskRouter

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/express/durable-router.ts)

```typescript theme={null}
/** Authenticated control and bounded replay for tasks already admitted by the host.
 * Event responses close after the retained batch; reconnect with Last-Event-ID.
 * This is an Agentium endpoint, not an A2A or MCP wire-protocol endpoint.
 */
export declare function createDurableTaskRouter(options: DurableTaskRouterOptions): Router;
```

Related: [`DurableTaskRouterOptions`](/api-reference/transport/durable#durabletaskrouteroptions).

## DurableMCPTaskHandler

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/mcp/durable-task-handler.ts)

```typescript theme={null}
export interface DurableMCPTaskHandler {
    fetch(request: Request): Promise<Response>;
    close(): Promise<void>;
}
```

## DurableMCPTaskHandlerOptions

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/mcp/durable-task-handler.ts)

```typescript theme={null}
export interface DurableMCPTaskHandlerOptions extends DurableProtocolHost {
    name: string;
    audience: string;
    authenticate(request: Request, audience: string): Promise<DurableReader | null>;
    tools: readonly DurableMCPTaskTool[];
    pollIntervalMs?: number;
}
```

Related: [`DurableMCPTaskTool`](/api-reference/transport/durable#durablemcptasktool), [`DurableProtocolHost`](/api-reference/transport/durable#durableprotocolhost), [`DurableReader`](/api-reference/core/durable#durablereader).

## DurableMCPTaskTool

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/mcp/durable-task-handler.ts)

```typescript theme={null}
export interface DurableMCPTaskTool {
    name: string;
    description?: string;
    inputSchema: Record<string, unknown>;
}
```

## DurableProtocolAdmission

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/durable/protocol-host.ts)

```typescript theme={null}
export type DurableProtocolAdmission = {
    protocol: "a2a-1.0";
    name: string;
    messageId: string;
    parts: DurableProtocolPart[];
} | {
    protocol: "mcp-2026-07-28";
    name: string;
    arguments: Record<string, DurableJSON>;
};
```

Related: [`DurableJSON`](/api-reference/core/durable#durablejson), [`DurableProtocolPart`](/api-reference/transport/durable#durableprotocolpart).

## DurableProtocolApprovalResponse

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/durable/protocol-host.ts)

```typescript theme={null}
export interface DurableProtocolApprovalResponse {
    approvalId: string;
    preparedHash: string;
    approved: boolean;
}
```

## DurableProtocolHost

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/durable/protocol-host.ts)

```typescript theme={null}
/** Trusted admission boundary; protocol payloads cannot select identity, policy or grants. */
export interface DurableProtocolHost {
    supervisor: DurableTaskSupervisor;
    /** Persist an owned task before returning. Mint/validate immutable refs and deduplicate message IDs here. */
    admit(identity: DurableReader, input: DurableProtocolAdmission): Promise<DurableTaskKey>;
    authorize(identity: DurableReader, task: Readonly<DurableTaskRecord>, operation: "read" | "cancel" | "input" | "wake"): Promise<boolean>;
    /** Re-deliver a persisted task to its registered driver. Failure leaves it available for host recovery. */
    wake(key: DurableTaskKey): Promise<unknown>;
    /** Explicit trusted human-consent channel. Persist via DurableActionLedger.decide; never trust tool text. */
    respond?(identity: DurableReader, task: Readonly<DurableTaskRecord>, response: DurableProtocolApprovalResponse): Promise<void>;
    /** Return only authorized public output. Resolve artifacts through DurableRunRecords; no automatic URLs. */
    output?(identity: DurableReader, task: Readonly<DurableTaskRecord>): Promise<DurableProtocolOutput>;
}
```

Related: [`DurableProtocolAdmission`](/api-reference/transport/durable#durableprotocoladmission), [`DurableProtocolApprovalResponse`](/api-reference/transport/durable#durableprotocolapprovalresponse), [`DurableProtocolOutput`](/api-reference/transport/durable#durableprotocoloutput), [`DurableReader`](/api-reference/core/durable#durablereader), [`DurableTaskKey`](/api-reference/core/durable#durabletaskkey), [`DurableTaskRecord`](/api-reference/core/durable#durabletaskrecord), [`DurableTaskSupervisor`](/api-reference/core/durable#durabletasksupervisor).

## DurableProtocolOutput

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/durable/protocol-host.ts)

```typescript theme={null}
export interface DurableProtocolOutput {
    text?: string;
    data?: DurableJSON;
    /** A completed tool result can contain a domain error without becoming a protocol failure. */
    isError?: boolean;
}
```

Related: [`DurableJSON`](/api-reference/core/durable#durablejson).

## DurableProtocolPart

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/durable/protocol-host.ts)

```typescript theme={null}
export type DurableProtocolPart = {
    text: string;
} | {
    data: DurableJSON;
};
```

Related: [`DurableJSON`](/api-reference/core/durable#durablejson).

## DurableTaskRouterOptions

[Source](https://github.com/agentiumOS/agentium/blob/v4.0.0/packages/transport/src/express/durable-router.ts)

```typescript theme={null}
export interface DurableTaskRouterOptions {
    supervisor: DurableTaskSupervisor;
    records: DurableRunRecords;
    /** Verify credentials/audience. Returned identity must never come from body/query claims. */
    authenticate: (request: Request) => Promise<DurableReader | null>;
    /** Recheck current host policy/grants on every request, including event reconnections. */
    authorize: (identity: DurableReader, task: Readonly<DurableTaskRecord>, operation: "read" | "cancel") => Promise<boolean>;
    /** Re-deliver cancellation to a worker. Cancellation remains persisted if Redis is unavailable. */
    wake: (key: DurableTaskKey) => Promise<unknown>;
}
```

Related: [`DurableReader`](/api-reference/core/durable#durablereader), [`DurableRunRecords`](/api-reference/core/durable#durablerunrecords), [`DurableTaskKey`](/api-reference/core/durable#durabletaskkey), [`DurableTaskRecord`](/api-reference/core/durable#durabletaskrecord), [`DurableTaskSupervisor`](/api-reference/core/durable#durabletasksupervisor).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.