Tako agent API

The agent API from Tako — 4 operation(s) for agent.

Operations 6

GET /v1/agent/answer/runs List answer agent runs #
POST /v1/agent/answer/runs Dispatch an answer agent run #
GET /v1/agent/answer/runs/{run_id} Poll an answer agent run #
GET /v1/agent/retrieval/runs List retrieval agent runs #
POST /v1/agent/retrieval/runs Dispatch a retrieval agent run #
GET /v1/agent/retrieval/runs/{run_id} Poll a retrieval agent run #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tako-agent-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tako-agent-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Knowledge Search Agent API
  version: 1.0.0
servers:
- url: https://tako.com/api/
  description: Tako Production API Server
tags:
- name: agent
paths:
  /v1/agent/answer/runs:
    get:
      tags:
      - agent
      summary: List answer agent runs
      description: List the authenticated caller's answer agent runs, newest first. Returns trimmed run summaries. Fetch full detail via GET /v1/agent/answer/runs/{run_id}.
      operationId: listAnswerAgentRuns
      parameters:
      - description: Opaque pagination cursor from a previous response's next_cursor.
        required: false
        schema:
          type: string
        name: cursor
        in: query
      - description: Max runs to return (default 20, max 100).
        required: false
        schema:
          type: integer
          maximum: 100.0
          minimum: 1.0
        name: limit
        in: query
      responses:
        '200':
          description: A page of the caller's answer agent runs, newest first.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerAgentRunList'
        '400':
          description: Invalid pagination parameter (limit or cursor).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
      security:
      - apiKey: []
    post:
      tags:
      - agent
      summary: Dispatch an answer agent run
      description: Dispatch an answer agent run. Returns 202 with an AnswerAgentRun object. Poll GET /v1/agent/answer/runs/{run_id} until status is 'completed' or 'failed'.
      operationId: createAnswerAgentRun
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnswerAgentRunRequest'
      responses:
        '202':
          description: 'Run dispatched. With Accept: application/json, poll GET /v1/agent/answer/runs/{run_id} for the run status. With Accept: text/event-stream, the response is an SSE stream of AnswerAgentStreamEnvelope events. The stream ends at stream_done. If the stream ends without an agent_result event, poll GET /v1/agent/answer/runs/{run_id} for the terminal status.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerAgentRun'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/AnswerAgentStreamEnvelope'
        '400':
          description: Invalid request (for example, a blank query or a malformed body).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '402':
          description: Insufficient API credit balance (PAYG pre-dispatch gate).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '404':
          description: thread_id does not exist or is not owned by the caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '409':
          description: 'Conflict. code is one of: ''conflict'' (the thread already has a run in flight); ''thread_product_mismatch'' (the thread belongs to a different agent product); ''source_indexes_mismatch'' (a follow-up changed the thread''s pinned source_indexes).'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '500':
          description: Failed to dispatch the agent run.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
      security:
      - apiKey: []
  /v1/agent/answer/runs/{run_id}:
    get:
      tags:
      - agent
      summary: Poll an answer agent run
      description: Retrieve the current state of an answer agent run. Poll until status is 'completed' or 'failed'. The response includes result when status is 'completed'.
      operationId: getAnswerAgentRun
      parameters:
      - description: The run ID from the POST /v1/agent/answer/runs response.
        required: true
        schema:
          type: string
        name: run_id
        in: path
      - description: 'SSE resume cursor (Accept: text/event-stream only). The stream replays events with seq greater than this value. It is equivalent to the Last-Event-ID header.'
        required: false
        schema:
          type: integer
          minimum: 0.0
        name: starting_after
        in: query
      responses:
        '200':
          description: 'Current state of the agent run. With Accept: text/event-stream, the response replays and then follows the run as an SSE stream of AnswerAgentStreamEnvelope events. Use starting_after or Last-Event-ID to resume. If the stream ends without an agent_result event, poll this endpoint with Accept: application/json for the terminal status.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerAgentRun'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/AnswerAgentStreamEnvelope'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '403':
          description: The run is not owned by the caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '404':
          description: Run not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
      security:
      - apiKey: []
  /v1/agent/retrieval/runs:
    get:
      tags:
      - agent
      summary: List retrieval agent runs
      description: List the authenticated caller's retrieval agent runs, newest first. Returns trimmed run summaries. Fetch full detail via GET /v1/agent/retrieval/runs/{run_id}.
      operationId: listRetrievalAgentRuns
      parameters:
      - description: Opaque pagination cursor from a previous response's next_cursor.
        required: false
        schema:
          type: string
        name: cursor
        in: query
      - description: Max runs to return (default 20, max 100).
        required: false
        schema:
          type: integer
          maximum: 100.0
          minimum: 1.0
        name: limit
        in: query
      responses:
        '200':
          description: A page of the caller's retrieval agent runs, newest first.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetrievalAgentRunList'
        '400':
          description: Invalid pagination parameter (limit or cursor).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
      security:
      - apiKey: []
    post:
      tags:
      - agent
      summary: Dispatch a retrieval agent run
      description: Dispatch a retrieval agent run. Returns 202 with a RetrievalAgentRun object. Poll GET /v1/agent/retrieval/runs/{run_id} until status is 'completed' or 'failed'.
      operationId: createRetrievalAgentRun
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrievalAgentRunRequest'
      responses:
        '202':
          description: 'Run dispatched. With Accept: application/json, poll GET /v1/agent/retrieval/runs/{run_id} for the run status. With Accept: text/event-stream, the response is an SSE stream of RetrievalAgentStreamEnvelope events. The stream ends at stream_done. If the stream ends without an agent_result event, poll GET /v1/agent/retrieval/runs/{run_id} for the terminal status.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetrievalAgentRun'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/RetrievalAgentStreamEnvelope'
        '400':
          description: Invalid request (for example, a blank query or a malformed body).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '402':
          description: Insufficient API credit balance (PAYG pre-dispatch gate).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '404':
          description: thread_id does not exist or is not owned by the caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '409':
          description: 'Conflict. code is one of: ''conflict'' (the thread already has a run in flight); ''thread_product_mismatch'' (the thread belongs to a different agent product); ''source_indexes_mismatch'' (a follow-up changed the thread''s pinned source_indexes).'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '500':
          description: Failed to dispatch the agent run.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
      security:
      - apiKey: []
  /v1/agent/retrieval/runs/{run_id}:
    get:
      tags:
      - agent
      summary: Poll a retrieval agent run
      description: Retrieve the current state of a retrieval agent run. Poll until status is 'completed' or 'failed'. The response includes result when status is 'completed'.
      operationId: getRetrievalAgentRun
      parameters:
      - description: The run ID from the POST /v1/agent/retrieval/runs response.
        required: true
        schema:
          type: string
        name: run_id
        in: path
      - description: 'SSE resume cursor (Accept: text/event-stream only). The stream replays events with seq greater than this value. It is equivalent to the Last-Event-ID header.'
        required: false
        schema:
          type: integer
          minimum: 0.0
        name: starting_after
        in: query
      responses:
        '200':
          description: 'Current state of the agent run. With Accept: text/event-stream, the response replays and then follows the run as an SSE stream of RetrievalAgentStreamEnvelope events. Use starting_after or Last-Event-ID to resume. If the stream ends without an agent_result event, poll this endpoint with Accept: application/json for the terminal status.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetrievalAgentRun'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/RetrievalAgentStreamEnvelope'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '403':
          description: The run is not owned by the caller.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
        '404':
          description: Run not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
      security:
      - apiKey: []
components:
  schemas:
    ResultContent:
      properties:
        content_format:
          anyOf:
          - $ref: '#/components/schemas/ContentsFormat'
          - type: 'null'
          description: 'Serialization of the returned card data: ''csv'', ''json_records'', or ''json_compact''. Null for web text (always returned as raw text) and for a quote-only response (nothing was serialized).'
        cost:
          type: number
          title: Cost
          description: Price of this item in USD. On a /contents response this is the amount actually billed; on a quote_only response or a search/answer downloadable card it is a prospective /contents export price (nothing was fetched or billed). Pair with export_pricing to compute a larger export's cost before fetching.
          default: 0.0
        data:
          anyOf:
          - type: string
          - type: 'null'
          title: Data
          description: 'Inline payload as text: card data serialized to CSV, or a web page''s extracted text. Set only for the ''csv'' card format and for web text; null otherwise.'
        records:
          anyOf:
          - items:
              additionalProperties:
                anyOf:
                - type: string
                - type: number
                - type: integer
                - type: boolean
                - type: 'null'
              type: object
            type: array
          - type: 'null'
          title: Records
          description: 'Inline card data as verbose JSON: a list of row objects keyed by column name. Set only when content_format is ''json_records''.'
        dataset:
          anyOf:
          - $ref: '#/components/schemas/TakoDataset'
          - type: 'null'
          description: Inline card data as a compact TakoDataset (typed column headers plus positional row arrays). Set only when content_format is 'json_compact'.
        url:
          anyOf:
          - type: string
          - type: 'null'
          title: Url
          description: Presigned download URL for the content, returned in 'url' delivery mode. Null for inline delivery and for quotes; pair with expires_at.
        expires_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Expires At
          description: ISO-8601 timestamp after which the presigned url stops working. Null whenever url is null.
        total_rows:
          anyOf:
          - type: integer
          - type: 'null'
          title: Total Rows
          description: True total number of rows in the card's data, independent of how many rows were returned. Compare with truncated to tell whether more rows are available via a larger max_rows. Null for web text.
        truncated:
          type: boolean
          title: Truncated
          description: True when the returned rows were capped (by the request's max_rows or the 2,000-row system ceiling) and total_rows exceeds the number returned.
          default: false
        export_pricing:
          anyOf:
          - $ref: '#/components/schemas/ExportPricing'
          - type: 'null'
          description: Rate card for a downloadable card CSV, so a caller can compute a full export's cost before fetching. Null for web text and other non-downloadable content.
      type: object
      title: ResultContent
      description: 'Describes the downloadable content behind a result.


        Pricing: for a Tako card CSV export, the charge is a flat per-export

        baseline plus a per-source, per-row CPM on the rows returned beyond the

        free-row allowance. Web text bills at the standard Contents rate.


        The meaning of `cost` depends on the surface. On `/contents` responses,

        `cost` is the actual charge, and it reconciles with what that response

        billed. The exception is a `quote_only` response, where `cost` is a

        prospective price: Tako neither fetched nor billed the export, and the

        payload and url fields are null. On search and answer downloadable

        cards, `cost` is a prospective `/contents` quote (the per-export

        baseline floor), not what this response billed. On a metered

        `include_contents` request, the per-card `cost` therefore diverges from

        `usage.total_cost_usd` (the inline preview bills about $0), and the sum

        of per-card `cost` will not reconcile with `usage`. Treat `cost` plus

        `export_pricing` as the price of a `/contents` export of this card.


        `export_pricing` carries the rate so that a caller can compute the full

        charge before fetching: baseline_usd + row_cpm_usd * max(0, rows -

        free_rows) / 1000, with rows <= max_rows_ceiling. `export_pricing` is

        null for web text and non-downloadable content.


        Tako populates exactly one payload group once it delivers contents:

        `data` (CSV or web text), `records` (verbose JSON), `dataset` (compact

        TakoDataset), or `url` plus `expires_at` (presigned download).

        `content_format` names the serialization; it is null for web text and

        for an undelivered quote. When every payload field is unset, this is

        just the quote (`cost`); fetch the content later via the Contents

        endpoint.'
    TakoDatasetColumnType:
      type: string
      enum:
      - string
      - number
      - boolean
      - date
      - datetime
      title: TakoDatasetColumnType
      description: 'Logical column type declared in a TakoDataset header. Temporal cells

        are ISO-8601 strings. Each column declares ''date'' or ''datetime'' on its

        own: a temporal column whose non-null values are all timezone-naive

        midnights declares ''date''.'
    AgentAnswerAssumption:
      properties:
        title:
          type: string
          title: Title
        description:
          type: string
          title: Description
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
        source_ref:
          anyOf:
          - type: integer
          - type: 'null'
          title: Source Ref
      type: object
      required:
      - title
      - description
      title: AgentAnswerAssumption
    ToolResultEvent:
      properties:
        kind:
          type: string
          const: tool_result
          title: Kind
          default: tool_result
        id:
          type: string
          title: Id
        tool:
          type: string
          title: Tool
        elapsed_ms:
          type: integer
          title: Elapsed Ms
          default: 0
        link:
          anyOf:
          - type: string
          - type: 'null'
          title: Link
        parent_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Parent Id
      type: object
      required:
      - id
      - tool
      title: ToolResultEvent
    RetrievalAgentEffort:
      type: string
      enum:
      - medium
      title: RetrievalAgentEffort
      description: 'Effort taxonomy for the Retrieval Agent (POST /v1/agent/retrieval/runs).


        Only ''medium'' is available today. `effort` stays a request field for

        forward compatibility and for parity with AnswerAgentEffort. The values

        ''low'' and ''high'' return 400 at validation.'
    TakoDataset:
      properties:
        columns:
          items:
            $ref: '#/components/schemas/TakoDatasetColumn'
          type: array
          title: Columns
          description: Ordered column headers (name + type), one per position in every row.
        rows:
          items:
            items:
              anyOf:
              - type: string
              - type: number
              - type: integer
              - type: boolean
              - type: 'null'
            type: array
          type: array
          title: Rows
          description: Row data as positional cell arrays aligned to `columns` order. Cells are string/number/boolean/null; nulls are preserved, never coerced.
        total_rows:
          type: integer
          title: Total Rows
          description: True total number of rows in the underlying data, before any truncation.
        truncated:
          type: boolean
          title: Truncated
          description: True when `rows` was capped and total_rows exceeds the number returned.
        ref:
          type: string
          title: Ref
          description: Source URL the dataset was derived from (e.g. the Tako card URL).
        sources:
          items:
            $ref: '#/components/schemas/TakoDatasetSource'
          type: array
          title: Sources
          description: 'Provenance for the dataset: the sources the rows were drawn from.'
        provenance:
          type: string
          enum:
          - query
          - web_extraction
          title: Provenance
          description: 'How the rows were produced: ''query'' (Tako data) or ''web_extraction''.'
          default: query
      type: object
      required:
      - columns
      - rows
      - total_rows
      - truncated
      - ref
      - sources
      title: TakoDataset
      description: 'The dataset-slot envelope: exact retrieved rows as positional arrays

        in `columns` order. The rows come directly from the data source; the LLM

        never transcribes them.'
    MetricDefinition:
      properties:
        name:
          type: string
          title: Name
          description: The metric's display name
          examples:
          - Gross Domestic Product (current US$)
        definition:
          type: string
          title: Definition
          description: Human-readable definition of the metric
      type: object
      required:
      - name
      - definition
      title: MetricDefinition
      description: 'Definition of a metric shown on a card. Sourced from the metric''s

        ValueType definition — the same text as the in-app methodology ''Metrics''

        tab.'
    RetrievalAgentRun:
      properties:
        run_id:
          type: string
          title: Run Id
        object:
          type: string
          const: agent.retrieval.run
          title: Object
          default: agent.retrieval.run
        thread_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Thread Id
        status:
          $ref: '#/components/schemas/AgentRunStatus'
        created_at:
          type: string
          title: Created At
        completed_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Completed At
        result:
          anyOf:
          - $ref: '#/components/schemas/RetrievalAgentResult'
          - type: 'null'
        error:
          anyOf:
          - $ref: '#/components/schemas/ErrorObject'
          - type: 'null'
        usage:
          anyOf:
          - $ref: '#/components/schemas/Usage'
          - type: 'null'
        request:
          anyOf:
          - $ref: '#/components/schemas/RetrievalAgentRunRequest'
          - type: 'null'
      type: object
      required:
      - run_id
      - status
      - created_at
      title: RetrievalAgentRun
      description: The retrieval-agent run resource returned by dispatch (202) and poll (GET).
    RetrievalAgentResult:
      properties:
        answer:
          anyOf:
          - type: string
          - type: 'null'
          title: Answer
        cards:
          items:
            $ref: '#/components/schemas/TakoCard'
          type: array
          title: Cards
        citations:
          items:
            $ref: '#/components/schemas/AgentAnswerCitation'
          type: array
          title: Citations
        metadata:
          anyOf:
          - $ref: '#/components/schemas/AgentAnswerMetadata'
          - type: 'null'
        structured_output:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Structured Output
          description: Caller-shaped structured output (present only if the request carried output_schema and status is not 'failed'). Dataset slots contain a TakoDataset envelope of exact retrieved rows, or null when the agent left them unfilled.
        structured_output_status:
          anyOf:
          - $ref: '#/components/schemas/StructuredOutputStatus'
          - type: 'null'
          description: complete | partial | failed. Present when the request supplied output_schema and the run reached the finalize step. It can be absent when the whole run failed or timed out before finalize; the run-level status and error convey that, and the echoed request.output_schema still identifies the run as structured.
        structured_output_citations:
          anyOf:
          - additionalProperties:
              items:
                type: integer
              type: array
            type: object
          - type: 'null'
          title: Structured Output Citations
          description: Best-effort field-path -> citation-index map joining the top-level citations registry (same [n] index space as the answer). Absent when status is 'failed'.
        unfilled_fields:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Unfilled Fields
          description: Dot-separated paths of unfilled dataset slots; present only if status is 'partial'.
        structured_output_error:
          anyOf:
          - $ref: '#/components/schemas/ErrorObject'
          - type: 'null'
          description: Why structured output failed; present only if status is 'failed'.
        request_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Request Id
      type: object
      title: RetrievalAgentResult
      description: 'Final retrieval-agent output. answer is markdown prose with [n]

        citation markers. cards reuse the sibling TakoCard. citations is the

        unified top-level registry for data and web sources — there is no

        web_results field. metadata carries definitions, assumptions, and

        methodology. The structured_output_* fields carry the caller-shaped

        output_schema result; they are present only if the request supplied

        output_schema. See each field''s description for the exact presence

        rules.'
    ToolRetryEvent:
      properties:
        kind:
          type: string
          const: tool_retry
          title: Kind
          default: tool_retry
        id:
          type: string
          title: Id
        tool:
          type: string
          title: Tool
        error:
          type: string
          title: Error
        elapsed_ms:
          type: integer
          title: Elapsed Ms
          default: 0
        parent_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Parent Id
      type: object
      required:
      - id
      - tool
      - error
      title: ToolRetryEvent
    AgentAnswerDefinition:
      properties:
        term:
          type: string
          title: Term
        definition:
          type: string
          title: Definition
        source_ref:
          anyOf:
          - type: integer
          - type: 'null'
          title: Source Ref
      type: object
      required:
      - term
      - definition
      title: AgentAnswerDefinition
    ExportPricing:
      properties:
        baseline_usd:
          type: number
          title: Baseline Usd
          description: Flat USD charged once per card export, independent of row count.
        row_cpm_usd:
          type: number
          title: Row Cpm Usd
          description: USD charged per 1,000 rows on rows beyond the free allowance (free_rows). Card-level total across the card's priced sources; no per-source breakdown.
        free_rows:
          type: integer
          title: Free Rows
          description: Rows included at the baseline price before the per-1,000-row rate (row_cpm_usd) begins to apply.
        max_rows_ceiling:
          type: integer
          title: Max Rows Ceiling
          description: Hard cap on rows a single export can return and bill; a larger requested max_rows is clamped to this.
      type: object
      required:
      - baseline_usd
      - row_cpm_usd
      - free_rows
      - max_rows_ceiling
      title: ExportPricing
      description: 'Card-CSV export pricing RATE, published so a caller can compute an export''s

        cost before fetching. Full charge =

        baseline_usd + row_cpm_usd * max(0, rows - free_rows) / 1000, rows <= max_rows_ceiling.

        row_cpm_usd is the card-level total (sum of the card''s distinct priced sources''

        per-1,000-row rate); no per-source breakdown.'
    RunSummaryEvent:
      properties:
        kind:
          type: string
          const: run_summary
          title: Kind
          default: run_summary
        status:
          $ref: '#/components/schemas/AgentRunStatus'
        created_at:
          type: string
          title: Created At
        completed_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Completed At
        error:
          anyOf:
          - $ref: '#/components/schemas/ErrorObject'
          - type: 'null'
        usage:
          anyOf:
          - $ref: '#/components/schemas/Usage'
          - type: 'null'
      type: object
      required:
      - status
      - created_at
      title: RunSummaryEvent
      description: 'Terminal run metadata. The stream emits it once, immediately before

        stream_done. It mirrors the GET-poll run fields that the stream otherwise

        lacks; the result stays in the agent_result event. status, created_at,

        and completed_at are always present. error appears only on failure. usage

        appears only on metered (pay-as-you-go) runs and is null otherwise.

        agent_result plus run_summary equals the GET poll object.


        It carries the same envelope `seq` as the stream_done that follows it (it

        has no seq of its own), and the stream suppresses its SSE `id:`, so it

        advances no resume cursor. Identify it by `kind`; never assume `seq` is

        unique per frame.'
    AnswerAgentMetadata:
      properties:
        definitions:
          anyOf:
          - items:
              $ref: '#/components/schemas/AgentAnswerDefinition'
            type: array
          - type: 'null'
          title: Definitions
        assumptions:
          anyOf:
          - items:
              $ref: '#/components/schemas/AgentAnswerAssumption'
            type: array
          - type: 'null'
          title: Assumptions
        methodology:
          anyOf:
          - items:
              $ref: '#/components/schemas/AgentAnswerMethodologyNote'
            type: array
          - type: 'null'
          title: Methodology
      type: object
      title: AnswerAgentMetadata
      description: 'Answer-agent metadata. Citations live in the top-level `citations`

        registry, so this carries only definitions, assumptions, and methodology.

        Distinct from the shared AgentAnswerMetadata, which retains citations for

        the legacy AgentResult.'
    AnswerAgentResult:
      properties:
        answer:
          anyOf:
          - type: string
          - type: 'null'
          title: Answer
        cards:
          items:
            $ref: '#/components/schemas/TakoCard'
          type: array
          title: Cards
        citations:
          items:
            $ref: '#/components/schemas/AgentAnswerCitation'
          type: array
          title: Citations
        metadata:
          anyOf:
          - $ref: '#/components/schemas/AnswerAgentMetadata'
          - type: 'null'
        request_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Request Id
      type: object
      title: AnswerAgentResult
      description: 'Final answer-agent output. answer is markdown prose with [n] citation

        markers. citations is the unified top-level registry that the [n] markers

        join. cards reuse the sibling TakoCard. metadata carries definitions,

        assumptions, and methodology.

# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tako/refs/heads/main/openapi/tako-agent-api-openapi.yml