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

# Solvers

> The counterparty roster your quote requests fan out to - every solver and LP that cleared the workspace's eligibility gates, with live pricing status, corridor coverage, and quoting history. An empty roster for a pair is what surfaces as a typed productUnavailable error on POST /quotes.

## OpenAPI

```yaml /specs/rfq-api.json get /solvers theme={null}
openapi: 3.1.0
info:
  title: TetraFi RFQ API
  version: '1'
  description: >-
    Firm, escrow-backed quotes from competing solvers and LPs. Every quote is a signed
    commitment priced from the counterparty's own inventory - executable exactly as
    returned, with no re-pricing and no last look - and every order settles through a
    delivery-or-refund escrow: the output is delivered or the input comes back, never
    limbo.
servers:
  - url: https://api.tetrafi.io/api/v1/rfq
    description: >-
      RFQ namespace base URL. The chain is no longer part of the URL - every asset in an
      intent names its network via chainId. The same host serves the sandbox: authenticate
      with a tfk_test_ key to quote against test corridors, tfk_live_ for production.
security:
  - apiKeyAuth: []
paths:
  /solvers:
    get:
      summary: Solver Roster
      operationId: getSolvers
      description: >-
        Lists the solvers and LPs your workspace can reach - the counterparties every
        quote request fans out to. An id appears here only after the counterparty clears
        the workspace's eligibility gates (onboarding, compliance, corridor coverage);
        `status` then says whether it is pricing right now. An empty eligible roster for a
        pair is exactly what surfaces as a typed productUnavailable answer on POST
        /quotes.
      servers:
        - url: https://api.tetrafi.io/api/v1
      parameters:
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/SolverStatus'
              - type: 'null'
            title: Status
            description: Keep only counterparties in this roster state.
          description: Keep only counterparties in this roster state.
        - name: corridor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Corridor
            description: >-
              Keep only counterparties eligible to quote this corridor slug, e.g.
              optimism-base.
          description: >-
            Keep only counterparties eligible to quote this corridor slug, e.g.
            optimism-base.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SolversResponse'
              example:
                solvers:
                  - id: lp-atlas
                    status: active
                    kind: lp
                    corridors:
                      - optimism-base
                      - base-optimism
                    firstSeenAt: '2026-01-12T09:30:00Z'
                    lastQuoteAt: '2026-07-20T13:58:41Z'
                    eligibilityNote: null
                  - id: solver-corsair
                    status: standby
                    kind: solver
                    corridors:
                      - ethereum-arc
                    firstSeenAt: '2026-03-02T16:05:00Z'
                    lastQuoteAt: '2026-07-19T22:14:03Z'
                    eligibilityNote: >-
                      inventory rebalancing - expected to resume pricing shortly
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    SolverStatus:
      type: string
      enum:
        - active
        - standby
        - offline
      title: SolverStatus
      description: >-
        Roster state of a solver/LP. active - pricing now and included in quote fan-out;
        standby - eligible but temporarily not pricing (maintenance or inventory
        rebalancing); offline - unreachable or disabled, excluded from fan-out.
        Eligibility itself is decided upstream of this status: only counterparties that
        cleared the workspace's onboarding and compliance gates appear in the roster at
        all.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SolverInfo:
      properties:
        id:
          type: string
          title: Id
          description: >-
            Stable roster identifier - the same string that appears as solverId on every
            quote this counterparty returns.
        status:
          $ref: '#/components/schemas/SolverStatus'
          description: Whether the counterparty is pricing right now.
        kind:
          anyOf:
            - type: string
              enum:
                - lp
                - solver
            - type: 'null'
          title: Kind
          description: >-
            What stands behind the id: lp for a market-making liquidity provider quoting
            from its own inventory, solver for an execution agent that fills intents.
        corridors:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Corridors
          description: >-
            Directional corridor slugs this counterparty quotes, e.g. optimism-base.
        firstSeenAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: First Seen At
          description: When the counterparty first joined the workspace roster.
        lastQuoteAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Quote At
          description: Most recent time it returned a firm quote to this workspace.
        eligibilityNote:
          anyOf:
            - type: string
            - type: 'null'
          title: Eligibility Note
          description: >-
            Why quoting is currently limited, when it is - e.g. inventory rebalancing or a
            corridor gate. Null when the counterparty is fully eligible.
      type: object
      required:
        - id
        - status
      title: SolverInfo
      description: >-
        One solver or LP the workspace can reach. Quote requests fan out only to listed
        entries, so this roster is the complete universe of possible counterparties for
        your firm quotes.
    SolversResponse:
      properties:
        solvers:
          items:
            $ref: '#/components/schemas/SolverInfo'
          type: array
          title: Solvers
          description: >-
            The workspace's counterparty roster - every solver and LP that quote requests
            can reach.
      type: object
      required:
        - solvers
      title: SolversResponse
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Service-account API key (tfk_test_/tfk_live_).
```


## OpenAPI

````yaml GET /solvers
openapi: 3.1.0
info:
  title: TetraFi RFQ API
  version: '1'
  description: >-
    Firm, escrow-backed quotes from competing solvers and LPs. Every quote is a
    signed commitment priced from the counterparty's own inventory - executable
    exactly as returned, with no re-pricing and no last look - and every order
    settles through a delivery-or-refund escrow: the output is delivered or the
    input comes back, never limbo.
servers:
  - url: https://api.tetrafi.io/api/v1/rfq
    description: >-
      RFQ namespace base URL. The chain is no longer part of the URL - every
      asset in an intent names its network via chainId. The same host serves the
      sandbox: authenticate with a tfk_test_ key to quote against test
      corridors, tfk_live_ for production.
security:
  - apiKeyAuth: []
paths:
  /solvers:
    get:
      summary: Solver Roster
      description: >-
        Lists the solvers and LPs your workspace can reach - the counterparties
        every quote request fans out to. An id appears here only after the
        counterparty clears the workspace's eligibility gates (onboarding,
        compliance, corridor coverage); `status` then says whether it is pricing
        right now. An empty eligible roster for a pair is exactly what surfaces
        as a typed productUnavailable answer on POST /quotes.
      operationId: getSolvers
      parameters:
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/SolverStatus'
              - type: 'null'
            title: Status
            description: Keep only counterparties in this roster state.
          description: Keep only counterparties in this roster state.
        - name: corridor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Corridor
            description: >-
              Keep only counterparties eligible to quote this corridor slug,
              e.g. optimism-base.
          description: >-
            Keep only counterparties eligible to quote this corridor slug, e.g.
            optimism-base.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SolversResponse'
              example:
                solvers:
                  - id: lp-atlas
                    status: active
                    kind: lp
                    corridors:
                      - optimism-base
                      - base-optimism
                    firstSeenAt: '2026-01-12T09:30:00Z'
                    lastQuoteAt: '2026-07-20T13:58:41Z'
                    eligibilityNote: null
                  - id: solver-corsair
                    status: standby
                    kind: solver
                    corridors:
                      - ethereum-arc
                    firstSeenAt: '2026-03-02T16:05:00Z'
                    lastQuoteAt: '2026-07-19T22:14:03Z'
                    eligibilityNote: inventory rebalancing - expected to resume pricing shortly
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      servers:
        - url: https://api.tetrafi.io/api/v1
components:
  schemas:
    SolverStatus:
      type: string
      enum:
        - active
        - standby
        - offline
      title: SolverStatus
      description: >-
        Roster state of a solver/LP. active - pricing now and included in quote
        fan-out; standby - eligible but temporarily not pricing (maintenance or
        inventory rebalancing); offline - unreachable or disabled, excluded from
        fan-out. Eligibility itself is decided upstream of this status: only
        counterparties that cleared the workspace's onboarding and compliance
        gates appear in the roster at all.
    SolversResponse:
      properties:
        solvers:
          items:
            $ref: '#/components/schemas/SolverInfo'
          type: array
          title: Solvers
          description: >-
            The workspace's counterparty roster - every solver and LP that quote
            requests can reach.
      type: object
      required:
        - solvers
      title: SolversResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SolverInfo:
      properties:
        id:
          type: string
          title: Id
          description: >-
            Stable roster identifier - the same string that appears as solverId
            on every quote this counterparty returns.
        status:
          $ref: '#/components/schemas/SolverStatus'
          description: Whether the counterparty is pricing right now.
        kind:
          anyOf:
            - type: string
              enum:
                - lp
                - solver
            - type: 'null'
          title: Kind
          description: >-
            What stands behind the id: lp for a market-making liquidity provider
            quoting from its own inventory, solver for an execution agent that
            fills intents.
        corridors:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Corridors
          description: >-
            Directional corridor slugs this counterparty quotes, e.g.
            optimism-base.
        firstSeenAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: First Seen At
          description: When the counterparty first joined the workspace roster.
        lastQuoteAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Quote At
          description: Most recent time it returned a firm quote to this workspace.
        eligibilityNote:
          anyOf:
            - type: string
            - type: 'null'
          title: Eligibility Note
          description: >-
            Why quoting is currently limited, when it is - e.g. inventory
            rebalancing or a corridor gate. Null when the counterparty is fully
            eligible.
      type: object
      required:
        - id
        - status
      title: SolverInfo
      description: >-
        One solver or LP the workspace can reach. Quote requests fan out only to
        listed entries, so this roster is the complete universe of possible
        counterparties for your firm quotes.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Service-account API key (tfk_test_/tfk_live_).

````