## Handle Agent RPC by ID

`client.agents.rpc(stringagentID, AgentRpcParamsbody, RequestOptionsoptions?): AgentRpcResponse`

**post** `/agents/{agent_id}/rpc`

Handle JSON-RPC requests for an agent by its unique ID.

### Parameters

- `agentID: string`

- `body: AgentRpcParams`

  - `method: "event/send" | "task/create" | "message/send" | 2 more`

    - `"event/send"`

    - `"task/create"`

    - `"message/send"`

    - `"task/cancel"`

    - `"task/interrupt"`

  - `params: CreateTaskRequest | CancelTaskRequest | InterruptTaskRequest | 2 more`

    The parameters for the agent RPC request

    - `CreateTaskRequest`

      - `name?: string | null`

        Optional human-readable name for the task. When set it must be globally unique. task/create is get-or-create by name: reusing an existing name returns the existing task (with its prior history) instead of creating a new one, so omit name (or make it unique, e.g. by appending a UUID) whenever each call should produce a fresh task.

      - `params?: Record<string, unknown> | null`

        The parameters for the task. On a get-or-create by name, providing params overwrites the existing task's params (it is not a pure read).

      - `task_metadata?: Record<string, unknown> | null`

        Caller-provided metadata to persist on the task row. Only applied at task creation; ignored if a task with this name already exists. Forwarded to the agent inside the ACP payload for backward compatibility.

    - `CancelTaskRequest`

      - `task_id?: string | null`

        The ID of the task to cancel. Either this or task_name must be provided.

      - `task_name?: string | null`

        The name of the task to cancel. Either this or task_id must be provided.

    - `InterruptTaskRequest`

      - `task_id?: string | null`

        The ID of the task to interrupt. Either this or task_name must be provided.

      - `task_name?: string | null`

        The name of the task to interrupt. Either this or task_id must be provided.

    - `SendMessageRequest`

      - `content: TaskMessageContent`

        The message that was sent to the agent

        - `TextContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

            - `"user"`

            - `"agent"`

          - `content: string`

            The contents of the text message.

          - `attachments?: Array<Attachment> | null`

            Optional list of file attachments with structured metadata.

            - `file_id: string`

              The unique ID of the attached file

            - `name: string`

              The name of the file

            - `size: number`

              The size of the file in bytes

            - `type: string`

              The MIME type or content type of the file

          - `format?: TextFormat`

            The format of the message. This is used by the client to determine how to display the message.

            - `"markdown"`

            - `"plain"`

            - `"code"`

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

            - `"static"`

            - `"active"`

          - `type?: "text"`

            The type of the message, in this case `text`.

            - `"text"`

        - `ReasoningContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `summary: Array<string>`

            A list of short reasoning summaries

          - `content?: Array<string> | null`

            The reasoning content or chain-of-thought text

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "reasoning"`

            The type of the message, in this case `reasoning`.

            - `"reasoning"`

        - `DataContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `data: Record<string, unknown>`

            The contents of the data message.

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "data"`

            The type of the message, in this case `data`.

            - `"data"`

        - `ToolRequestContent`

          - `arguments: Record<string, unknown>`

            The arguments to the tool.

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `name: string`

            The name of the tool that is being requested.

          - `tool_call_id: string`

            The ID of the tool call that is being requested.

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "tool_request"`

            The type of the message, in this case `tool_request`.

            - `"tool_request"`

        - `ToolResponseContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `content: unknown`

            The result of the tool.

          - `name: string`

            The name of the tool that is being responded to.

          - `tool_call_id: string`

            The ID of the tool call that is being responded to.

          - `is_error?: boolean | null`

            Whether the tool call resulted in an error. `None` when the harness does not report a status.

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "tool_response"`

            The type of the message, in this case `tool_response`.

            - `"tool_response"`

      - `stream?: boolean`

        Whether to stream the response message back to the client

      - `task_id?: string | null`

        The ID of the task that the message was sent to

      - `task_name?: string | null`

        The name of the task that the message was sent to

      - `task_params?: Record<string, unknown> | null`

        The parameters for the task (only used when creating new tasks)

    - `SendEventRequest`

      - `content?: TaskMessageContent | null`

        The content to send to the event

      - `task_id?: string | null`

        The ID of the task that the event was sent to

      - `task_name?: string | null`

        The name of the task that the event was sent to

  - `id?: number | string | null`

    - `number`

    - `string`

  - `jsonrpc?: "2.0"`

    - `"2.0"`

### Returns

- `AgentRpcResponse`

  - `result: AgentRpcResult | null`

    The result of the agent RPC request

    - `Array<TaskMessage>`

      - `content: TaskMessageContent`

        The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

        - `TextContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

            - `"user"`

            - `"agent"`

          - `content: string`

            The contents of the text message.

          - `attachments?: Array<Attachment> | null`

            Optional list of file attachments with structured metadata.

            - `file_id: string`

              The unique ID of the attached file

            - `name: string`

              The name of the file

            - `size: number`

              The size of the file in bytes

            - `type: string`

              The MIME type or content type of the file

          - `format?: TextFormat`

            The format of the message. This is used by the client to determine how to display the message.

            - `"markdown"`

            - `"plain"`

            - `"code"`

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

            - `"static"`

            - `"active"`

          - `type?: "text"`

            The type of the message, in this case `text`.

            - `"text"`

        - `ReasoningContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `summary: Array<string>`

            A list of short reasoning summaries

          - `content?: Array<string> | null`

            The reasoning content or chain-of-thought text

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "reasoning"`

            The type of the message, in this case `reasoning`.

            - `"reasoning"`

        - `DataContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `data: Record<string, unknown>`

            The contents of the data message.

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "data"`

            The type of the message, in this case `data`.

            - `"data"`

        - `ToolRequestContent`

          - `arguments: Record<string, unknown>`

            The arguments to the tool.

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `name: string`

            The name of the tool that is being requested.

          - `tool_call_id: string`

            The ID of the tool call that is being requested.

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "tool_request"`

            The type of the message, in this case `tool_request`.

            - `"tool_request"`

        - `ToolResponseContent`

          - `author: MessageAuthor`

            The role of the messages author, in this case `system`, `user`, `assistant`, or `tool`.

          - `content: unknown`

            The result of the tool.

          - `name: string`

            The name of the tool that is being responded to.

          - `tool_call_id: string`

            The ID of the tool call that is being responded to.

          - `is_error?: boolean | null`

            Whether the tool call resulted in an error. `None` when the harness does not report a status.

          - `style?: MessageStyle`

            The style of the message. This is used by the client to determine how to display the message.

          - `type?: "tool_response"`

            The type of the message, in this case `tool_response`.

            - `"tool_response"`

      - `task_id: string`

        ID of the task this message belongs to

      - `id?: string | null`

        The task message's unique id

      - `created_at?: string | null`

        The timestamp when the message was created

      - `streaming_status?: "IN_PROGRESS" | "DONE" | null`

        - `"IN_PROGRESS"`

        - `"DONE"`

      - `updated_at?: string | null`

        The timestamp when the message was last updated

    - `StreamTaskMessageStart`

      Event for starting a streaming message

      - `content: TaskMessageContent`

      - `index?: number | null`

      - `parent_task_message?: TaskMessage | null`

        Represents a message in the agent system.

        This entity is used to store messages in MongoDB, with each message
        associated with a specific task.

        - `content: TaskMessageContent`

          The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.

        - `task_id: string`

          ID of the task this message belongs to

        - `id?: string | null`

          The task message's unique id

        - `created_at?: string | null`

          The timestamp when the message was created

        - `streaming_status?: "IN_PROGRESS" | "DONE" | null`

        - `updated_at?: string | null`

          The timestamp when the message was last updated

      - `type?: "start"`

        - `"start"`

    - `StreamTaskMessageDelta`

      Event for streaming chunks of content

      - `delta?: TaskMessageDelta | null`

        Delta for text updates

        - `TextDelta`

          Delta for text updates

          - `text_delta?: string | null`

          - `type?: "text"`

            - `"text"`

        - `DataDelta`

          Delta for data updates

          - `data_delta?: string | null`

          - `type?: "data"`

            - `"data"`

        - `ToolRequestDelta`

          Delta for tool request updates

          - `name: string`

          - `tool_call_id: string`

          - `arguments_delta?: string | null`

          - `type?: "tool_request"`

            - `"tool_request"`

        - `ToolResponseDelta`

          Delta for tool response updates

          - `name: string`

          - `tool_call_id: string`

          - `content_delta?: string | null`

          - `type?: "tool_response"`

            - `"tool_response"`

        - `ReasoningSummaryDelta`

          Delta for reasoning summary updates

          - `summary_index: number`

          - `summary_delta?: string | null`

          - `type?: "reasoning_summary"`

            - `"reasoning_summary"`

        - `ReasoningContentDelta`

          Delta for reasoning content updates

          - `content_index: number`

          - `content_delta?: string | null`

          - `type?: "reasoning_content"`

            - `"reasoning_content"`

      - `index?: number | null`

      - `parent_task_message?: TaskMessage | null`

        Represents a message in the agent system.

        This entity is used to store messages in MongoDB, with each message
        associated with a specific task.

      - `type?: "delta"`

        - `"delta"`

    - `StreamTaskMessageFull`

      Event for streaming the full content

      - `content: TaskMessageContent`

      - `index?: number | null`

      - `parent_task_message?: TaskMessage | null`

        Represents a message in the agent system.

        This entity is used to store messages in MongoDB, with each message
        associated with a specific task.

      - `type?: "full"`

        - `"full"`

    - `StreamTaskMessageDone`

      Event for indicating the task is done

      - `index?: number | null`

      - `parent_task_message?: TaskMessage | null`

        Represents a message in the agent system.

        This entity is used to store messages in MongoDB, with each message
        associated with a specific task.

      - `type?: "done"`

        - `"done"`

    - `Task`

      - `id: string`

      - `cleaned_at?: string | null`

      - `created_at?: string | null`

      - `name?: string | null`

      - `params?: Record<string, unknown> | null`

      - `status?: "CANCELED" | "COMPLETED" | "FAILED" | 5 more | null`

        - `"CANCELED"`

        - `"COMPLETED"`

        - `"FAILED"`

        - `"RUNNING"`

        - `"INTERRUPTED"`

        - `"TERMINATED"`

        - `"TIMED_OUT"`

        - `"DELETED"`

      - `status_reason?: string | null`

      - `task_metadata?: Record<string, unknown> | null`

      - `updated_at?: string | null`

    - `Event`

      - `id: string`

        The UUID of the event

      - `agent_id: string`

        The UUID of the agent that the event belongs to

      - `sequence_id: number`

        The sequence ID of the event

      - `task_id: string`

        The UUID of the task that the event belongs to

      - `content?: TaskMessageContent | null`

        The content of the event

      - `created_at?: string | null`

        The timestamp of the event

  - `id?: number | string | null`

    - `number`

    - `string`

  - `error?: unknown`

  - `jsonrpc?: "2.0"`

    - `"2.0"`

### Example

```typescript
import Agentex from 'agentex';

const client = new Agentex({
  apiKey: process.env['AGENTEX_SDK_API_KEY'], // This is the default and can be omitted
});

const agentRpcResponse = await client.agents.rpc('agent_id', {
  method: 'event/send',
  params: {},
});

console.log(agentRpcResponse.id);
```

#### Response

```json
{
  "result": [
    {
      "content": {
        "author": "user",
        "content": "content",
        "attachments": [
          {
            "file_id": "file_id",
            "name": "name",
            "size": 0,
            "type": "type"
          }
        ],
        "format": "markdown",
        "style": "static",
        "type": "text"
      },
      "task_id": "task_id",
      "id": "id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "streaming_status": "IN_PROGRESS",
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "id": 0,
  "error": {},
  "jsonrpc": "2.0"
}
```
