> ## 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.

# Solver Roster

> 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.



## OpenAPI

````yaml /api-reference/specs/rfq-api.json 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_).

````