{
  "$schema": "https://agent-permissions.org/schema/v1.json",
  "version": "1.0",
  "publisher": {
    "name": "ArcSync",
    "site": "https://arcsync.dev",
    "contact": "founder@arcsync.dev"
  },
  "agents": {
    "default": {
      "allowed": true,
      "rateLimit": {
        "requestsPerMinute": 30,
        "concurrentRequests": 4
      },
      "preferredEntryPoints": ["/llms.txt", "/llms-full.txt", "/agents.md", "/skill.md"],
      "preferredFormat": "markdown",
      "humanInTheLoop": {
        "required": false,
        "notes": "Public read access. Authenticated write endpoints follow the API rules below."
      }
    },
    "ClaudeBot": { "allowed": true },
    "GPTBot": { "allowed": true },
    "Google-Extended": { "allowed": true },
    "PerplexityBot": { "allowed": true }
  },
  "api": {
    "baseUrl": "https://api.arcsync.dev",
    "auth": "Bearer token (Auth0). Public gallery endpoints require no auth.",
    "publicEndpoints": [
      { "method": "GET", "path": "/gallery", "humanInTheLoop": false },
      { "method": "GET", "path": "/gallery/{id}", "humanInTheLoop": false }
    ],
    "authenticatedEndpoints": [
      {
        "method": "POST",
        "path": "/graphs/generate",
        "humanInTheLoop": false,
        "notes": "Async; poll /graphs/{id}/status."
      },
      { "method": "POST", "path": "/graphs/ingest", "humanInTheLoop": false },
      { "method": "GET", "path": "/graphs", "humanInTheLoop": false },
      { "method": "GET", "path": "/graphs/{id}", "humanInTheLoop": false },
      { "method": "PUT", "path": "/graphs/{id}/overrides", "humanInTheLoop": false },
      {
        "method": "PUT",
        "path": "/graphs/{id}/visibility",
        "humanInTheLoop": true,
        "notes": "Toggling private to public exposes user content — confirm with the user first."
      },
      {
        "method": "DELETE",
        "path": "/graphs/{id}",
        "humanInTheLoop": true,
        "notes": "Soft delete with 30-day TTL — confirm with the user first."
      }
    ]
  },
  "writeOperations": {
    "billing": {
      "humanInTheLoop": true,
      "notes": "Subscription changes, plan upgrades, and trial starts require explicit user confirmation via Stripe Checkout."
    }
  }
}
