{
  "specVersion": "1.0",
  "host": {
    "displayName": "AsyncSwap",
    "identifier": "did:web:app.asyncswap.org",
    "description": "Asynchronous limit orders on Uniswap v4 for large swaps: makers set the price, fillers settle on-chain.",
    "url": "https://app.asyncswap.org"
  },
  "entries": [
    {
      "identifier": "urn:air:app.asyncswap.org:server:orderbook",
      "displayName": "AsyncSwap order book MCP server",
      "description": "Read-only MCP tools: indexer status, pools, open and historical orders, lifecycle events, on Unichain (130) and Arc (5042).",
      "type": "application/mcp-server-card+json",
      "url": "https://app.asyncswap.org/.well-known/mcp/server-card.json",
      "representativeQueries": [
        "list the open AsyncSwap orders on Unichain",
        "which pools does the AsyncSwap hook run on",
        "show the lifecycle events of order 0x…",
        "is the AsyncSwap indexer caught up to chain head"
      ]
    },
    {
      "identifier": "urn:air:app.asyncswap.org:api:public",
      "displayName": "AsyncSwap public API (OpenAPI 3.1)",
      "description": "REST and WebSocket endpoints over the order book; no authentication.",
      "type": "application/openapi+json",
      "url": "https://api.asyncswap.org/openapi.json",
      "representativeQueries": [
        "fetch open orders for chainId 130 as JSON",
        "subscribe to order updates over WebSocket",
        "get candles for a pool"
      ]
    },
    {
      "identifier": "urn:air:app.asyncswap.org:skill:fill-asyncswap-orders",
      "displayName": "Skill: fill AsyncSwap orders",
      "description": "How a filler agent reads the book, verifies on-chain, prices the fill and calls Router.fillOrder.",
      "type": "text/markdown",
      "url": "https://app.asyncswap.org/.well-known/agent-skills/fill-asyncswap-orders/SKILL.md",
      "representativeQueries": [
        "how do I fill an AsyncSwap order and earn the spread",
        "what does a filler pay on top of amountOutMin"
      ]
    },
    {
      "identifier": "urn:air:app.asyncswap.org:skill:place-asyncswap-order",
      "displayName": "Skill: place an AsyncSwap order",
      "description": "EIP-712 messages and calldata for a maker to create, reprice and cancel orders from its own wallet.",
      "type": "text/markdown",
      "url": "https://app.asyncswap.org/.well-known/agent-skills/place-asyncswap-order/SKILL.md",
      "representativeQueries": [
        "sell a large position at my own price on Arc",
        "how do I sign a Permit2 witness for an AsyncSwap order",
        "cancel my AsyncSwap order"
      ]
    },
    {
      "identifier": "urn:air:app.asyncswap.org:doc:capabilities",
      "displayName": "What agents can do with AsyncSwap",
      "description": "Capabilities available today (read the book, place and fill orders from your own wallet) and the roadmap (agent accounts, A2A fills, private orders, multi-hop), kept apart.",
      "type": "text/markdown",
      "url": "https://app.asyncswap.org/capabilities.md",
      "representativeQueries": [
        "can an AI agent trade on AsyncSwap",
        "does AsyncSwap support agent-to-agent fills or private orders",
        "what is on the AsyncSwap roadmap for agents"
      ]
    },
    {
      "identifier": "urn:air:app.asyncswap.org:doc:llms-full",
      "displayName": "AsyncSwap full reference for agents",
      "description": "Protocol orientation, order lifecycle, fees, signing, contract addresses and the API surface in one file.",
      "type": "text/plain",
      "url": "https://app.asyncswap.org/llms-full.txt",
      "representativeQueries": [
        "what is AsyncSwap and how does it differ from a pool swap",
        "AsyncSwap contract addresses per chain"
      ]
    }
  ]
}