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

# list tools

> the account's tools (`items`), the built-in ones (`defaults`, e.g. `end_call`) and the context params every tool can template on (`contextParams`: `{phone_number}`, `{user_id}`, `{agent_id}`, `{call_id}`).



## OpenAPI

````yaml /openapi.json get /v1/tools
openapi: 3.1.0
info:
  title: silk api
  version: 1.0.0
  description: >-
    rumik ai's speech api. synthesize speech with the expressive `muga` model,
    the faster `mulberry` model or the multilingual `mulberry-1.6` model over
    http or a streaming websocket session, run conversational voice agents over
    webrtc, a realtime pcm socket or the phone, and manage everything the agents
    playground does — agents, voices, variables, tools, phone numbers, sip
    trunks and outbound calls — with the same api key.
  contact:
    name: rumik ai
    url: https://rumik.ai
servers:
  - url: https://silk-api.rumik.ai
    description: production
security:
  - bearerAuth: []
tags:
  - name: speech
    description: text-to-speech over HTTP and WebSocket.
  - name: voice agents
    description: start calls with a deployed agent from your own app.
  - name: agents
    description: build, configure, deploy and inspect your agents.
  - name: calls
    description: place outbound phone calls and read call history.
  - name: voices
    description: the voices, languages and styles an agent may use.
  - name: variables
    description: account-wide `{name}` prompt variables and their defaults.
  - name: tools
    description: HTTP tools agents call before or during a call.
  - name: phone numbers
    description: 'numbers rented through rumik: search, rent, connect, release.'
  - name: sip trunks
    description: bring your own numbers over SIP.
paths:
  /v1/tools:
    get:
      tags:
        - tools
      summary: list tools
      description: >-
        the account's tools (`items`), the built-in ones (`defaults`, e.g.
        `end_call`) and the context params every tool can template on
        (`contextParams`: `{phone_number}`, `{user_id}`, `{agent_id}`,
        `{call_id}`).
      operationId: listTools
      responses:
        '200':
          description: ok.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolList'
              examples:
                default:
                  value:
                    items:
                      - id: 019f8e32-4d60-7f71-ac8d-9e0f1a2b3c4d
                        name: lookup_account
                        description: looks the caller's account up by phone number
                        kind: before_call
                        config:
                          action: get
                          performedAction: end_call
                          curl: ''
                          method: GET
                          url: https://api.example.com/v1/accounts
                          headers:
                            - name: Accept
                              value: application/json
                          params:
                            - name: phone
                              value: '{phone_number}'
                          body: ''
                          timeoutMs: 3000
                          waitForResponse: true
                          auth:
                            type: bearer
                            headerName: X-API-Key
                            username: ''
                            hasSecret: true
                          llmParams: []
                          outputs:
                            - name: firstName
                              path: ''
                            - name: plan
                              path: account.plan
                        isDefault: false
                        createdAt: '2026-09-11T10:00:00Z'
                        updatedAt: '2026-09-11T10:00:00Z'
                    defaults:
                      - id: default-end_call
                        name: end_call
                        description: ends the call
                        kind: during_call
                        config:
                          action: perform
                          performedAction: end_call
                          curl: ''
                          method: GET
                          url: ''
                          headers: []
                          params: []
                          body: ''
                          timeoutMs: 3000
                          waitForResponse: true
                          auth:
                            type: bearer
                            headerName: X-API-Key
                            username: ''
                            hasSecret: true
                          llmParams: []
                          outputs: []
                        isDefault: true
                        createdAt: null
                        updatedAt: null
                    contextParams:
                      - id: phone_number
                        label: phone number
                        hint: the number on the other end of the call
                      - id: user_id
                        label: user id
                        hint: your rumik account id
                      - id: agent_id
                        label: agent id
                        hint: the id of the agent on the call
                      - id: call_id
                        label: call id
                        hint: >-
                          this call's id: the callId a web call returns, the
                          call_id of a realtime session
                    count: 1
        '401':
          description: >-
            `unauthorized` — key missing, malformed, unknown, revoked or
            expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                unauthorized:
                  value:
                    error: Invalid API key
                    code: unauthorized
        '403':
          description: '`forbidden_scope` — the key was created without the `agent` scope.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                forbidden_scope:
                  value:
                    error: This API key lacks the 'agent' scope
                    code: forbidden_scope
        '429':
          description: >-
            `rate_limited` — the key's per-minute budget is spent. `Retry-After`
            says how long to wait; the body carries `limit` and `current`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                rate_limited:
                  value:
                    error: Rate limit exceeded
                    code: rate_limited
                    limit: 100
                    current: 101
          headers:
            Retry-After:
              description: seconds to wait before retrying (per-key rate limit only).
              schema:
                type: integer
components:
  schemas:
    ToolList:
      properties:
        items:
          items:
            $ref: '#/components/schemas/Tool'
          type: array
          description: the account's tools.
        defaults:
          items:
            $ref: '#/components/schemas/Tool'
          type: array
          description: the built-in tools every agent may use (`end_call`, …).
        contextParams:
          items:
            $ref: '#/components/schemas/ToolContextParam'
          type: array
          description: the `{tokens}` every tool receives about the call.
        count:
          type: integer
      type: object
      required:
        - items
        - defaults
        - contextParams
        - count
      title: ToolList
    Error:
      type: object
      properties:
        error:
          type: string
          description: human-readable error message.
        code:
          type: string
          description: machine-readable error code.
    Tool:
      properties:
        id:
          type: string
          description: the tool's id (`default-…` for built-ins).
        name:
          type: string
        description:
          type: string
        kind:
          $ref: '#/components/schemas/AgentToolKind'
        config:
          $ref: '#/components/schemas/ToolConfig'
        isDefault:
          type: boolean
          default: false
          description: >-
            true for the platform's built-in tools, which cannot be edited or
            deleted.
        createdAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
        updatedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
      type: object
      required:
        - id
        - name
        - description
        - kind
        - config
      title: Tool
      description: a tool as stored. the credential is never returned.
    ToolContextParam:
      properties:
        id:
          type: string
        label:
          type: string
        hint:
          type: string
      type: object
      required:
        - id
        - label
        - hint
      title: ToolContextParam
    AgentToolKind:
      type: string
      enum:
        - before_call
        - during_call
      title: AgentToolKind
      description: When in a call's life the agent reaches for the tool.
    ToolConfig:
      properties:
        action:
          $ref: '#/components/schemas/AgentToolAction'
        performedAction:
          $ref: '#/components/schemas/AgentToolPerformedAction'
        curl:
          type: string
          default: ''
        method:
          $ref: '#/components/schemas/AgentToolHttpMethod'
        url:
          type: string
        headers:
          items:
            $ref: '#/components/schemas/ToolKeyValue'
          type: array
        params:
          items:
            $ref: '#/components/schemas/ToolKeyValue'
          type: array
        body:
          type: string
        timeoutMs:
          type: integer
        waitForResponse:
          type: boolean
        auth:
          $ref: '#/components/schemas/ToolAuth'
        llmParams:
          items:
            $ref: '#/components/schemas/ToolLlmParam'
          type: array
        outputs:
          items:
            $ref: '#/components/schemas/ToolOutput'
          type: array
      type: object
      required:
        - action
        - performedAction
        - method
        - url
        - headers
        - params
        - body
        - timeoutMs
        - waitForResponse
        - auth
        - llmParams
        - outputs
      title: ToolConfig
      description: >-
        Server-constructed (``serialization_alias``), see
        :class:`AgentToolAuthView`.
    AgentToolAction:
      type: string
      enum:
        - get
        - post
        - perform
      title: AgentToolAction
      description: What the tool does when it runs. ``perform`` is a platform action.
    AgentToolPerformedAction:
      type: string
      enum:
        - end_call
        - transfer_call
      title: AgentToolPerformedAction
      description: The platform actions a ``perform`` tool can carry out.
    AgentToolHttpMethod:
      type: string
      enum:
        - GET
        - POST
        - PUT
        - PATCH
        - DELETE
      title: AgentToolHttpMethod
    ToolKeyValue:
      properties:
        name:
          type: string
          maxLength: 128
        value:
          type: string
          maxLength: 2048
          default: ''
      type: object
      required:
        - name
      title: ToolKeyValue
    ToolAuth:
      properties:
        type:
          $ref: '#/components/schemas/AgentToolAuthType'
          default: none
        headerName:
          type: string
          default: X-API-Key
        username:
          type: string
          default: ''
        hasSecret:
          type: boolean
          default: false
          description: >-
            whether a credential is stored. the credential itself is never
            returned.
      type: object
      title: ToolAuth
      description: >-
        Read side: never the secret, only whether one is stored.


        Server-constructed, so the camelCase wire names are
        ``serialization_alias``

        (the constructor keeps the real field names) — as the other read models
        do.
    ToolLlmParam:
      properties:
        id:
          type: string
          maxLength: 64
          default: ''
        name:
          type: string
          maxLength: 64
        type:
          $ref: '#/components/schemas/AgentToolParamType'
          default: string
        description:
          type: string
          maxLength: 500
          default: ''
        required:
          type: boolean
          default: true
      type: object
      required:
        - name
      title: ToolLlmParam
    ToolOutput:
      properties:
        name:
          type: string
          maxLength: 65
          default: ''
        path:
          type: string
          maxLength: 256
          default: ''
      type: object
      title: ToolOutput
      description: >-
        One value the tool exposes: ``name`` is the JSON key found anywhere in

        the response (written ``$name`` in the dashboard); ``path`` optionally
        pins

        it to a dotted location instead. A blank name is a row left empty.
    AgentToolAuthType:
      type: string
      enum:
        - none
        - bearer
        - api_key
        - basic
      title: AgentToolAuthType
    AgentToolParamType:
      type: string
      enum:
        - string
        - number
        - integer
        - boolean
      title: AgentToolParamType
      description: JSON-Schema scalar types a model-supplied argument can be declared as.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        your rumik api key, e.g. `rk_live_...`. create one in the rumik
        dashboard.

````