Teardrop
api.teardrop.dev
· Teardrop AI
A2A-delegable Web3 decision service for counterparty-risk and DeFi yield-opportunity verdicts, with evidence-backed outcomes and metered USDC access.
api.teardrop.dev via a single DNS TXT record to add the
verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Dispute or improve this rating
C
Conformance score: 61/100
C-grade: usable but has clear conformance issues, review the breakdown below.
click to expand breakdown ▾
click to collapse breakdown ▴
agent-card.json changed within the last 7 days. We track these so downstream callers can react.
Activity (audit trail)
last 24h · 0 invocations Public aggregate · no PII recordedNothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.
Card history
10 snapshots drifted 9× Every change toagent-card.json
| Captured | Hash | |
|---|---|---|
| 2026-09-11 12:57:40 current | cab6c1d2abe6… |
view → |
| 2026-09-09 11:35:56 | 53c91d70fcaf… |
view → |
| 2026-09-05 16:59:57 | 1d62f68e826e… |
view → |
| 2026-09-01 15:55:57 | 11be9b4071c0… |
view → |
| 2026-08-30 09:26:43 | 8e2422e4e45a… |
view → |
| 2026-08-29 21:08:06 | d4a4a6a1dff4… |
view → |
| 2026-08-29 02:33:34 | d8fd742dfadb… |
view → |
| 2026-08-25 12:04:05 | c4a0b914f8ec… |
view → |
| 2026-08-18 12:36:04 | 54d15870f88d… |
view → |
| 2026-08-16 14:41:10 | 4e22fedc37f7… |
view → |
GET /api/agents/api.teardrop.dev/snapshots.Endpoints
| Agent card | https://api.teardrop.dev/.well-known/agent-card.json |
| Provider | https://api.teardrop.dev |
| Docs | https://api.teardrop.dev/docs |
Skills · 7 declared · mapped to canonical taxonomy
Return a decision-ready counterparty-risk verdict for an EVM address before funds or authority are committed. The result branches to high_risk, caution, accepta…
Delegate a task to a remote A2A-compliant agent. Discovers the agent's capabilities via its agent card, sends it a message, and returns the result. Use when a t…
Find opt-in remote A2A agents, published tool capabilities, endpoints, and public reputation status.
Return a decision-ready yield-opportunity verdict before capital is deployed. The result branches to sustainable, caution, unsustainable, or insufficient_data a…
Declarative UI component generation (table, form, text, button, etc.).
Register an authenticated event subscription that starts a bounded agent task and returns an A2A task ID for polling.
Health · last 27 probes
Cheaper or better alternatives per-skill
For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.
Similar agents embedding-nearest
Embed your Agenstry badge
Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.
Markdown / HTML snippets
[](https://agenstry.com/agents/api.teardrop.dev) [](https://agenstry.com/agents/api.teardrop.dev) [](https://agenstry.com/agents/api.teardrop.dev) [](https://agenstry.com/agents/api.teardrop.dev)
Audit-grade evidence bundle
JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against
our JWKS. See the methodology.
Raw agent card JSON
{
"schema_version": "1.0",
"protocolVersion": "1.0",
"name": "Teardrop",
"description": "A2A-delegable Web3 decision service for counterparty-risk and DeFi yield-opportunity verdicts, with evidence-backed outcomes and metered USDC access.",
"version": "1.6.0",
"url": "https://api.teardrop.dev",
"provider": {
"organization": "Teardrop AI",
"url": "https://api.teardrop.dev"
},
"documentationUrl": "https://api.teardrop.dev/docs",
"supportedInterfaces": [
{
"url": "https://api.teardrop.dev/agent/run",
"protocolBinding": "https://teardrop.ai/bindings/ag-ui-sse/v1",
"protocolVersion": "1.0"
},
{
"url": "https://api.teardrop.dev/message:send",
"protocolBinding": "https://teardrop.ai/bindings/a2a-jsonrpc/v1",
"protocolVersion": "1.0"
}
],
"capabilities": {
"streaming": true,
"pushNotifications": false,
"extendedAgentCard": false,
"a2ui": true,
"mcp_tools": true,
"multi_turn": true,
"human_in_the_loop": true,
"billing": {
"enabled": true,
"scheme": "exact",
"network": "eip155:8453",
"payment_endpoint": "/agent/run",
"pricing_endpoint": "/billing/pricing"
},
"onboarding": {
"enabled": true,
"methods": [
"siwe",
"x402"
],
"token_endpoint": "/token",
"nonce_endpoint": "/auth/siwe/nonce",
"topup_requirements_endpoint": "/billing/topup/usdc/requirements",
"topup_endpoint": "/billing/topup/usdc",
"credential_recovery": "siwe + POST /org/credentials/regenerate",
"x402_grant_type": "x402"
},
"asyncTasks": {
"enabled": true,
"request_header": "Prefer: respond-async",
"status_endpoint": "/message:status/{task_id}",
"max_concurrency": 8,
"queue_size": 100
},
"marketplace": {
"enabled": true,
"catalog_endpoint": "/marketplace/catalog",
"authors_endpoint": "/marketplace/authors",
"agents_endpoint": "/marketplace/agents",
"agent_directory_endpoint": "/marketplace/agents",
"quote_endpoint": "/marketplace/quote?tool={qualified_name}",
"author_catalog_endpoint": "/marketplace/catalog?org_slug={org_slug}",
"self_inventory_endpoint": "/agent/tools",
"agent_registration_endpoint": "/marketplace/agent-registration",
"registration_benefits_endpoint": "/.well-known/registry-benefits.json",
"mcp_gateway_endpoint": "/tools/mcp",
"registration": {
"author_config_endpoint": "/marketplace/author-config",
"tool_registration_endpoint": "/tools",
"auth": "siwe_or_admin",
"wallet_binding": "siwe_self"
}
},
"eventTriggers": {
"enabled": true,
"registration_endpoint": "/agent/event-triggers",
"dispatch_endpoint_template": "/agent/events/{trigger_token}",
"task_endpoint_template": "/agent/event-triggers/{schedule_id}/runs/{run_id}",
"registration_auth": "bearer_jwt",
"dispatch_auth": "X-Teardrop-Trigger-Secret",
"max_event_bytes": 65536,
"max_per_org": 20,
"max_concurrency": 8,
"max_concurrency_per_org": 4
}
},
"protocols": [
"ag-ui",
"a2a",
"mcp"
],
"endpoints": {
"agent_run": "/agent/run",
"health": "/health",
"docs": "/docs",
"mcp_tools": "/tools/mcp",
"a2a_message": "/message:send",
"a2a_message_status": "/message:status/{task_id}",
"marketplace_catalog": "/marketplace/catalog",
"marketplace_authors": "/marketplace/authors",
"marketplace_quote": "/marketplace/quote",
"event_trigger_registration": "/agent/event-triggers",
"event_trigger_dispatch": "/agent/events/{trigger_token}",
"event_trigger_task": "/agent/event-triggers/{schedule_id}/runs/{run_id}"
},
"defaultInputModes": [
"text/plain",
"application/json"
],
"defaultOutputModes": [
"text/plain",
"application/json"
],
"skills": [
{
"id": "task_planning",
"name": "task_planning",
"description": "Break complex tasks into actionable steps."
},
{
"id": "assess_counterparty_risk",
"name": "assess_counterparty_risk",
"description": "Return a decision-ready counterparty-risk verdict for an EVM address before funds or authority are committed. The result branches to high_risk, caution, acceptable, or insufficient_data with the evidence needed for the calling agent to act.",
"tags": [
"risk",
"counterparty",
"security",
"approvals",
"liquidation",
"web3"
],
"version": "1.0.0",
"use_when": "Delegate this check before sending funds, granting approvals, or interacting with an unknown EVM address when the caller needs a bounded risk decision.",
"limitations": "Analytics and heuristic risk assessment; not a credit bureau, fraud guarantee, or legal endorsement. Relies on DeBank indexing and on-chain Aave/Compound contract states.",
"alternatives": [
"get_wallet_approvals",
"get_liquidation_risk",
"get_wallet_positions"
],
"reputation": {
"reputation_score": 0.0,
"success_rate": 0.0,
"sample_size": 0.0,
"confidence": 0.0,
"freshness": 0.0,
"average_latency_ms": 0.0
}
},
{
"id": "delegate_to_agent",
"name": "delegate_to_agent",
"description": "Delegate a task to a remote A2A-compliant agent. Discovers the agent's capabilities via its agent card, sends it a message, and returns the result. Use when a task requires specialist capabilities beyond your own tools.",
"tags": [
"a2a",
"delegation",
"agent"
],
"version": "1.0.0"
},
{
"id": "discover_agents",
"name": "discover_agents",
"description": "Find opt-in remote A2A agents, published tool capabilities, endpoints, and public reputation status.",
"tags": [
"a2a",
"agents",
"marketplace",
"discovery"
],
"version": "1.0.0",
"use_when": "Use before delegate_to_agent when a specialist agent is needed but its URL is unknown.",
"limitations": "Discovery is read-only and does not add an agent to the org allowlist; delegate_to_agent remains authoritative.",
"alternatives": [
"delegate_to_agent"
],
"reputation": {
"reputation_score": 0.0,
"success_rate": 0.0,
"sample_size": 0.0,
"confidence": 0.0,
"freshness": 0.0,
"average_latency_ms": 0.0
}
},
{
"id": "validate_opportunity",
"name": "validate_opportunity",
"description": "Return a decision-ready yield-opportunity verdict before capital is deployed. The result branches to sustainable, caution, unsustainable, or insufficient_data and gives the calling agent the evidence needed to proceed, pause, or reject the opportunity.",
"tags": [
"defi",
"yield",
"risk",
"validation",
"opportunity",
"liquidity"
],
"version": "1.0.0",
"use_when": "Delegate this check before deploying capital into a DeFi yield pool or staking opportunity when the caller needs an independent sustainability and liquidity decision.",
"limitations": "Heuristic economic assessment based on DeFiLlama analytics and CoinGecko pricing. Does not audit smart contract bytecode, protocol governance, or admin key security.",
"alternatives": [
"get_yield_rates",
"get_protocol_tvl",
"get_lending_rates",
"assess_counterparty_risk"
],
"reputation": {
"reputation_score": 0.0,
"success_rate": 0.0,
"sample_size": 0.0,
"confidence": 0.0,
"freshness": 0.0,
"average_latency_ms": 0.0
}
},
{
"id": "a2ui_rendering",
"name": "a2ui_rendering",
"description": "Declarative UI component generation (table, form, text, button, etc.)."
},
{
"id": "event_trigger_ingress",
"name": "event_trigger_ingress",
"description": "Register an authenticated event subscription that starts a bounded agent task and returns an A2A task ID for polling.",
"tags": [
"events",
"webhooks",
"automation",
"scheduling"
],
"examples": [
"Start a task when a deployment fails.",
"Run this workflow when a marketplace payment settles.",
"Notify me when a monitored price changes."
],
"inputModes": [
"application/json"
],
"outputModes": [
"application/json"
]
}
],
"tools": [
{
"name": "assess_counterparty_risk",
"version": "1.0.0",
"description": "Return a decision-ready counterparty-risk verdict for an EVM address before funds or authority are committed. The result branches to high_risk, caution, acceptable, or insufficient_data with the evidence needed for the calling agent to act.",
"tags": [
"risk",
"counterparty",
"security",
"approvals",
"liquidation",
"web3"
],
"input_schema": {
"properties": {
"wallet_address": {
"description": "EVM wallet address (0x-prefixed)",
"title": "Wallet Address",
"type": "string"
},
"chain_ids": {
"description": "DeBank chain identifiers scoping approvals and history; positions and net worth remain all-chain.",
"items": {
"type": "string"
},
"title": "Chain Ids",
"type": "array"
}
},
"required": [
"wallet_address"
],
"title": "AssessCounterpartyRiskInput",
"type": "object"
},
"use_when": "Delegate this check before sending funds, granting approvals, or interacting with an unknown EVM address when the caller needs a bounded risk decision.",
"limitations": "Analytics and heuristic risk assessment; not a credit bureau, fraud guarantee, or legal endorsement. Relies on DeBank indexing and on-chain Aave/Compound contract states.",
"alternatives": [
"get_wallet_approvals",
"get_liquidation_risk",
"get_wallet_positions"
],
"output_schema": {
"$defs": {
"ActivitySummary": {
"properties": {
"tx_count": {
"default": 0,
"title": "Tx Count",
"type": "integer"
},
"distinct_counterparties": {
"default": 0,
"title": "Distinct Counterparties",
"type": "integer"
},
"cex_names": {
"items": {
"type": "string"
},
"title": "Cex Names",
"type": "array"
}
},
"title": "ActivitySummary",
"type": "object"
},
"ApprovalSummary": {
"properties": {
"total": {
"default": 0,
"title": "Total",
"type": "integer"
},
"unlimited": {
"default": 0,
"title": "Unlimited",
"type": "integer"
},
"sum_exposure_usd": {
"default": 0.0,
"title": "Sum Exposure Usd",
"type": "number"
},
"hacked_spenders": {
"default": 0,
"title": "Hacked Spenders",
"type": "integer"
},
"abandoned_spenders": {
"default": 0,
"title": "Abandoned Spenders",
"type": "integer"
},
"unverified_spenders": {
"default": 0,
"title": "Unverified Spenders",
"type": "integer"
}
},
"title": "ApprovalSummary",
"type": "object"
},
"DataProvenance": {
"description": "Machine-readable source and freshness metadata for a tool response.",
"properties": {
"provider": {
"title": "Provider",
"type": "string"
},
"source_urls": {
"items": {
"type": "string"
},
"title": "Source Urls",
"type": "array"
},
"retrieved_at": {
"title": "Retrieved At",
"type": "string"
},
"source_fetched_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Source Fetched At"
},
"cache_hit": {
"default": false,
"title": "Cache Hit",
"type": "boolean"
},
"cache_age_seconds": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Cache Age Seconds"
},
"cache_ttl_seconds": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Cache Ttl Seconds"
}
},
"required": [
"provider",
"retrieved_at"
],
"title": "DataProvenance",
"type": "object"
},
"LiquidationSummary": {
"properties": {
"status": {
"default": "no_debt",
"title": "Status",
"type": "string"
},
"worst_health_factor": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Worst Health Factor"
},
"has_borrow_positions": {
"default": false,
"title": "Has Borrow Positions",
"type": "boolean"
}
},
"title": "LiquidationSummary",
"type": "object"
},
"RiskFactor": {
"properties": {
"category": {
"title": "Category",
"type": "string"
},
"severity": {
"enum": [
"high",
"medium",
"low"
],
"title": "Severity",
"type": "string"
},
"detail": {
"title": "Detail",
"type": "string"
}
},
"required": [
"category",
"severity",
"detail"
],
"title": "RiskFactor",
"type": "object"
}
},
"properties": {
"wallet_address": {
"title": "Wallet Address",
"type": "string"
},
"verdict": {
"enum": [
"high_risk",
"caution",
"acceptable",
"insufficient_data"
],
"title": "Verdict",
"type": "string"
},
"risk_factors": {
"items": {
"$ref": "#/$defs/RiskFactor"
},
"title": "Risk Factors",
"type": "array"
},
"approval_summary": {
"$ref": "#/$defs/ApprovalSummary"
},
"liquidation": {
"$ref": "#/$defs/LiquidationSummary"
},
"activity": {
"$ref": "#/$defs/ActivitySummary"
},
"total_net_worth_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Total Net Worth Usd"
},
"partial_errors": {
"items": {
"type": "string"
},
"title": "Partial Errors",
"type": "array"
},
"data_complete": {
"default": true,
"title": "Data Complete",
"type": "boolean"
},
"provenance": {
"$ref": "#/$defs/DataProvenance"
},
"as_of": {
"title": "As Of",
"type": "string"
}
},
"required": [
"wallet_address",
"verdict",
"provenance",
"as_of"
],
"title": "AssessCounterpartyRiskOutput",
"type": "object"
},
"reputation": {
"reputation_score": 0.0,
"success_rate": 0.0,
"sample_size": 0.0,
"confidence": 0.0,
"freshness": 0.0,
"average_latency_ms": 0.0
}
},
{
"name": "delegate_to_agent",
"version": "1.0.0",
"description": "Delegate a task to a remote A2A-compliant agent. Discovers the agent's capabilities via its agent card, sends it a message, and returns the result. Use when a task requires specialist capabilities beyond your own tools.",
"tags": [
"a2a",
"delegation",
"agent"
],
"input_schema": {
"properties": {
"agent_url": {
"description": "Base URL of the remote A2A agent (e.g. https://agent.example.com)",
"maxLength": 2000,
"minLength": 10,
"title": "Agent Url",
"type": "string"
},
"task_description": {
"description": "Natural language description of the task to delegate",
"maxLength": 4096,
"minLength": 1,
"title": "Task Description",
"type": "string"
},
"task_type": {
"default": "general",
"description": "Broad task class for routing telemetry; never include user data or task text.",
"enum": [
"general",
"research",
"analysis",
"data_retrieval",
"coding",
"transaction",
"automation"
],
"title": "Task Type",
"type": "string"
}
},
"required": [
"agent_url",
"task_description"
],
"title": "DelegateToAgentInput",
"type": "object"
},
"output_schema": {
"properties": {
"agent_name": {
"description": "Name of the remote agent (from its agent card)",
"title": "Agent Name",
"type": "string"
},
"status": {
"description": "A2A task state: completed, failed, etc.",
"title": "Status",
"type": "string"
},
"result": {
"description": "Text result extracted from the remote agent's response",
"title": "Result",
"type": "string"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Error message, if any",
"title": "Error"
},
"error_type": {
"anyOf": [
{
"const": "advertised_price_exceeds_cap",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Stable error type for delegation failures that require planner recovery.",
"title": "Error Type"
},
"cost_usdc": {
"default": 0,
"description": "Cost of this delegation in atomic USDC",
"title": "Cost Usdc",
"type": "integer"
}
},
"required": [
"agent_name",
"status",
"result"
],
"title": "DelegateToAgentOutput",
"type": "object"
}
},
{
"name": "discover_agents",
"version": "1.0.0",
"description": "Find opt-in remote A2A agents, published tool capabilities, endpoints, and public reputation status.",
"tags": [
"a2a",
"agents",
"marketplace",
"discovery"
],
"input_schema": {
"properties": {
"q": {
"anyOf": [
{
"maxLength": 200,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional search across agent name, organization slug, or published tool name",
"title": "Q"
},
"limit": {
"default": 20,
"description": "Maximum number of agents to return",
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "DiscoverAgentsInput",
"type": "object"
},
"use_when": "Use before delegate_to_agent when a specialist agent is needed but its URL is unknown.",
"limitations": "Discovery is read-only and does not add an agent to the org allowlist; delegate_to_agent remains authoritative.",
"alternatives": [
"delegate_to_agent"
],
"output_schema": {
"$defs": {
"AgentReputation": {
"properties": {
"status": {
"enum": [
"rated",
"unrated"
],
"title": "Status",
"type": "string"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Score"
},
"success_rate": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Success Rate"
},
"sample_size": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Sample Size"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Confidence"
},
"unique_caller_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Unique Caller Count"
},
"last_event_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Event At"
},
"is_stale": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Is Stale"
}
},
"required": [
"status"
],
"title": "AgentReputation",
"type": "object"
},
"DiscoveredAgent": {
"properties": {
"org_slug": {
"title": "Org Slug",
"type": "string"
},
"org_name": {
"title": "Org Name",
"type": "string"
},
"agent_url": {
"title": "Agent Url",
"type": "string"
},
"agent_card_url": {
"title": "Agent Card Url",
"type": "string"
},
"message_endpoint": {
"title": "Message Endpoint",
"type": "string"
},
"catalog_endpoint": {
"title": "Catalog Endpoint",
"type": "string"
},
"tool_count": {
"title": "Tool Count",
"type": "integer"
},
"tool_names": {
"description": "Names of up to 20 active published tools exposed by the agent organization",
"items": {
"type": "string"
},
"title": "Tool Names",
"type": "array"
},
"registered_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "UTC timestamp when the organization first registered its A2A endpoint",
"title": "Registered At"
},
"allowlisted": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Whether the caller's org has this endpoint in its allowlist; null when caller context is unavailable",
"title": "Allowlisted"
},
"reputation": {
"$ref": "#/$defs/AgentReputation"
}
},
"required": [
"org_slug",
"org_name",
"agent_url",
"agent_card_url",
"message_endpoint",
"catalog_endpoint",
"tool_count",
"allowlisted",
"reputation"
],
"title": "DiscoveredAgent",
"type": "object"
}
},
"properties": {
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At"
},
"count": {
"title": "Count",
"type": "integer"
},
"agents": {
"items": {
"$ref": "#/$defs/DiscoveredAgent"
},
"title": "Agents",
"type": "array"
},
"registration_endpoint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Endpoint where an organization can publish its own A2A endpoint.",
"title": "Registration Endpoint"
},
"registration_benefits_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Machine-readable registration benefits, requirements, and non-guarantees.",
"title": "Registration Benefits Url"
}
},
"required": [
"generated_at",
"count",
"agents"
],
"title": "DiscoverAgentsOutput",
"type": "object"
},
"reputation": {
"reputation_score": 0.0,
"success_rate": 0.0,
"sample_size": 0.0,
"confidence": 0.0,
"freshness": 0.0,
"average_latency_ms": 0.0
}
},
{
"name": "validate_opportunity",
"version": "1.0.0",
"description": "Return a decision-ready yield-opportunity verdict before capital is deployed. The result branches to sustainable, caution, unsustainable, or insufficient_data and gives the calling agent the evidence needed to proceed, pause, or reject the opportunity.",
"tags": [
"defi",
"yield",
"risk",
"validation",
"opportunity",
"liquidity"
],
"input_schema": {
"properties": {
"pool_id": {
"description": "DeFiLlama yield pool UUID (e.g. '747c1d2a-c668-4682-b9f9-296708a3dd90').",
"title": "Pool Id",
"type": "string"
}
},
"required": [
"pool_id"
],
"title": "ValidateOpportunityInput",
"type": "object"
},
"use_when": "Delegate this check before deploying capital into a DeFi yield pool or staking opportunity when the caller needs an independent sustainability and liquidity decision.",
"limitations": "Heuristic economic assessment based on DeFiLlama analytics and CoinGecko pricing. Does not audit smart contract bytecode, protocol governance, or admin key security.",
"alternatives": [
"get_yield_rates",
"get_protocol_tvl",
"get_lending_rates",
"assess_counterparty_risk"
],
"output_schema": {
"$defs": {
"DataProvenance": {
"description": "Machine-readable source and freshness metadata for a tool response.",
"properties": {
"provider": {
"title": "Provider",
"type": "string"
},
"source_urls": {
"items": {
"type": "string"
},
"title": "Source Urls",
"type": "array"
},
"retrieved_at": {
"title": "Retrieved At",
"type": "string"
},
"source_fetched_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Source Fetched At"
},
"cache_hit": {
"default": false,
"title": "Cache Hit",
"type": "boolean"
},
"cache_age_seconds": {
"anyOf": [
{
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Cache Age Seconds"
},
"cache_ttl_seconds": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Cache Ttl Seconds"
}
},
"required": [
"provider",
"retrieved_at"
],
"title": "DataProvenance",
"type": "object"
},
"LiquiditySummary": {
"properties": {
"tvl_usd": {
"default": 0.0,
"title": "Tvl Usd",
"type": "number"
},
"tvl_30d_change_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Tvl 30D Change Pct"
},
"chart_days": {
"default": 0,
"title": "Chart Days",
"type": "integer"
},
"drain_detected": {
"default": false,
"title": "Drain Detected",
"type": "boolean"
}
},
"title": "LiquiditySummary",
"type": "object"
},
"RiskFactor": {
"properties": {
"category": {
"title": "Category",
"type": "string"
},
"severity": {
"enum": [
"high",
"medium",
"low"
],
"title": "Severity",
"type": "string"
},
"detail": {
"title": "Detail",
"type": "string"
}
},
"required": [
"category",
"severity",
"detail"
],
"title": "RiskFactor",
"type": "object"
},
"YieldSummary": {
"properties": {
"apy": {
"default": 0.0,
"title": "Apy",
"type": "number"
},
"apy_base": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Apy Base"
},
"apy_reward": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Apy Reward"
},
"apy_mean_30d": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Apy Mean 30D"
},
"reward_share_pct": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Reward Share Pct"
},
"is_spiking": {
"default": false,
"title": "Is Spiking",
"type": "boolean"
}
},
"title": "YieldSummary",
"type": "object"
}
},
"properties": {
"pool_id": {
"title": "Pool Id",
"type": "string"
},
"project": {
"default": "",
"title": "Project",
"type": "string"
},
"symbol": {
"default": "",
"title": "Symbol",
"type": "string"
},
"chain": {
"default": "",
"title": "Chain",
"type": "string"
},
"verdict": {
"enum": [
"sustainable",
"caution",
"unsustainable",
"insufficient_data"
],
"title": "Verdict",
"type": "string"
},
"sustainability_reason": {
"title": "Sustainability Reason",
"type": "string"
},
"risk_factors": {
"items": {
"$ref": "#/$defs/RiskFactor"
},
"title": "Risk Factors",
"type": "array"
},
"yield_summary": {
"$ref": "#/$defs/YieldSummary"
},
"liquidity_summary": {
"$ref": "#/$defs/LiquiditySummary"
},
"partial_errors": {
"items": {
"type": "string"
},
"title": "Partial Errors",
"type": "array"
},
"data_complete": {
"default": true,
"title": "Data Complete",
"type": "boolean"
},
"provenance": {
"$ref": "#/$defs/DataProvenance"
},
"as_of": {
"title": "As Of",
"type": "string"
}
},
"required": [
"pool_id",
"verdict",
"sustainability_reason",
"provenance",
"as_of"
],
"title": "ValidateOpportunityOutput",
"type": "object"
},
"reputation": {
"reputation_score": 0.0,
"success_rate": 0.0,
"sample_size": 0.0,
"confidence": 0.0,
"freshness": 0.0,
"average_latency_ms": 0.0
}
}
],
"authentication": {
"required": true,
"scheme": "bearer",
"type": "jwt",
"token_endpoint": "/token"
},
"securitySchemes": {
"bearer_jwt": {
"httpAuthSecurityScheme": {
"description": "JWT bearer token issued by Teardrop.",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
},
"security": [
{
"bearer_jwt": []
}
],
"securityRequirements": [
{
"bearer_jwt": []
}
],
"iconUrl": "https://teardrop.dev/teardrop.png"
}