---
title: "GET /api/find-tools's search, paid per call ($0.01 a call), with no rate limit. With x-api-key and prepaid credit (POST /api/credits/topup) it answers at once and takes $0.01 from the balance: credit in the body, X-Balance-Remaining in the headers. Without a key, or with no credit left, it answers 402 with both ways: pay this call (the challenges) or top up (topup, and balance_cents with a key). A key that doesn't work: 401; more than 1,000 calls a minute per key: 429. Paying per call takes stablecoins only (USDC on Base by x402 or MPP evm, or Tempo): a card's minimum is above the price. While paying over HTTP 402 is off it answers 503 not_available; the same search is free at GET /api/find-tools. The arguments are checked before any payment (400)"
method: POST
path: "/api/paid/find-tools"
tags: ["Pay over HTTP 402"]
---

# GET /api/find-tools's search, paid per call ($0.01 a call), with no rate limit. With x-api-key and prepaid credit (POST /api/credits/topup) it answers at once and takes $0.01 from the balance: credit in the body, X-Balance-Remaining in the headers. Without a key, or with no credit left, it answers 402 with both ways: pay this call (the challenges) or top up (topup, and balance_cents with a key). A key that doesn't work: 401; more than 1,000 calls a minute per key: 429. Paying per call takes stablecoins only (USDC on Base by x402 or MPP evm, or Tempo): a card's minimum is above the price. While paying over HTTP 402 is off it answers 503 not_available; the same search is free at GET /api/find-tools. The arguments are checked before any payment (400)

`POST /api/paid/find-tools`

## Request

- Base URL: `https://agentdrives.com`
- URL: `https://agentdrives.com/api/paid/find-tools`
- Auth: one of:
  - none
  - API key in header `x-api-key`

## Request body

- object
  - `task` string, required
  - `category` string
  - `self_signup` boolean
  - `min_level` integer: Agent level, the only rank: 0 Read-only (Agents can read about it, but there is nothing to use); 1 Needs a person (Agents can't get in on their own); 2 Gets in (An agent gets in on its own but does less than half the core work); 3 Does the work (An agent gets in on its own and does half the core work or more); 4 Runs on its own (An agent does the core work and can stop paying on its own); 5 Autonomous (All of that, and it pays on its own for the work)
  - `limit` integer

## Response `200`

The ranked products

- object
  - `task` string
  - `results` TaskResult[]
    - `slug` string
    - `name` string
    - `category` string
    - `level` integer: Agent level, the only rank: 0 Read-only (Agents can read about it, but there is nothing to use); 1 Needs a person (Agents can't get in on their own); 2 Gets in (An agent gets in on its own but does less than half the core work); 3 Does the work (An agent gets in on its own and does half the core work or more); 4 Runs on its own (An agent does the core work and can stop paying on its own); 5 Autonomous (All of that, and it pays on its own for the work)
    - `level_name` string
    - `gets_in_alone` boolean: Our agent signed up and got a key without a person
    - `match` 'strong' | 'partial' | 'capability': capability: found by the capability asked for
    - `tasks` string[]: With capability: the product's own tasks mapped to it
    - `evidence` string: With capability: the product page's section that shows what our agent did
    - `task` object, nullable
      - `matched` string: The closest task in the product's capability map, or a thing our agent did there
      - `result` 'done' | 'partial' | 'plan_gated' | 'failed' | 'blocked' | 'not_tried' | 'unknown'
      - `via` string: The route: api, mcp, cli, browser
    - `can_do` string[]
    - `stop` object, nullable
      - `at` string
      - `why` string, nullable
    - `work_done` integer, nullable: Share of the core tasks done, 0-100
    - `tested_at` string
    - `url` string
    - `origin` 'editorial' | 'owner'
    - `disclosure` string
  - `credit` object: The account's credit after this call
    - `balance_cents` integer
    - `calls_left` integer
    - `expires_at` string, date-time, nullable
    - `paid_cents` integer: What this call took
    - `low` boolean: 50 calls left or fewer: time to top up
    - `topup` object: How to top up, when low

## Other responses

- `400`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next
- `401`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next
- `402`: Payment Required: the challenges in WWW-Authenticate (MPP: Payment, method stripe, tempo or evm) and PAYMENT-REQUIRED (x402 v2, exact, USDC on Base), and a body with error payment_required, what it buys, accepts (the rails on now), fix and, in Stripe's test mode, test_mode: true
- `429`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next
- `503`: Error as problem details (RFC 9457) with a machine-readable `error` and a `fix` that says what to do next

---

[API](https://skmtc.dev/agentdrives/apis/agentdrives-api.md) · [All operations](https://skmtc.dev/agentdrives/apis/agentdrives-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentdrives/apis/agentdrives-api/revisions/ae3f2c04ff72?raw)
