{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://dev.agentonomy.xyz/mcp/third-party/docs/downloads/partner-request.schema.json",
  "title": "Agentonomy third-party public application v0.1",
  "description": "Public application only, not a registration endpoint or an authorization grant. Never include tokens, code/state, signatures, passwords, client secrets or private keys. The offline validator additionally rejects placeholder/local domains and requires exact HTTPS callback URIs without query or fragment. Callback domain control and platform identity are verified manually before approval.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "version",
    "platform_name",
    "platform_origin",
    "redirect_uris",
    "access_profile",
    "offline_access",
    "networks",
    "technical_contact"
  ],
  "properties": {
    "version": {
      "const": 1
    },
    "platform_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "platform_origin": {
      "type": "string",
      "maxLength": 2048,
      "format": "uri",
      "pattern": "^https://[A-Za-z0-9.-]+(?::[0-9]+)?$"
    },
    "redirect_uris": {
      "type": "array",
      "minItems": 1,
      "maxItems": 10,
      "uniqueItems": true,
      "description": "Exact case-sensitive callback strings. HTTPS only; no wildcard, query, fragment, localhost, credentials or placeholder. Register each actual platform callback separately.",
      "items": {
        "type": "string",
        "format": "uri",
        "maxLength": 2048,
        "pattern": "^https://[^/?#@*\\\\]+(?:/[^?#*<>\\\\]*)?$"
      }
    },
    "access_profile": {
      "enum": [
        "read",
        "purchase"
      ],
      "description": "read => account:read marketplace:read purchases:read. purchase => account:read marketplace:read marketplace:purchase purchases:read purchases:recover. Purchase scope is a tool ceiling, not a Mandate, allowance or confirmation. User consent may reduce the requested scope."
    },
    "offline_access": {
      "type": "boolean",
      "description": "Adds offline_access to the approved ceiling. Refresh tokens are issued only if the user also consents. It does not grant purchase permission."
    },
    "networks": {
      "type": "array",
      "minItems": 1,
      "maxItems": 2,
      "uniqueItems": true,
      "items": {
        "enum": [
          "eip155:80002",
          "eip155:8453"
        ]
      }
    },
    "technical_contact": {
      "type": "string",
      "format": "email",
      "maxLength": 254,
      "description": "Public integration/support email, not a login credential."
    }
  }
}
