{
  "endpoint": "https://tracert.site/api/registry/submit",
  "method": "POST",
  "enabled": true,
  "body": {
    "manifest": "TRACE manifest as a JSON object (schema: https://tracert.site/schemas/manifest/v0.1); provider.url is required",
    "input_schema": "JSON Schema for the capability input",
    "output_schema": "JSON Schema for the capability output",
    "submitted_by": "optional identifier for attribution"
  },
  "ownership_required": {
    "how": "Prove you control the provider.url domain: host a file at https://<provider.url-host>/.well-known/tracert.json",
    "file": {
      "provider": "<your provider id>",
      "capabilities": [
        "<capability id you are publishing>",
        "…"
      ]
    },
    "why": "One static file (no DNS needed) authorizes exactly the capabilities you list. It's checked before any PR is opened."
  },
  "limits": "Rate-limited per provider and globally. Payloads over 256 KB are rejected.",
  "admin_path": "Maintainers submit wrapper capabilities (provenance unofficial/byok, third-party provider) with an X-Tracert-Admin-Key header, which skips the ownership + rate-limit gates. Not available to the public.",
  "behavior": "Validates server-side and verifies domain ownership; on success a Tracert bot opens a pull request from a same-repo branch (no fork needed). CI re-validates and, if it passes, the PR is squash-merged automatically — no human review queue. Returns 201 with pr_url.",
  "guide": "https://github.com/tracert-network/tracert/blob/main/registry/CONTRIBUTING.md"
}