{
  "name": "Example Freight (demo)",
  "description": "Illustrative demo tenant of Emissar Front Door, with made-up data. Example Freight is not a real company: quotes, order statuses and delivery-exception options come from an in-process demo backend, and every result is labeled Demo data. Skills are selected explicitly: put \"skill\" in message.metadata or in a data part.",
  "supportedInterfaces": [
    {
      "url": "https://demo.frontdoor.emissar.ai/a2a/v1",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Emissar",
    "url": "https://emissar.ai/product/front-door"
  },
  "version": "0.1.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": false,
    "extensions": [
      {
        "uri": "https://emissar.ai/ext/receipt/v1",
        "description": "Issues a signed Emissar Receipt as an artifact when a task that activated this extension reaches a terminal state.",
        "required": false,
        "params": {
          "receiptApi": "https://demo.frontdoor.emissar.ai/receipts/v0",
          "jku": "https://demo.frontdoor.emissar.ai/.well-known/emissar-frontdoor-jwks.json",
          "algs": [
            "Ed25519",
            "ES256"
          ],
          "digestAlgs": [
            "sha-256"
          ],
          "countersignWindowSeconds": 86400
        }
      }
    ]
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "request_quote",
      "name": "Request a freight quote (demo)",
      "description": "Returns an illustrative freight quote. Demo data: made-up tariff, not an offer. Send a data part with skill, origin, destination, weightKg, pallets and pickupDate (YYYY-MM-DD). Missing fields return TASK_STATE_INPUT_REQUIRED; send them on the same task. Quotes over 10,000 USD go to human review: the task stays TASK_STATE_WORKING, and in this demo a simulated reviewer approves about 20 seconds later (poll GetTask).",
      "tags": [
        "freight",
        "quote",
        "logistics",
        "demo"
      ],
      "examples": [
        "{\"skill\":\"request_quote\",\"origin\":\"Chicago, IL\",\"destination\":\"Toronto, ON\",\"weightKg\":5200,\"pallets\":10,\"pickupDate\":\"2026-10-15\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "order_status",
      "name": "Check an order status (demo)",
      "description": "Returns an illustrative status for an order id. Demo data: the status is made up from the id. Send a data part with skill and orderId.",
      "tags": [
        "freight",
        "order-status",
        "tracking",
        "demo"
      ],
      "examples": [
        "{\"skill\":\"order_status\",\"orderId\":\"EF-10442\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "delivery_exception",
      "name": "Report a delivery exception (demo)",
      "description": "Returns illustrative resolution options for a delivery exception. Demo data. Send a data part with skill, shipmentId and exceptionType (damaged, delayed, refused, shortage or address_issue). Without exceptionType the task returns TASK_STATE_INPUT_REQUIRED; send it on the same task.",
      "tags": [
        "freight",
        "delivery-exception",
        "claims",
        "demo"
      ],
      "examples": [
        "{\"skill\":\"delivery_exception\",\"shipmentId\":\"EF-S-20931\",\"exceptionType\":\"damaged\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    },
    {
      "id": "request_refund",
      "name": "Request a refund for a delivery (demo)",
      "description": "Asks Example Freight for an illustrative refund on a damaged, missing or late delivery. Demo data: nothing is refunded. Send orderId, reason (damaged, missing or late), amount (in USD, at most 5,000) and customer with at least an email. The demo then asks for the one-time code it says it sent to that email (no email is sent; the reply gives the code), and refunds over 200 USD wait for a person's review: a simulated reviewer approves about 20 seconds later.",
      "tags": [
        "refund",
        "customer-service",
        "personal-agents",
        "demo"
      ],
      "examples": [
        "{\"skill\":\"request_refund\",\"orderId\":\"EF-10442\",\"reason\":\"damaged\",\"amount\":180,\"customer\":{\"name\":\"Sam Example\",\"email\":\"sam@example.com\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ]
    }
  ],
  "documentationUrl": "https://emissar.ai/product/front-door"
}