{
  "schemaVersion": 1,
  "protocol": "possible-static-agent",
  "title": "Possible static agent protocol",
  "static": true,
  "source": {
    "corpusIndexUrl": "/wiki/index.json",
    "humanPages": "/wiki/{slug}",
    "repository": "https://github.com/fraylabs/possible"
  },
  "operations": {
    "search": {
      "method": "GET",
      "path": "/agent/search.json",
      "request": {
        "query": null,
        "body": null
      },
      "response": {
        "contentType": "application/json",
        "schema": "AgentSearchIndex"
      },
      "notes": [
        "This is a static search index; query parameters are not evaluated by the deployment.",
        "Normalize and rank locally using the search configuration and fields in the response.",
        "Require every meaningful query term to match, then apply the documented weights and limit.",
        "For an outcome-like query, rank kind: outcome pages before supporting methods, providers, concepts, and other page kinds.",
        "Treat aliases as contributor-authored vocabulary, not generated synonyms.",
        "Report no-maintained-route when no exact or authored route is supported by the retrieved pages; do not turn similarity into a claim."
      ]
    },
    "read": {
      "method": "GET",
      "path": "/agent/read/{slug}.json",
      "request": {
        "query": null,
        "body": null
      },
      "response": {
        "contentType": "application/json",
        "schema": "AgentReadDocument"
      },
      "notes": [
        "The slug must be one returned by the search index or the canonical wiki index.",
        "The page body, review date, sources, links, backlinks, and related pages come from the validated corpus."
      ]
    },
    "related": {
      "method": "GET",
      "path": "/agent/related/{slug}.json",
      "request": {
        "query": null,
        "body": null
      },
      "response": {
        "contentType": "application/json",
        "schema": "AgentRelatedDocument"
      },
      "notes": [
        "Related pages are derived only from the page's outgoing links and backlinks.",
        "Each related page includes its review date and source URLs for inspection."
      ]
    }
  },
  "contracts": {
    "pageReference": [
      "slug",
      "title",
      "summary",
      "tags",
      "aliases",
      "kind",
      "coverage",
      "routeStatus",
      "reviewedAt",
      "sources",
      "links",
      "humanUrl",
      "jsonUrl",
      "readUrl",
      "relatedUrl"
    ],
    "read": [
      "schemaVersion",
      "operation",
      "humanUrl",
      "page",
      "backlinks",
      "relatedPages"
    ],
    "related": [
      "schemaVersion",
      "operation",
      "slug",
      "humanUrl",
      "page",
      "relatedPages"
    ],
    "search": [
      "schemaVersion",
      "operation",
      "static",
      "request",
      "corpus",
      "search",
      "pages"
    ]
  }
}
