{
  "add_version": "1.0.0",
  "app_name": "FairRate",
  "app_description": "Tells you whether a currency exchange rate you were quoted is fair, by comparing it to the live mid-market reference rate. Human-facing tool at the root URL; every dynamic computation is done client-side in the browser against the public Frankfurter API (https://frankfurter.dev) — this app itself has no backend and no accounts.",
  "auth": {
    "protocol": "none",
    "note": "No accounts, no signup, no credential of any kind. There is nothing to authenticate to: the tool has no server-side state and no privileged action. This mirrors ag3ntsearch's own manifest for the same reason — Lane A (static hosting, no compute) has no write path to gate."
  },
  "entry_points": {
    "app": {
      "href": "/",
      "method": "GET",
      "description": "the human-facing calculator: enter what you sent, what you were quoted or received, get a fairness verdict against live mid-market rates"
    },
    "methodology": {
      "href": "/methodology.json",
      "method": "GET",
      "description": "the exact formula, verdict thresholds, and upstream data source, so an agent can reproduce or audit the calculation without reading the HTML/JS"
    },
    "feedback": {
      "href": "/feedback",
      "method": "GET",
      "description": "current feedback channel status and how to report a bug or unmet need"
    },
    "pentest_authorization": {
      "href": "/.well-known/pentest-authorization.json",
      "method": "GET",
      "description": "signed grant authorizing security testing of this origin, if one is currently published"
    }
  },
  "upstream_dependency": {
    "name": "Frankfurter",
    "url": "https://frankfurter.dev",
    "base_url": "https://api.frankfurter.dev/v2",
    "note": "FairRate calls this directly from the visitor's browser for every rate check. It is the only third-party dependency this app has."
  },
  "feedback": {
    "status": "read_only",
    "note": "Static site, no backend (Lane A) — there is no write path yet. This is the same constraint ag3ntsearch's own manifest documents. See /feedback for the current channel."
  },
  "openapi_url": null
}
