{
  "protocolVersion": "0.3.0",
  "name": "Parks.ai Park Scene Agent",
  "description": "Governed spatial interpretation and stewardship agent for parks: observation context, reusable immersive scenes, and Five T's stewardship actions. All chargeable or publishable work passes through authorization, provenance, budget, cache and human approval layers.",
  "url": "https://parks.ai/api/a2a",
  "preferredTransport": "JSONRPC",
  "provider": {
    "organization": "Parks.ai",
    "url": "https://parks.ai"
  },
  "version": "1.0.0",
  "documentationUrl": "https://parks.ai/developers",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "stateTransitionHistory": true
  },
  "defaultInputModes": ["application/json", "text/plain", "image/jpeg", "image/png", "video/mp4"],
  "defaultOutputModes": ["application/json", "image/jpeg", "text/html"],
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "description": "OAuth 2.0 client credentials in production.",
      "flows": {
        "clientCredentials": {
          "tokenUrl": "https://parks.ai/api/a2a/oauth/token",
          "scopes": {
            "scene.read": "Read existing scenes and park context",
            "scene.request": "Request scene generation subject to human approval",
            "observation.submit": "Submit trail observations"
          }
        }
      }
    },
    "demoToken": {
      "type": "http",
      "scheme": "bearer",
      "description": "Demo bearer token, development environments only."
    }
  },
  "security": [{ "oauth2": ["scene.read"] }],
  "skills": [
    {
      "id": "get_park_context",
      "name": "Get park context",
      "description": "Return park facts, alerts and the latest observation provenance for a park.",
      "tags": ["parks", "context"],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"]
    },
    {
      "id": "find_existing_scene",
      "name": "Find existing scene",
      "description": "Look up a cached immersive scene by park, type and input hash. Returns cached artifacts at zero cost.",
      "tags": ["scenes", "cache"],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"]
    },
    {
      "id": "request_accessibility_preview",
      "name": "Request accessibility preview",
      "description": "Request an AI visualization for route familiarization. Never establishes ADA accessibility, safety or open/closed status.",
      "tags": ["scenes", "accessibility"],
      "inputModes": ["application/json", "image/jpeg", "image/png"],
      "outputModes": ["application/json", "image/jpeg", "text/html"]
    },
    {
      "id": "request_ecology_scene",
      "name": "Request ecology education scene",
      "description": "Request an interpretive ecology scene from an observation.",
      "tags": ["scenes", "education"],
      "inputModes": ["application/json", "image/jpeg", "image/png"],
      "outputModes": ["application/json", "text/html"]
    },
    {
      "id": "request_historic_interpretation",
      "name": "Request historic interpretation",
      "description": "Request a historic interpretation scene, clearly labelled AI generated.",
      "tags": ["scenes", "history"],
      "inputModes": ["application/json", "image/jpeg", "image/png"],
      "outputModes": ["application/json", "text/html"]
    },
    {
      "id": "request_design_review",
      "name": "Request proposed design review",
      "description": "Request a proposed-design scene for public consultation.",
      "tags": ["scenes", "design"],
      "inputModes": ["application/json", "image/jpeg", "image/png"],
      "outputModes": ["application/json", "text/html"]
    },
    {
      "id": "submit_trail_observation",
      "name": "Submit trail observation",
      "description": "Submit a community trail observation. Stored as community_reported until reviewed.",
      "tags": ["observations"],
      "inputModes": ["application/json", "image/jpeg", "image/png", "video/mp4"],
      "outputModes": ["application/json"]
    },
    {
      "id": "get_scene_status",
      "name": "Get scene status",
      "description": "Poll the state of a submitted scene task, including cost and provenance.",
      "tags": ["scenes", "tasks"],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"]
    }
  ],
  "governance": {
    "external_agents_may_write_database": false,
    "external_agents_may_call_world_labs": false,
    "external_agents_may_declare_official": false,
    "external_agents_may_verify_accessibility_or_safety": false,
    "external_agents_may_approve_spend": false,
    "external_agents_may_publish": false,
    "human_approval_required_for_chargeable_work": true
  }
}
