{
  "name": "Tellr — Agent ATM",
  "description": "Decision logic for an agent spend. Returns a verdict or a descriptive plan. Does not read a wallet, hold keys, or move funds.",
  "version": "1.0.0",
  "protocolVersion": "1.0",
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "capabilities": {
    "streaming": false,
    "execution": false,
    "custody": false
  },
  "supportedInterfaces": [
    {
      "url": "https://x402.bankr.bot/0xcdc493fb6f0fa17b213ac2195bc454b39c1228ec/tellr-fund-checkout",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://x402.bankr.bot/0xcdc493fb6f0fa17b213ac2195bc454b39c1228ec/tellr-check",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://x402.bankr.bot/0xcdc493fb6f0fa17b213ac2195bc454b39c1228ec/tellr-sell-plan",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://x402.bankr.bot/0xcdc493fb6f0fa17b213ac2195bc454b39c1228ec/tellr-privilege-audit",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://x402.bankr.bot/0xcdc493fb6f0fa17b213ac2195bc454b39c1228ec/tellr-classify",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://x402.bankr.bot/0xcdc493fb6f0fa17b213ac2195bc454b39c1228ec/tellr-top-off",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    }
  ],
  "skills": [
    {
      "id": "tellr-fund-checkout",
      "name": "Fund Checkout",
      "description": "Decide how to fund a checkout before paying it. Given an exact settlement amount and the holdings you are willing to sell, returns whether it can be covered, from where (stablecoin, liquidation, or mixed), the sell legs under a 75% per-position cap, and what selling would realise as a taxable disposal. Use before an agent makes a purchase to avoid draining stablecoin. Pure decision logic: no keys, no wallet access, moves nothing.",
      "priceUsd": 0.05,
      "tags": [
        "checkout",
        "funding",
        "payment",
        "liquidation",
        "agent-payments",
        "treasury",
        "stablecoin"
      ],
      "input": {
        "settlementUsd": 20,
        "stableUsd": 6,
        "holdings": [
          {
            "symbol": "EXAMPLE",
            "balanceUsd": 100,
            "pool": "liquidity"
          }
        ]
      },
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "tellr-check",
      "name": "Check",
      "description": "Decide whether a spend can auto-execute, needs a human, or must be refused, against configured per-transaction ceilings, a daily cap and pool rules. Returns one of three fixed verdicts with the rule that produced it. Pure decision logic: no keys, no wallet access, moves nothing.",
      "priceUsd": 0.05,
      "tags": [
        "spending",
        "policy",
        "limits",
        "risk",
        "agent-payments",
        "guardrail"
      ],
      "input": {
        "amountUsd": 20,
        "pool": "liquidity",
        "dailySpentUsd": 35
      },
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "tellr-sell-plan",
      "name": "Sell Plan",
      "description": "Build a descriptive sell plan that raises a target amount from a set of holdings. Sells stablecoins first, then smaller liquidity positions, and caps every position at 75% so no single holding is emptied. Returns legs and reasoning only — it does not execute and does not predict prices. Pure decision logic: no keys, no wallet access, moves nothing.",
      "priceUsd": 0.05,
      "tags": [
        "liquidation",
        "portfolio",
        "sell-plan",
        "rebalance",
        "treasury"
      ],
      "input": {
        "targetUsd": 20,
        "holdings": [
          {
            "symbol": "EXAMPLE",
            "balanceUsd": 100,
            "pool": "liquidity"
          },
          {
            "symbol": "EXAMPLE",
            "balanceUsd": 40,
            "pool": "growth"
          }
        ]
      },
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "tellr-privilege-audit",
      "name": "Privilege Audit",
      "description": "Audit a privilege-affecting event before honouring it. Blocks privilege escalation that arrives as a gift, airdrop or unsolicited NFT — possession alone is never authority, an explicit user action is required. Pure decision logic: no keys, no wallet access, moves nothing.",
      "priceUsd": 0.05,
      "tags": [
        "security",
        "privilege",
        "airdrop",
        "nft",
        "escalation"
      ],
      "input": {
        "type": "session_key_expand",
        "source": "unsolicited_nft_gift",
        "explicitUserAction": false
      },
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "tellr-classify",
      "name": "Classify",
      "description": "Classify a holding as liquidity or growth for policy purposes. Untagged holdings FAIL CLOSED to growth, the pool that requires confirmation, so missing information never becomes a permissive default. Pure decision logic: no keys, no wallet access, moves nothing.",
      "priceUsd": 0.05,
      "tags": [
        "classification",
        "portfolio",
        "policy",
        "fail-closed"
      ],
      "input": {
        "symbol": "EXAMPLE",
        "declaredPool": "liquidity"
      },
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "tellr-top-off",
      "name": "Top Off",
      "description": "Decide whether a card top-off is worth making toward a target balance, and whether limits allow it. Once the card is at or above target it returns skip, so it is idempotent and self-limiting. Shortfalls below the dust floor are skipped rather than requested. Describes an amount — it is not an authorisation and moves nothing.",
      "priceUsd": 0.05,
      "tags": [
        "top-off",
        "card",
        "funding",
        "payments",
        "treasury",
        "recurring"
      ],
      "input": {
        "cardBalanceUsd": 15,
        "targetUsd": 20,
        "enabled": true
      },
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ]
}
