---
title: "Find allowed tools by a named provider, tool, endpoint, or short capability terms. Returns up to limit summaries (default 3). Exact names and endpoints rank first. Inspect the closest candidate first; follow cursor with the same filters and card only when needed."
method: POST
path: "/v1/discover"
---

# Find allowed tools by a named provider, tool, endpoint, or short capability terms. Returns up to limit summaries (default 3). Exact names and endpoints rank first. Inspect the closest candidate first; follow cursor with the same filters and card only when needed.

`POST /v1/discover`

## Request

- Base URL: `http://localhost:5100`
- URL: `http://localhost:5100/v1/discover`
- Auth: HTTP bearer

## Request body

- object
  - `query` string
  - `cursor` string
  - `provider` string
  - `limit` integer: Shortlist size. Start with three summaries and inspect the closest match before requesting more.
  - `cardId` string, uuid: Card to use. Required when this connection has multiple cards. List cards first.

## Response `200`

Operation result. An invocation may still be pending; inspect its state.

- object
  - `matching` object
    - `method` 'capability_rewrite', required
    - `query` string, required
  - `access` object
    - `availableToolCount` integer, required
    - `unavailableToolIds` string[], required
  - `items` object[], required
    - `id` string, required
    - `name` string, required
    - `provider` string, required
    - `description` string
    - `availability` 'configured' | 'requires_adapter'
    - `unavailableReason` string
    - `inputContract` object
      - `source` 'o11', required
      - `checkedAt` string, required
      - `mappingAvailable` boolean, required
    - `requiresCustomerCredentials` boolean
    - `platformAccountAvailable` boolean
    - `platformAccountHealth` union
      - object
        - `state` 'unknown', required
      - object
        - `state` 'available' | 'restricted', required
        - `checkedAt` string, date-time, required
        - `retryAt` string, date-time, required
    - `health` object
      - `scope` 'card_history' | 'execution_account_route', required
      - `status` 'unknown' | 'observed', required
      - `sampleCount` integer, required
      - `windowStartedAt` string, date-time, required
      - `windowEndedAt` string, date-time, required
      - `truncated` boolean, required
      - `observationUnavailable` true
      - `lastObservedAt` string, date-time, nullable, required
      - `latencyMs` object, required
        - `basis` 'admission_to_completion', required
        - `samples` integer, required
        - `p50` number, nullable, required
        - `p95` number, nullable, required
    - `platformAccountInstalled` boolean
    - `effect` 'read' | 'write'
    - `price` object, required
      - `micros` string, nullable, required
      - `basis` 'free' | 'call' | 'variable', required
      - `evidence` string, required
      - `requiresSupplierRate` boolean
      - `supplierQuoteAtExecution` boolean
      - `supplierReference` object
        - `sourceUrl` string, uri, required
        - `checked` string, required
        - `scope` 'public_schedule', required
        - `controlsWalletBilling` false, required
        - `rates` object[], required
          - `micros` string, required
          - `unit` string, required
          - `per` integer, required
          - `alternative` string
        - `note` string, required
      - `modelTokenPricing` object
        - `directoryToolId` string, required
        - `sourceUrl` string, uri, required
        - `formula` string, required
      - `tariff` object
        - `label` string, required
        - `billingAvailable` boolean, required
        - `checkedAt` string
        - `blocker` string
      - `pricingBasis` 'supplier_at_cost' | 'published_tariff'
      - `unavailableReason` string
      - `unit` string
      - `rates` object[]
        - `micros` string, required
        - `unit` string, required
        - `per` number, required
        - `alternative` string
        - `when` object[]
          - `key` string, required
          - `equals` union, required
            - string
            - number
            - boolean
        - `rounding` 'linear' | 'up'
        - `offset` number
  - `cursor` string

## Other responses

- `400`: Rejected request or temporary failure. See the errors and limits guide.
- `402`: Rejected request or temporary failure. See the errors and limits guide.
- `403`: Rejected request or temporary failure. See the errors and limits guide.
- `404`: Rejected request or temporary failure. See the errors and limits guide.
- `409`: Rejected request or temporary failure. See the errors and limits guide.
- `503`: Rejected request or temporary failure. See the errors and limits guide.

---

[API](https://skmtc.dev/o11/apis/o11-wallet-api.md) - [All operations](https://skmtc.dev/o11/apis/o11-wallet-api/llms.txt) - [OpenAPI document](https://skmtc.dev/o11/apis/o11-wallet-api/revisions/2071972de71c?raw)
