Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
61
A2A A2A 1.0 v2.11.0

Teardrop

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.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain 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.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
61/100
grade C · 9 criteria
Uptime
100.0%
19 direct probes · 30d
~392 ms response
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
stable
1 snapshot tracked
Owner
unverified
claim this listing →

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
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 5/25
Endpoint replies but body isn't a valid JSON-RPC 2.0 A2A response.
How to earn +20 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs
pass Protocol version 10/10
Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape).
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
19/19 probes succeeded (100% uptime).
pass Skill declaration 10/10
Declares 8 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Teardrop AI (https://api.teardrop.dev). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs
pass Freshness + modern flags 4/5
seen in upstream source within 0d
partial Security declaration 2/5
Declares 1 security scheme(s) but none use PKCE or mTLS.
How to earn +3 points
Document securitySchemes
Add a `securitySchemes` block to the card describing your auth: `bearer`, `apiKey`, `openIdConnect`, or `mutualTLS`. Routers refuse to call agents that declare no auth model.
Docs

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing 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

1 snapshot Every change to agent-card.json
Agent card snapshots
Captured Hash Snapshot
2026-10-15 20:18:54 current 8062f80accfe… view →
Uptime
100.0%
19 direct probes · 30d
Response
321ms
last direct probe
Skills
8
declared
Streaming
✓
SSE-capable

Endpoints

Agent cardhttps://teardrop.dev/.well-known/agent-card.json
Providerhttps://api.teardrop.dev
Docshttps://api.teardrop.dev/docs
About this provider off-card enrichment
SSL certificate
Google Trust Services
expires 2026-12-30
Discovered via
smithery recrawl_warm

Skills · 8 declared by this agent

These skills are declared by the agent. A taxonomy link appears only when we can classify a skill confidently.

task_planning

Break complex tasks into actionable steps.

canonical Task Decomposition match 92%
planningorchestrationworkflow
assess_counterparty_risk

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…

No taxonomy category yet
riskcounterpartysecurityapprovalsliquidation
assess_market_resolution

Return a decision-ready resolution-risk verdict for one Polymarket market before an agent trades, quotes, or forecasts it. The result branches to tradeable, amb…

No taxonomy category yet
prediction-marketspolymarketresolutionriskuma
delegate_to_agent

Delegate a task to a remote A2A-compliant agent: discover its capabilities via its agent card, send it a message, handle payment, and return the result. Use onl…

No taxonomy category yet
a2adelegationagent
discover_agents

Find opt-in remote A2A agents, published tool capabilities, endpoints, and public reputation status.

canonical Agent Directory Search match 92%
a2aagentsmarketplacediscovery
validate_opportunity

Return a decision-ready yield-opportunity verdict before capital is deployed. The result branches to sustainable, caution, unsustainable, or insufficient_data a…

No taxonomy category yet
defiyieldriskvalidationopportunity
a2ui_rendering

Declarative UI component generation (table, form, text, button, etc.).

No taxonomy category yet
a2uiuistructured-output
event_trigger_ingress

Register an authenticated event subscription that starts a bounded agent task and returns an A2A task ID for polling.

No taxonomy category yet
eventswebhooksautomationscheduling

Health · last 19 probes

When HTTP Live JSON-RPC Latency
2026-10-25 14:27:00 200 ✗ 321ms
2026-10-24 23:56:47 200 ✗ 386ms
2026-10-24 11:32:19 200 ✗ 372ms
2026-10-24 04:39:43 200 ✗ 798ms
2026-10-24 02:11:29 200 ✗ 421ms
2026-10-23 13:12:35 200 ✗ 216ms
2026-10-23 00:23:57 200 ✗ 301ms
2026-10-22 11:08:42 200 ✗ 379ms
2026-10-21 21:57:12 200 ✗ 526ms
2026-10-21 08:36:02 200 ✗ 674ms

Cheaper or better alternatives per-skill

↑ 2 higher quality

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

Teardrop
A2A-delegable Web3 decision service for counterparty-risk and DeFi yield-opportunity verdicts, with evidence-backed outcomes and metered USD
Teardrop AI · q 80%
data.crestsystems.ai
Counterparty intelligence for the agent economy. Profile any x402 buyer or Base/EVM wallet before you transact: whale score, behavioral clus
data.crestsystems.ai · q 0%
A2A Trust Plane
Multi-agent continuity for small teams. Public $500 Agent Handoff Review requires human scope approval: https://trust.the825.co/handoff-revi
The 825 · q 80%
MolTrust Trust Registry live
Production trust infrastructure for autonomous AI agents. W3C DIDs, Verifiable Credentials, Agent Authorization Envelopes (AAE), on-chain an
CryptoKRI GmbH · q 100%
MolTrust Trust Registry live
Production trust infrastructure for autonomous AI agents. W3C DIDs, Verifiable Credentials, Agent Authorization Envelopes (AAE), on-chain an
CryptoKRI GmbH · q 100%
x402-endpoints
Paid x402 API tools for AI agents (USDC on Base). Official EU/global registries (GLEIF LEI, VIES VAT, Companies House, INSEE, EUR-Lex, ECB,
x402-endpoints · q 78%

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.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/teardrop.dev.svg)](https://agenstry.com/agents/teardrop.dev)
[![Verified Business](https://agenstry.com/badge/teardrop.dev/identity.svg)](https://agenstry.com/agents/teardrop.dev)
[![Uptime](https://agenstry.com/badge/teardrop.dev/uptime.svg)](https://agenstry.com/agents/teardrop.dev)
[![A2A version](https://agenstry.com/badge/teardrop.dev/protocol.svg)](https://agenstry.com/agents/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.

audit.json audit.json (JWS-signed) verification history
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": "2.11.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.",
      "tags": [
        "planning",
        "orchestration",
        "workflow"
      ],
      "examples": [
        "Plan a staged review of this DeFi opportunity before capital is deployed.",
        "Break this counterparty investigation into evidence-gathering and decision 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",
      "examples": [
        "Assess the risk of sending funds to this EVM address.",
        "Check whether this counterparty is safe before I grant a token approval.",
        "Give me a decision-ready risk verdict for this wallet."
      ],
      "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"
      ]
    },
    {
      "id": "assess_market_resolution",
      "name": "assess_market_resolution",
      "description": "Return a decision-ready resolution-risk verdict for one Polymarket market before an agent trades, quotes, or forecasts it. The result branches to tradeable, ambiguous, avoid, or insufficient_data and names the resolution basis (price_feed, official_source, media_consensus, unspecified), UMA dispute state, rule-wording risks, and executability (liquidity, spread) so the calling agent can act without reading the full rules.",
      "tags": [
        "prediction-markets",
        "polymarket",
        "resolution",
        "risk",
        "uma",
        "decision"
      ],
      "version": "1.0.0",
      "examples": [
        "Is this Polymarket market safe to trade, or are its resolution rules ambiguous?",
        "Check whether this prediction market is disputed before I place an order.",
        "Give me a tradeable, ambiguous, or avoid verdict for this Polymarket market."
      ],
      "use_when": "Call once per market before placing, quoting, or forecasting a Polymarket position when the caller needs to know whether the rules and resolution state make the outcome well-defined. Repeat calls within two minutes return cached data.",
      "limitations": "Heuristic analysis of Polymarket rule wording and Gamma API state; not a probability forecast, legal advice, or a guarantee of how UMA voters resolve. Does not read order-book depth, event-level augmented negative-risk settings, or clarifications published off-platform.",
      "alternatives": [
        "web_search",
        "http_fetch"
      ]
    },
    {
      "id": "delegate_to_agent",
      "name": "delegate_to_agent",
      "description": "Delegate a task to a remote A2A-compliant agent: discover its capabilities via its agent card, send it a message, handle payment, and return the result. Use only when no local platform tool can fulfil the request.",
      "tags": [
        "a2a",
        "delegation",
        "agent"
      ],
      "version": "1.0.0",
      "examples": [
        "Delegate this specialist research task to the agent at the supplied URL.",
        "Ask this remote agent to analyze the opportunity within a 50000 micro-USDC budget.",
        "Send this task to the selected A2A agent and return its final result."
      ],
      "use_when": "Use when a task requires specialist capabilities beyond the local tool set. Call discover_agents first when the remote agent URL is unknown. Do not retry unchanged after error_type=advertised_price_exceeds_cap; pick another result or adjust the cap.",
      "limitations": "Requires an allowlisted remote URL and sufficient delegation budget; the remote agent's price and capability claims are read from its card and are not independently verified. Involves real payment.",
      "alternatives": [
        "discover_agents",
        "web_search"
      ]
    },
    {
      "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",
      "examples": [
        "Find an agent that can assess a DeFi counterparty.",
        "Discover available specialist agents for yield analysis.",
        "List remote agents I could delegate this task to."
      ],
      "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"
      ]
    },
    {
      "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",
      "examples": [
        "Validate whether this yield opportunity is sustainable before I deposit.",
        "Compare this pool's advertised APY with its liquidity and economic risk.",
        "Give me a proceed, caution, or reject verdict for this DeFi opportunity."
      ],
      "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"
      ]
    },
    {
      "id": "a2ui_rendering",
      "name": "a2ui_rendering",
      "description": "Declarative UI component generation (table, form, text, button, etc.).",
      "tags": [
        "a2ui",
        "ui",
        "structured-output"
      ],
      "examples": [
        "Render these risk findings as a table with a clear verdict.",
        "Create a review form for this proposed DeFi allocation."
      ]
    },
    {
      "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,
                "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"
      }
    },
    {
      "name": "assess_market_resolution",
      "version": "1.0.0",
      "description": "Return a decision-ready resolution-risk verdict for one Polymarket market before an agent trades, quotes, or forecasts it. The result branches to tradeable, ambiguous, avoid, or insufficient_data and names the resolution basis (price_feed, official_source, media_consensus, unspecified), UMA dispute state, rule-wording risks, and executability (liquidity, spread) so the calling agent can act without reading the full rules.",
      "tags": [
        "prediction-markets",
        "polymarket",
        "resolution",
        "risk",
        "uma",
        "decision"
      ],
      "input_schema": {
        "properties": {
          "market": {
            "description": "Polymarket market slug (e.g. 'will-bitcoin-reach-150k-in-2026'), numeric Gamma market id, or a polymarket.com market URL (the last path segment is used).",
            "title": "Market",
            "type": "string"
          }
        },
        "required": [
          "market"
        ],
        "title": "AssessMarketResolutionInput",
        "type": "object"
      },
      "use_when": "Call once per market before placing, quoting, or forecasting a Polymarket position when the caller needs to know whether the rules and resolution state make the outcome well-defined. Repeat calls within two minutes return cached data.",
      "limitations": "Heuristic analysis of Polymarket rule wording and Gamma API state; not a probability forecast, legal advice, or a guarantee of how UMA voters resolve. Does not read order-book depth, event-level augmented negative-risk settings, or clarifications published off-platform.",
      "alternatives": [
        "web_search",
        "http_fetch"
      ],
      "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"
          },
          "MarketRiskFactor": {
            "properties": {
              "code": {
                "title": "Code",
                "type": "string"
              },
              "category": {
                "enum": [
                  "state",
                  "resolution",
                  "rules",
                  "execution"
                ],
                "title": "Category",
                "type": "string"
              },
              "severity": {
                "enum": [
                  "high",
                  "medium",
                  "low"
                ],
                "title": "Severity",
                "type": "string"
              },
              "detail": {
                "title": "Detail",
                "type": "string"
              }
            },
            "required": [
              "code",
              "category",
              "severity",
              "detail"
            ],
            "title": "MarketRiskFactor",
            "type": "object"
          }
        },
        "properties": {
          "market_id": {
            "title": "Market Id",
            "type": "string"
          },
          "slug": {
            "title": "Slug",
            "type": "string"
          },
          "question": {
            "title": "Question",
            "type": "string"
          },
          "verdict": {
            "enum": [
              "tradeable",
              "ambiguous",
              "avoid",
              "insufficient_data"
            ],
            "title": "Verdict",
            "type": "string"
          },
          "verdict_reason": {
            "title": "Verdict Reason",
            "type": "string"
          },
          "resolution_basis": {
            "enum": [
              "price_feed",
              "official_source",
              "media_consensus",
              "unspecified"
            ],
            "title": "Resolution Basis",
            "type": "string"
          },
          "resolution_source": {
            "default": "",
            "title": "Resolution Source",
            "type": "string"
          },
          "uma_status": {
            "default": "",
            "title": "Uma Status",
            "type": "string"
          },
          "disputed": {
            "default": false,
            "title": "Disputed",
            "type": "boolean"
          },
          "rule_flags": {
            "items": {
              "type": "string"
            },
            "title": "Rule Flags",
            "type": "array"
          },
          "risk_factors": {
            "items": {
              "$ref": "#/$defs/MarketRiskFactor"
            },
            "title": "Risk Factors",
            "type": "array"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "End Date"
          },
          "hours_to_end": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Hours To End"
          },
          "outcome_prices": {
            "additionalProperties": {
              "type": "number"
            },
            "title": "Outcome Prices",
            "type": "object"
          },
          "best_bid": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Best Bid"
          },
          "best_ask": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Best Ask"
          },
          "spread": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Spread"
          },
          "liquidity_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Liquidity Usd"
          },
          "neg_risk": {
            "default": false,
            "title": "Neg Risk",
            "type": "boolean"
          },
          "provenance": {
            "$ref": "#/$defs/DataProvenance"
          },
          "as_of": {
            "title": "As Of",
            "type": "string"
          }
        },
        "required": [
          "market_id",
          "slug",
          "question",
          "verdict",
          "verdict_reason",
          "resolution_basis",
          "provenance",
          "as_of"
        ],
        "title": "AssessMarketResolutionOutput",
        "type": "object"
      }
    },
    {
      "name": "delegate_to_agent",
      "version": "1.0.0",
      "description": "Delegate a task to a remote A2A-compliant agent: discover its capabilities via its agent card, send it a message, handle payment, and return the result. Use only when no local platform tool can fulfil the request.",
      "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"
      },
      "use_when": "Use when a task requires specialist capabilities beyond the local tool set. Call discover_agents first when the remote agent URL is unknown. Do not retry unchanged after error_type=advertised_price_exceeds_cap; pick another result or adjust the cap.",
      "limitations": "Requires an allowlisted remote URL and sufficient delegation budget; the remote agent's price and capability claims are read from its card and are not independently verified. Involves real payment.",
      "alternatives": [
        "discover_agents",
        "web_search"
      ],
      "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"
      }
    },
    {
      "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,
                "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,
                "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"
      }
    }
  ],
  "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"
}