{
  "version": 1,
  "about": "Layout contract for Agent Tools: one true SaaS layout with 6 regions (rail, sidebar, tabs, main, panel, status) and stable data-* ids for agents.",
  "selectors": {
    "route": "[data-route=\"<route id>\"] wraps the current screen; check it after every navigation",
    "region": "[data-region=\"<region id>\"]",
    "tab": "[data-tab=\"<tab id>\"]; the current one has data-active=\"true\"",
    "action": "[data-action=\"<action id>\"]; for forms fill [name=\"<field>\"] inside it, then click its [type=\"submit\"]. Actions with a when are present only in that state",
    "item": "[data-item=\"<kind>\"][data-item-id=\"<id>\"][data-item-name=\"<name>\"]; the same item can show in sidebar and main, so scope by [data-region]",
    "empty": "[data-empty=\"<empty state id>\"]",
    "current": "[data-item=\"plan\"][data-current=\"true\"] is the plan in force; the status.plan link shows its name on every dashboard screen",
    "active": "the rail link of the current section, the sidebar link of the current page or item, and the current tab have data-active=\"true\""
  },
  "auth": {
    "any": "open to everyone without authentication"
  },
  "regions": [
    {
      "id": "rail",
      "purpose": "Left rail: one icon per section, the account avatar at the bottom. Present on every dashboard screen."
    },
    {
      "id": "sidebar",
      "purpose": "Items inside the current section (files, settings pages). Absent when a section has no items."
    },
    {
      "id": "tabs",
      "purpose": "Alternate views of the current screen, kept in the URL search string. Absent when a screen has one view."
    },
    {
      "id": "main",
      "purpose": "The work area: page header, content, primary actions, empty states."
    },
    {
      "id": "panel",
      "purpose": "Right panel: details and context for the current screen or selection. Stacks under main on small screens."
    },
    {
      "id": "status",
      "purpose": "Bottom bar: environment, signed-in account, links for agents. Present on every dashboard screen."
    }
  ],
  "sections": [
    {
      "id": "home",
      "label": "Home",
      "route": "home"
    },
    {
      "id": "integrations",
      "label": "Guides",
      "route": "integrations"
    },
    {
      "id": "roles",
      "label": "Roles",
      "route": "roles"
    },
    {
      "id": "glossary",
      "label": "Glossary",
      "route": "glossary"
    },
    {
      "id": "support",
      "label": "Support",
      "route": "support"
    }
  ],
  "routes": [
    {
      "id": "home",
      "path": "/",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ]
    },
    {
      "id": "integrations",
      "path": "/integrations",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "integrations"
    },
    {
      "id": "integration.guide",
      "path": "/integrations/$plugin/$client",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "integrations",
      "params": {
        "plugin": "plugin slug",
        "client": "client slug"
      }
    },
    {
      "id": "answers",
      "path": "/answers",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "integrations"
    },
    {
      "id": "answer.guide",
      "path": "/answers/$plugin",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "integrations",
      "params": {
        "plugin": "plugin slug"
      }
    },
    {
      "id": "roles",
      "path": "/for",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "roles"
    },
    {
      "id": "role.guide",
      "path": "/for/$persona",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "roles",
      "params": {
        "persona": "persona slug"
      }
    },
    {
      "id": "glossary",
      "path": "/glossary",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "glossary"
    },
    {
      "id": "privacy",
      "path": "/privacy",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ]
    },
    {
      "id": "terms",
      "path": "/terms",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ]
    },
    {
      "id": "support",
      "path": "/support",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ],
      "section": "support"
    },
    {
      "id": "unlisted.match-desk",
      "path": "/unlisted/match-desk",
      "regions": [
        "rail",
        "tabs",
        "main",
        "panel",
        "status"
      ]
    },
    {
      "id": "unlisted.managed-agents",
      "path": "/unlisted/managed-agents",
      "regions": [
        "main",
        "status"
      ]
    }
  ],
  "tabs": [
    {
      "id": "view.overview",
      "route": "home",
      "label": "Overview",
      "search": {}
    },
    {
      "id": "view.all-guides",
      "route": "integrations",
      "label": "All Guides",
      "search": {}
    },
    {
      "id": "view.all-roles",
      "route": "roles",
      "label": "All Roles",
      "search": {}
    },
    {
      "id": "view.glossary",
      "route": "glossary",
      "label": "All Terms",
      "search": {}
    }
  ],
  "actions": [
    {
      "id": "nav.home",
      "region": "rail",
      "kind": "link",
      "label": "Home",
      "goes": "/"
    },
    {
      "id": "nav.integrations",
      "region": "rail",
      "kind": "link",
      "label": "Guides",
      "goes": "/integrations"
    },
    {
      "id": "nav.roles",
      "region": "rail",
      "kind": "link",
      "label": "Roles",
      "goes": "/for"
    },
    {
      "id": "nav.glossary",
      "region": "rail",
      "kind": "link",
      "label": "Glossary",
      "goes": "/glossary"
    },
    {
      "id": "nav.support",
      "region": "rail",
      "kind": "link",
      "label": "Support",
      "goes": "/support"
    },
    {
      "id": "status.llms",
      "region": "status",
      "kind": "link",
      "label": "llms.txt",
      "goes": "/llms.txt"
    },
    {
      "id": "status.layout",
      "region": "status",
      "kind": "link",
      "label": "layout.json",
      "goes": "/layout.json"
    },
    {
      "id": "status.privacy",
      "region": "status",
      "kind": "link",
      "label": "Privacy",
      "goes": "/privacy"
    },
    {
      "id": "status.terms",
      "region": "status",
      "kind": "link",
      "label": "Terms",
      "goes": "/terms"
    },
    {
      "id": "status.support",
      "region": "status",
      "kind": "link",
      "label": "Support",
      "goes": "/support"
    },
    {
      "id": "status.integrations",
      "region": "status",
      "kind": "link",
      "label": "MCP install guides",
      "goes": "/integrations"
    },
    {
      "id": "status.for",
      "region": "status",
      "kind": "link",
      "label": "Roles",
      "goes": "/for"
    },
    {
      "id": "status.glossary",
      "region": "status",
      "kind": "link",
      "label": "MCP glossary",
      "goes": "/glossary"
    },
    {
      "id": "panel.llms",
      "region": "panel",
      "kind": "link",
      "label": "llms.txt specification",
      "goes": "/llms.txt"
    },
    {
      "id": "panel.layout",
      "region": "panel",
      "kind": "link",
      "label": "Layout manifest",
      "goes": "/layout.json"
    },
    {
      "id": "panel.guides",
      "region": "panel",
      "kind": "link",
      "label": "All install guides",
      "goes": "/integrations"
    },
    {
      "id": "panel.roles",
      "region": "panel",
      "kind": "link",
      "label": "All role guides",
      "goes": "/for"
    }
  ],
  "items": [],
  "emptyStates": []
}
