Atlas / MCP servers / teardrop-ai / teardrop

teardropCAUTION

mcp/teardrop-ai/teardrop

An A2A-first marketplace for autonomous economic agents: discover specialists, delegate tasks, and settle per-request blockchain payments over federated MCP tools and streaming AG-UI.

Verdict
CAUTION
Grade
F
Trust score
48 /100
Exposed tools
1 1r · 0w · 0d
Transport
streamable-http
License
NOASSERTION
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

████████╗███████╗ █████╗ ██████╗ ██████╗ ██████╗  ██████╗ ██████╗
╚══██╔══╝██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔═══██╗██╔══██╗
██║   █████╗  ███████║██████╔╝██║  ██║██████╔╝██║   ██║██████╔╝
██║   ██╔══╝  ██╔══██║██╔══██╗██║  ██║██╔══██╗██║   ██║██╔═══╝
██║   ███████╗██║  ██║██║  ██║██████╔╝██║  ██║╚██████╔╝██║
╚═╝   ╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═════╝ ╚═╝  ╚═╝ ╚═════╝ ╚═╝

Teardrop is a streaming API for applications and software agents to run tool-using AI workflows. Clients submit a message or task; Teardrop orchestrates a configured LLM (Anthropic, OpenAI, Google, or OpenRouter) and available tools, then streams structured results and UI events over Server-Sent Events (SSE). It supports AG-UI for streaming interaction, A2A for agent discovery and delegation, MCP for tool access, and optional x402 pay-per-request USDC settlement on Base.

Core Features

Agent-to-Agent (A2A) Delegation

Agents can discover opt-in specialists with the zero-cost discover_agents tool, including active published tool names, and securely delegate tasks via delegate_to_agent (both invoked during /agent/run). Features include allowlist control, JWT forwarding, per-run quotas, destination cost caps, optional advertised atomic-USDC task prices, and optional credit billing with org-level and caller-principal pause/24-hour spend-limit enforcement. A price above the effective allowlist cap returns error_type=advertised_price_exceeds_cap before funding; lower prices are rechecked against live budgets. Definitive non-delivery of a newly linked credit-funded delegation creates a reversal-linked refund, restoring the refunded amount to both rolling spend-cap calculations; ambiguous possibly_delivered calls remain held for explicit resolution. Refund rows created before migration 103 may be unlinked and restore balance without rolling-cap headroom.

For the full protocol specification, environment variables, allowlists, and billing event

Read from source at commit baa63b007fe2OBSERVED · 2026-10-14
02

Exposed tools (1)

1 read · 0 write · 0 destructive.

ToolRiskDescription
echo_greetingreadreturn f
03

Trust audit

CAUTIONgrade F · trust 48/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (7 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
scheduling/crud.py:30
"cron_expr, enabled, callback_url, callback_format, trigger_token, next_trigger_id, next_run_at, last_run_at, "
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
scheduling/crud.py:110
callback_url: str | None,
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
scheduling/crud.py:133
callback_url,
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
scheduling/crud.py:147
callback_url: str | None,
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
scheduling/crud.py:173
callback_url,
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/eval-manual.yml:42
DATABASE_URL: postgresql://postgres:[email protected]:5432/teardrop_eval
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/spec.yml:13
DATABASE_URL: postgresql://postgres:testpass@localhost:5432/teardrop_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/test.yml:13
DATABASE_URL: postgresql://postgres:testpass@localhost:5432/teardrop_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/test.yml:74
DATABASE_URL: postgresql://postgres:testpass@localhost:5432/teardrop_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/test.yml:76
TEST_DATABASE_URL: postgresql://postgres:testpass@localhost:5432/teardrop_test
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/api/test_health.py:670
secret = "test-only-sensitive-payment-detail"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/test_cache.py:93
secret = "test-only-sensitive-cache-detail"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/test_web3_tools.py:83
token = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/test_web3_tools.py:94
token = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/unit/test_package_imports.py:159
module = importlib.import_module(module_name)
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/test_defillama_tools.py:88
GetProtocolTvlInput(protocol="../../etc/passwd")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/test_defillama_tools.py:488
GetYieldRatesInput(protocols=["../../etc/passwd"])
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/test_validate_opportunity.py:244
ValidateOpportunityInput(pool_id="../../../etc/passwd")
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/api/test_agent_schedules_api.py:149
"callback_url": "https://169.254.169.254/hook",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/api/test_org_tools_api.py:117
body = {**_CREATE_BODY, "webhook_url": "http://169.254.169.254/metadata"}
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/integration/test_mcp_client.py:302
url="http://169.254.169.254/",
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/unit/test_a2a_client.py:91
assert _is_ip_blocked("::ffff:169.254.169.254") is True
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/unit/test_http_fetch.py:18
assert _is_ip_blocked("::ffff:169.254.169.254") is True
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/eval-manual.yml:41
TEARDROP_BASE_URL: http://127.0.0.1:8000
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/api/test_agent_schedules_api.py:149
"callback_url": "https://169.254.169.254/hook",

Gates applied: no_behavioural_pass.

Audited 2026-10-14 · audit v0.4.1 · source sha baa63b007fe2full audit observations/trust-audit/mcp-server/teardrop-ai__teardrop.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-14baa63b007fe2CAUTIONF48first audit
05

Questions

What is the teardrop MCP server?

An A2A-first marketplace for autonomous economic agents: discover specialists, delegate tasks, and settle per-request blockchain payments over federated MCP tools and streaming AG-UI.

What tools does teardrop expose?

1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is teardrop safe to connect to an agent?

With care. The audit graded it F (48/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does teardrop need?

It reads ANTHROPIC_API_KEY, CDP_API_KEY_ID, CDP_API_KEY_SECRET, GITHUB_TOKEN, RESEARCH_TEST_KEY and TEARDROP_EVAL_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does teardrop run?

It speaks streamable-http, so it runs as a service you connect to over the network.

How current is this page?

The grade is for one exact copy of the source (baa63b007fe2), read on 2026-10-14. The repository is watched and re-audited when it changes.

Advertisement