Skip to content

Agent Provider Depot

io.github.ethanhawkes-gif/agent-provider-depotethanhawkes-gifstreamable-httpv0.13.9Scanned

Dated picks, sourced pricing, and rescue/eval tools across 305 AI agent infrastructure providers.

18 tools: 15 change things and 3 only read.

Tools: 0 delete, 0 irreversible, 15 write, 3 read.
  • Reads private data · 0
  • Reads text others write · 1
  • Can send data out · 0
  • 2 findings, 2 high

Anlyon alternative

15 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

18 tools

Changes things 15Claude Code: ask
  • answerTask in words → one part per job, each ≤1 KB: pick, runnerUp, the pick's own sourced price (or null + priceReason), free option, why; 'Depot doesn't cover X yet' when it doesn't.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Task in words → one part per job, each ≤1 KB: pick, runnerUp, the pick's own sourced price (or null + priceReason), free option, why; 'Depot doesn't cover X yet' when it doesn't. Optional stack context and volume (adds a plan-level monthly cost with a link to the arithmetic).

    Annotations the server declares

    • title: One-call answer (front door)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • audit_repoOne-call repository manifest auditor (< 3 KB): detects deprecated/trap npm/pip packages (@google/generative-ai, r2, bull, request, pinecone-client, mailgun-js), retired/overpriced …2 findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • High

      The description refers to ".env".

      Matched text

      description: "...pt-4-0613, text-embedding-ada-002), and .env keys, mapping each to live Depot Picks."

      What this check looks for
    • High

      The input schema at properties.envVars.description refers to ".env.example".

      Matched text

      inputSchema.properties.envVars.description: "Env var names or .env.example lines, e.g. [SENDGRID_API_KEY, OPENAI_A..."

      What this check looks for
    Description, as the server wrote it
    One-call repository manifest auditor (< 3 KB): detects deprecated/trap npm/pip packages (@google/generative-ai, r2, bull, request, pinecone-client, mailgun-js), retired/overpriced model SKUs (claude-3-5-sonnet-20240620, gpt-4-0613, text-embedding-ada-002), and .env keys, mapping each to live Depot Picks.

    Annotations the server declares

    • title: Audit repo dependencies & stack
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • bundleDecide + quote + free + failures for up to 10 JTBDs in one call.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Decide + quote + free + failures for up to 10 JTBDs in one call. compact=true for small context windows. maxUsd applies in each job's native unit; maxUnit restricts it to jobs priced in that unit.

    Annotations the server declares

    • title: Job bundle
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • changesCHANGELOG entries and rows with stored dates on or after since (YYYY-MM-DD).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    CHANGELOG entries and rows with stored dates on or after since (YYYY-MM-DD).

    Annotations the server declares

    • title: What changed since
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • checkFlags for each provider in a stack from stored data: unknown, deprecated, retired, source_degraded, stale_score, unreachable_source, price_not_on_page, not_listed_for_job, conditio…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Flags for each provider in a stack from stored data: unknown, deprecated, retired, source_degraded, stale_score, unreachable_source, price_not_on_page, not_listed_for_job, condition_failed, condition_unknown, maintenance_mode, retirement_announced (warning only; detail.retirement has the stored effective date and source). ok=false when a provider has a flag in failOn (default deprecated,retired). A provider Depot does not know is status unknown, not an error. require=[soc2,dpa,zdr] checks sourced security records (unknown when none).

    Annotations the server declares

    • title: Check a stack (CI gate)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • coverageBooleans per agent class need: hasPick, hasMatchingPrice, hasFree, hasCaseStudy.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Booleans per agent class need: hasPick, hasMatchingPrice, hasFree, hasCaseStudy. Optional q filters by classId, class name, or need jtbdId.

    Annotations the server declares

    • title: Coverage map
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • decideDepot Pick, runners-up, whenNotTopPick skip rule and cite string for one JTBD (compact < 4 KB by default; pass full=true for full plan tables).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Depot Pick, runners-up, whenNotTopPick skip rule and cite string for one JTBD (compact < 4 KB by default; pass full=true for full plan tables). constraints is a comma list matched against whenNotTopPick.

    Annotations the server declares

    • title: Depot decision card
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • estimateMonthly cost per candidate for a workload from sourced plan limits (base + included + overage), with the arithmetic string, or null with a reason.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Monthly cost per candidate for a workload from sourced plan limits (base + included + overage), with the arithmetic string, or null with a reason. workload: metric=value pairs or a bare number in the job's primary metric. List prices only; never changes a pick.

    Annotations the server declares

    • title: Workload cost with arithmetic
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • failuresAgent failure modes with how to detect each.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Agent failure modes with how to detect each.

    Annotations the server declares

    • title: Failure modes
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • freeSourced $0 / OSS rows whose jtbdIds list the job.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Sourced $0 / OSS rows whose jtbdIds list the job. Free never changes a pick.

    Annotations the server declares

    • title: Free resources for a job
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • freshnessHow old Depot's scores, prices and free rows are (ageDays vs staleAfterDays), the latest source re-check, and the stalest Depot Picks.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    How old Depot's scores, prices and free rows are (ageDays vs staleAfterDays), the latest source re-check, and the stalest Depot Picks. Never re-scores.

    Annotations the server declares

    • title: Freshness and stalest picks
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • kitOne kit for an agent class (coding, browser, voice, rag, eval-judge, …): picks, quotes, free rows, failures, studies.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    One kit for an agent class (coding, browser, voice, rag, eval-judge, …): picks, quotes, free rows, failures, studies.

    Annotations the server declares

    • title: Agent-class kit
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • quoteSourced SKUs for the Depot Pick and the cheapest SKU in the job's single native unit.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Sourced SKUs for the Depot Pick and the cheapest SKU in the job's single native unit. Input/output never blended; units never converted.

    Annotations the server declares

    • title: Job quote
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • stackTurn a multi-job task description into existing JTBD ids (deterministic alias match), plus guardrails from negated phrases and a bundle URL.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Turn a multi-job task description into existing JTBD ids (deterministic alias match), plus guardrails from negated phrases and a bundle URL.

    Annotations the server declares

    • title: Map a task to jobs
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • stack_deltaZero-IP retention heartbeat (< 1.5 KB): checks whether any watched provider or JTBD had a live health alert, price change, pick update, E3/E4 outcome receipt, or operational gotcha…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Zero-IP retention heartbeat (< 1.5 KB): checks whether any watched provider or JTBD had a live health alert, price change, pick update, E3/E4 outcome receipt, or operational gotcha since YYYY-MM-DD.

    Annotations the server declares

    • title: Stateful stack heartbeat & delta
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 3Show 3 read-only tools
  • compareSide-by-side stored scores, job-unit price and free rows for 2–5 providers, optionally weighted for one JTBD.No findings

    Why it is in this group

    • The name "compare" says "compare": a word for reading.
    Description, as the server wrote it
    Side-by-side stored scores, job-unit price and free rows for 2–5 providers, optionally weighted for one JTBD.

    Annotations the server declares

    • title: Compare providers
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • rescue_failureSearch-at-failure interceptor (< 2 KB): resolves HTTP 429/402/529, Cloudflare 1020/WAF/robots.txt blocks, SDK import errors, wrong npm packages (r2), and deprecated model SKUs into…Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "search": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "search" and "http": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Search-at-failure interceptor (< 2 KB): resolves HTTP 429/402/529, Cloudflare 1020/WAF/robots.txt blocks, SDK import errors, wrong npm packages (r2), and deprecated model SKUs into an immediate fix and verified fallback route.

    Annotations the server declares

    • title: Rescue runtime error or deprecated SKU
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

2 high
  • The description refers to ".env".

    Matched text

    description: "...pt-4-0613, text-embedding-ada-002), and .env keys, mapping each to live Depot Picks."

    What this check looks for
  • The input schema at properties.envVars.description refers to ".env.example".

    Matched text

    inputSchema.properties.envVars.description: "Env var names or .env.example lines, e.g. [SENDGRID_API_KEY, OPENAI_A..."

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 0.13.9. Values in angle brackets are yours to fill in.

claude mcp add --transport http agent-provider-depot https://getagentdepot.com/api/mcp
claude mcp add --transport http agent-provider-depot https://getagentdepot.com/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__agent-provider-depot__search",
      "mcp__agent-provider-depot__compare",
      "mcp__agent-provider-depot__rescue_failure"
    ],
    "ask": [
      "mcp__agent-provider-depot__answer",
      "mcp__agent-provider-depot__estimate",
      "mcp__agent-provider-depot__stack",
      "mcp__agent-provider-depot__decide",
      "mcp__agent-provider-depot__quote",
      "mcp__agent-provider-depot__bundle",
      "mcp__agent-provider-depot__kit",
      "mcp__agent-provider-depot__free",
      "mcp__agent-provider-depot__failures",
      "mcp__agent-provider-depot__coverage",
      "mcp__agent-provider-depot__changes",
      "mcp__agent-provider-depot__check",
      "mcp__agent-provider-depot__freshness",
      "mcp__agent-provider-depot__audit_repo",
      "mcp__agent-provider-depot__stack_delta"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as agent-provider-depot. Review it before you use it.

Capability tags behind 1 rule
  • mcp__agent-provider-depot__rescue_failure untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.ethanhawkes-gif/agent-provider-depot/verify?hash=29b9dc1c67a0fa370827031dd9a622fe4f18d75386312f14d4ae561411b08e91" | jq -e '.changed == false'

Pinned hash 29b9dc1c67a0, from Oct 29, 2026, 00:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.ethanhawkes-gif/agent-provider-depot/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.ethanhawkes-gif/agent-provider-depot
[![anlyon.dev](https://anlyon.dev/badge/io.github.ethanhawkes-gif/agent-provider-depot.svg)](https://anlyon.dev/servers/io.github.ethanhawkes-gif/agent-provider-depot)

Source: MCP Registry · repository. Synced Oct 29, 2026, 00:17 UTC.