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

# Module: mcp/client

> Reference for the bijection/mcp/client entry point.

## Classes

* [McpRequestError](/api/classes/mcp_client.McpRequestError)
* [McpReconciliationRequired](/api/classes/mcp_client.McpReconciliationRequired)

## Interfaces

* [McpCallCache](/api/interfaces/mcp_client.McpCallCache)

## Type Aliases

### McpReconciledCall

Ƭ **McpReconciledCall**: `Object`

#### Type declaration

| Name | Type |
| :- | :- |
| `request` | [`RequestRef`](/api/modules/mcp_client#requestref) |
| `decision` | [`McpRequestDecision`](/api/modules/mcp_client#mcprequestdecision) |

***

### McpTool

Ƭ **McpTool**: `Object`

#### Type declaration

| Name | Type |
| :- | :- |
| `name` | `string` |
| `description?` | `string` |
| `inputSchema` | `Record`\<`string`, `unknown`> |
| `outputSchema?` | `Record`\<`string`, `unknown`> |
| `annotations?` | \{ `readOnlyHint?`: `boolean` ; `destructiveHint?`: `boolean` ; `idempotentHint?`: `boolean`  } |
| `annotations.readOnlyHint?` | `boolean` |
| `annotations.destructiveHint?` | `boolean` |
| `annotations.idempotentHint?` | `boolean` |
| `_meta?` | `Record`\<`string`, `unknown`> |

***

### McpRequestStatus

Ƭ **McpRequestStatus**: `McpPresentedStatus` | `Exclude`\<[`McpRequestDecision`](/api/modules/mcp_client#mcprequestdecision), \{ `kind`: `"accepted"` | `"accepted_result_omitted"`  }>

***

### McpClient

Ƭ **McpClient**: `Awaited`\<`ReturnType`\<typeof [`connectMcp`](/api/modules/mcp_client#connectmcp)>>

***

### McpConnectionOptions

Ƭ **McpConnectionOptions**: `Object`

#### Type declaration

| Name | Type | Description |
| :- | :- | :- |
| `url` | `string` | - |
| `getToken` | (`signal?`: `AbortSignal`) => `string` \| `Promise`\<`string`> | - |
| `cache?` | [`McpCallCache`](/api/interfaces/mcp_client.McpCallCache) | - |
| `conversation?` | `string` | Persisted conversation key for personal OAuth. Issued hosts bind it during admission. |
| `fetch?` | typeof `__type` | - |

***

### RequestRef

Ƭ **RequestRef**: `string` & \{ `__requestRef`: unique `symbol`  }

***

### RequestAddress

Ƭ **RequestAddress**: `Object`

Not exported: an exported type refers to it.

#### Type declaration

| Name | Type |
| :- | :- |
| `version` | `2` |
| `resource` | `string` |
| `interaction` | `string` |
| `operation` | `string` |
| `key` | `string` |

***

### McpRequestScope

Ƭ **McpRequestScope**: `Pick`\<[`RequestAddress`](/api/modules/mcp_client#requestaddress), `"resource"` | `"interaction"`>

***

### McpOperationBinding

Ƭ **McpOperationBinding**: `Object`

Not exported: an exported type refers to it.

#### Type declaration

| Name | Type |
| :- | :- |
| `operation` | `string` |
| `contract_digest` | `string` |
| `bound?` | `Record`\<`string`, `string`> |

***

### McpRequestRecord

Ƭ **McpRequestRecord**: `Object`

Persist before dispatch. An access session is deliberately absent.

#### Type declaration

| Name | Type |
| :- | :- |
| `version` | `2` |
| `request_key` | `string` |
| `ref` | [`RequestRef`](/api/modules/mcp_client#requestref) |
| `interaction_id` | `string` |
| `tool` | `string` |
| `args` | `Record`\<`string`, `unknown`> |
| `url` | `string` |
| `binding` | [`McpOperationBinding`](/api/modules/mcp_client#mcpoperationbinding) |

***

### McpRequestInput

Ƭ **McpRequestInput**: `Omit`\<[`McpRequestRecord`](/api/modules/mcp_client#mcprequestrecord), `"version"` | `"request_key"` | `"ref"`>

***

### McpRequestDecision

Ƭ **McpRequestDecision**: \{ `kind`: `"not_observed"`  } | \{ `kind`: `"refused"` ; `refusal`: \{ `code`: `string` ; `message?`: `string`  }  } | \{ `kind`: `"expired"`  } | \{ `kind`: `"accepted"` ; `invocation_id`: `string` ; `accepted_revision`: `string` ; `result?`: `unknown`  } | \{ `kind`: `"accepted_result_omitted"` ; `invocation_id`: `string` ; `accepted_revision`: `string` ; `reason`: `"result_too_large"` | `"result_encoding_failed"`  }

Native acceptance decisions are closed; business refusal codes are owned
by the application's operation and intentionally remain extensible.

## Functions

### withMcpDeadline

▸ **withMcpDeadline**\<`T`>(`execute`, `callerSignal?`): `Promise`\<`T`>

#### Type parameters

| Name |
| :- |
| `T` |

#### Parameters

| Name | Type |
| :- | :- |
| `execute` | (`signal`: `AbortSignal`) => `Promise`\<`T`> |
| `callerSignal?` | `AbortSignal` |

#### Returns

`Promise`\<`T`>

***

### connectMcp

▸ **connectMcp**(`options`): `Promise`\<\{ `interactionId`: `string` ; `dispose`: () => `void` ; `endInteraction`: () => `Promise`\<`void`> ; `instructions`: `string` ; `reconcilePending`: (`options`: \{ `unaccepted?`: `"leave"` | `"refuse"`  }) => `Promise`\<[`McpReconciledCall`](/api/modules/mcp_client#mcpreconciledcall)\[]> ; `discover`: () => `Promise`\<[`McpTool`](/api/modules/mcp_client#mcptool)\[]> ; `call`: (`tool`: `string`, `inputArgs`: `Record`\<`string`, `unknown`>, `executionInput?`: \{ `call`: `string` ; `signal?`: `AbortSignal`  }) => `Promise`\<`any`> ; `requests`: \{ `loadCall`: (`call`: `string`) => `Promise`\<[`McpRequestRecord`](/api/modules/mcp_client#mcprequestrecord) | `null`> ; `restoreCall`: (`call`: `string`, `snapshot`: [`McpRequestRecord`](/api/modules/mcp_client#mcprequestrecord)) => `Promise`\<`void`> ; `acknowledge`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref)) => `Promise`\<`void`> ; `refuse`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref), `options?`: \{ `signal?`: `AbortSignal`  }) => `Promise`\<[`McpRequestDecision`](/api/modules/mcp_client#mcprequestdecision)> ; `recover`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref), `options?`: \{ `signal?`: `AbortSignal`  }) => `Promise`\<[`McpRequestDecision`](/api/modules/mcp_client#mcprequestdecision)> ; `status`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref), `options?`: \{ `signal?`: `AbortSignal`  }) => `Promise`\<[`McpRequestStatus`](/api/modules/mcp_client#mcprequeststatus)>  }  }>

#### Parameters

| Name | Type |
| :- | :- |
| `options` | [`McpConnectionOptions`](/api/modules/mcp_client#mcpconnectionoptions) |

#### Returns

`Promise`\<\{ `interactionId`: `string` ; `dispose`: () => `void` ; `endInteraction`: () => `Promise`\<`void`> ; `instructions`: `string` ; `reconcilePending`: (`options`: \{ `unaccepted?`: `"leave"` | `"refuse"`  }) => `Promise`\<[`McpReconciledCall`](/api/modules/mcp_client#mcpreconciledcall)\[]> ; `discover`: () => `Promise`\<[`McpTool`](/api/modules/mcp_client#mcptool)\[]> ; `call`: (`tool`: `string`, `inputArgs`: `Record`\<`string`, `unknown`>, `executionInput?`: \{ `call`: `string` ; `signal?`: `AbortSignal`  }) => `Promise`\<`any`> ; `requests`: \{ `loadCall`: (`call`: `string`) => `Promise`\<[`McpRequestRecord`](/api/modules/mcp_client#mcprequestrecord) | `null`> ; `restoreCall`: (`call`: `string`, `snapshot`: [`McpRequestRecord`](/api/modules/mcp_client#mcprequestrecord)) => `Promise`\<`void`> ; `acknowledge`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref)) => `Promise`\<`void`> ; `refuse`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref), `options?`: \{ `signal?`: `AbortSignal`  }) => `Promise`\<[`McpRequestDecision`](/api/modules/mcp_client#mcprequestdecision)> ; `recover`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref), `options?`: \{ `signal?`: `AbortSignal`  }) => `Promise`\<[`McpRequestDecision`](/api/modules/mcp_client#mcprequestdecision)> ; `status`: (`ref`: [`RequestRef`](/api/modules/mcp_client#requestref), `options?`: \{ `signal?`: `AbortSignal`  }) => `Promise`\<[`McpRequestStatus`](/api/modules/mcp_client#mcprequeststatus)>  }  }>


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