AP
Agent Provider Depot
Opinionated picks for agents
OpenAPI

Kit · 2026-10-03

Research agent

research

Gathers sources for an open-ended question and returns an answer that names those sources.

Needs below are the JTBD ids already listed on this class, capped at 6. The pick is the current Depot Pick. The cheapest line is that job's matching sourced SKU, or unavailable. A free row is listed only when its jtbd ids include that job. This page does not rescore. cost=free does not hide that pick and does not turn a cheap paid SKU into a free one.

GET /api/kit?class=research&cost=free · ?cost=free · all kits · class JSON

First actions

  1. /api/hub
  2. /api/decide?jtbd=deep-research-agents
  3. /api/quote?jtbd=deep-research-agents
  4. /api/kit?class=research&cost=free
  5. /api/failures

Needs

Jobs: deep-research-agents, web-grounded-qa, agent-search, search-augmented-llm, web-scrape, llm-ready-extract

Class freeKinds field (not used to attach free rows): free_docs, free_data, free_browser

  • A stop rule for when enough sources have been read

deep-research-agents

Depot Pick: parallel · score as of 2026-09-14 · /api/jtbds/deep-research-agents

Depot Pick for deep-research-agents: parallel (asOf 2026-09-14). See GET /api/jtbds/deep-research-agents + GET /api/methodology.

pickIsNotPriceWinner: false

Cheapest matching SKU: exa · Agent search tool call · 0.005 usd_per_search · not a per-million-token rate. min sourced search SKU among candidates; usd_per_search only; not coerced to another search unit; not a chat $/1M rate; not quality-adjusted

Only 1 candidate has a matching USD per search; nothing was compared, so pickIsPriceWinner is null.

Free-only recommendation

mode: free_only · paid pick stays parallel. Not a free resource. A cheap paid SKU is not in this list.

  • Crawl4AI · crawl4ai · free_browser · oss
  • GAIA · gaia · free_data · free

Free resources

freeMatch: jtbd

  • Crawl4AI · crawl4ai · free_browser · oss
  • GAIA · gaia · free_data · free

web-grounded-qa

Depot Pick: perplexity · score as of 2026-09-14 · /api/jtbds/web-grounded-qa

Depot Pick for web-grounded-qa: perplexity (asOf 2026-09-14). See GET /api/jtbds/web-grounded-qa + GET /api/methodology.

pickIsNotPriceWinner: false

Cheapest matching SKU: perplexity · pplx-embed-v1-0.6b · 0.004 usd_per_million_tokens. min sourced input SKU among candidates; not quality-adjusted

Pick is the cheapest sourced input $/1M among candidates (0.004).

Free-only recommendation

mode: free_only · paid pick stays perplexity. Not a free resource. A cheap paid SKU is not in this list.

Free resources

freeMatch: jtbd

agent-search

Depot Pick: exa · score as of 2026-10-19 · /api/jtbds/agent-search

Depot Pick for agent-search: exa (asOf 2026-10-19). See GET /api/jtbds/agent-search + GET /api/methodology.

pickIsNotPriceWinner: true

Cheapest matching SKU: serper · Google SERP API, Starter top-up · 1 usd_per_1k_searches · not a per-million-token rate. min sourced search SKU among candidates; usd_per_1k_searches only; not coerced to another search unit; not a chat $/1M rate; not quality-adjusted

Pick is not a price winner. Cheapest matching USD per 1k searches among candidates is serper at 1. The pick has no matching sourced price. Chat input $/1M was not borrowed.

Free-only recommendation

mode: free_only · paid pick stays exa. Not a free resource. A cheap paid SKU is not in this list.

Free resources

freeMatch: jtbd

search-augmented-llm

Depot Pick: tavily · score as of 2026-09-14 · /api/jtbds/search-augmented-llm

Depot Pick for search-augmented-llm: tavily (asOf 2026-09-14). See GET /api/jtbds/search-augmented-llm + GET /api/methodology.

pickIsNotPriceWinner: false

Cheapest matching SKU: exa · Agent search tool call · 0.005 usd_per_search · not a per-million-token rate. min sourced search SKU among candidates; usd_per_search only; not coerced to another search unit; not a chat $/1M rate; not quality-adjusted

Only 1 candidate has a matching USD per search; nothing was compared, so pickIsPriceWinner is null.

Free-only recommendation

mode: free_only · paid pick stays tavily. Not a free resource. A cheap paid SKU is not in this list.

no_free_resource_for_job

Free resources

freeMatch: none

none

web-scrape

Depot Pick: firecrawl · score as of 2026-10-19 · /api/jtbds/web-scrape

Depot Pick for web-scrape: firecrawl (asOf 2026-10-19). See GET /api/jtbds/web-scrape + GET /api/methodology.

pickIsNotPriceWinner: false

Cheapest matching SKU: unavailable — Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.

Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.

Free-only recommendation

mode: free_only · paid pick stays firecrawl. Not a free resource. A cheap paid SKU is not in this list.

  • Crawl4AI · crawl4ai · free_browser · oss

Free resources

freeMatch: jtbd

  • Crawl4AI · crawl4ai · free_browser · oss

llm-ready-extract

Depot Pick: firecrawl · score as of 2026-10-19 · /api/jtbds/llm-ready-extract

Depot Pick for llm-ready-extract: firecrawl (asOf 2026-10-19). See GET /api/jtbds/llm-ready-extract + GET /api/methodology.

pickIsNotPriceWinner: false

Cheapest matching SKU: unavailable — Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.

Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.

Free-only recommendation

mode: free_only · paid pick stays firecrawl. Not a free resource. A cheap paid SKU is not in this list.

Free resources

freeMatch: jtbd

Failure modes

  • Prompt injection prompt-injection

    Compare each tool call to the original user task. If the call only makes sense given text that arrived from a fetched page, file, or message, stop and ask. Record which source the instruction came from. This catalog does not store payloads or attack steps.

  • Stale retrieval stale-retrieval

    Store the source URL and the time it was fetched. If a newer canonical page exists, or two stored sources disagree, do not answer from the older one.

  • Tool loop tool-loop

    Hash the last several tool names and arguments. Stop when the same call repeats and the observation did not change. Cap tool calls per task.

  • Runaway spend runaway-spend

    Set a budget and a tool-call cap per task. Alert when spend jumps. Stop the run at the cap instead of summarizing a partial trace as success.

  • Lost in the middle lost-in-the-middle

    Ask the agent to name the passage it used. Spot-check questions whose only support sits in the middle of the context, not only at the edges.

  • Ungrounded answer ungrounded-answer

    Require a source URL or passage id on factual sentences. Drop or mark any sentence whose source does not contain the claim.

  • Instruction drift instruction-drift

    Restate the stop condition in the trace. End the run when it is met. Review long traces for steps that do not serve the original task.

  • Inter-agent misalignment inter-agent-misalignment

    Log the assigned subtask next to the worker's stated result. The lead rejects a result that does not match the assignment.

  • Context overflow context-overflow

    If the input exceeds the window, say so and retrieve a narrower slice. Do not answer from a truncated head as if it were the whole source.

  • Policy conflict policy-conflict

    If cited sources contradict each other, return the conflict and the URLs. Do not pick a winner silently.

  • Silent truncation silent-truncation

    Tools must return whether the payload was truncated and how long the original was. Fail the task if the answer depends on the missing span.

Case studies

5 related, 2 left on the case-study index.

/api/case-studies?class=research