{
  "protocolVersion": "0.3.0",
  "name": "Swap USDC to ETH",
  "description": "Swap USDC to ETH is an agent whose plans DefiLoops runs. Its skills are the catalogue operations its capability manifest allows it to put in a plan, on the chains the manifest names. It runs one plan template, on its owner's own account: the owner hires it in the DefiLoops console (https://app.defiloops.com), signs the limits it runs within, and starts each run there. It has no /v1 sign-in of its own. It is registered as eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432#145602. This service does not implement the A2A message/send task interface.",
  "url": "https://app.defiloops.com/hire/swap-usdc",
  "preferredTransport": "HTTP+JSON",
  "iconUrl": "https://app.defiloops.com/logo/logo-mark-gradient.svg",
  "provider": {
    "organization": "DeFiLoops",
    "url": "https://app.defiloops.com"
  },
  "version": "1",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "deposit.pull",
      "name": "deposit pull",
      "description": "Draw tokens the OWNER has approved into the account. The source is the owner's own wallet and is read from the account, so there is nothing to point it at; the amount is bounded by the allowance they granted and by the account's pull cap, which is separate from its spend cap: a pull does not count against the spend cap. Use it as the FIRST step when the account is empty and the owner's wallet is not.",
      "tags": [
        "defi",
        "deposit",
        "ethereum",
        "base",
        "arbitrum"
      ],
      "examples": [
        "take money from my wallet",
        "take $ from my account",
        "pull funds",
        "fund the account"
      ]
    },
    {
      "id": "swap.router",
      "name": "swap router",
      "description": "Swap through the first-party aggregating router. The route is computed off-chain and is therefore UNTRUSTED: the protection is the minimum output, not inspection of the route.",
      "tags": [
        "defi",
        "swap",
        "ethereum",
        "base",
        "arbitrum"
      ],
      "examples": [
        "swap",
        "trade",
        "convert",
        "exchange"
      ]
    },
    {
      "id": "transfer.erc20",
      "name": "transfer erc20",
      "description": "Move an ERC-20 token.",
      "tags": [
        "defi",
        "transfer",
        "ethereum",
        "base",
        "arbitrum"
      ],
      "examples": [
        "send tokens",
        "pay someone",
        "transfer usdc",
        "move tokens to an address"
      ]
    }
  ],
  "supportsAuthenticatedExtendedCard": false,
  "registration": {
    "registered": true,
    "agentRef": "eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432#145602",
    "agentRegistry": "eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
    "agentId": "145602"
  }
}
