{
  "Protocol": "AIXE",
  "Version": "3.03",
  "Site": "MmmmGood",
  "SiteKey": "mmmmgood.com",
  "ProtocolReference": {
    "ProtocolHome": "http://aixeprotocol.com/",
    "CanonicalUsageContract": "http://aixeprotocol.com/usage/?",
    "Whitepaper": "http://aixeprotocol.com/whitepaper/full-spec.html",
    "Inventor": "Gregory Oglethorpe"
  },
  "Purpose": "Create a MmmmGood account, manage your lists, and share lists with other account holders through your AI assistant.",
  "ProtocolEthos": "AI systems are first-class participants. Use these declared capabilities and their live teaching contracts before scraping human pages.",
  "AuthorizedProtocolUse": "Traversing these endpoints for a human-authorized task is intended use. Respect authentication, user consent, and each capability\u0027s business rules.",
  "Instructions": [
    "Read the endpoint\u0027s GET /endpoint/? contract immediately before each action.",
    "Submit business inputs and the freshly loaded AIXEContractVersionKey in the declared POST JSON body.",
    "Only SuccessCode = SUCCESS means the action completed. HTTP status alone is not the business outcome.",
    "Account creation is followed by login. Protected actions require the resulting PersonAuthenticationToken."
  ],
  "Endpoints": [
    {
      "Endpoint": "/aixe/account/create-account/",
      "Method": "POST",
      "Title": "Create An Account",
      "Purpose": "Create the human account owner for MmmmGood using only first name, last name, email, ZIP code, and password. Use this when the person wants to join and does not already have an account. Returns a public PersonKey for their future kitchen data.",
      "AccessType": "Public",
      "GroupName": "Accounts",
      "DiscoveryRequest": "GET /aixe/account/create-account/?"
    },
    {
      "Endpoint": "/aixe/account/login/",
      "Method": "POST",
      "Title": "Log In",
      "Purpose": "Authenticate an active MmmmGood account using the owner\u0027s email and password. Returns a temporary token so the AI can perform protected account actions on their behalf.",
      "AccessType": "Public",
      "GroupName": "Accounts",
      "DiscoveryRequest": "GET /aixe/account/login/?"
    },
    {
      "Endpoint": "/aixe/account/get-profile/",
      "Method": "POST",
      "Title": "Get My Profile",
      "Purpose": "Retrieve the authenticated account owner\u0027s saved name, email, phone, address, and roles. Use this to confirm the signed-in identity or reuse that person\u0027s own contact details; it cannot read another account.",
      "AccessType": "Authenticated",
      "GroupName": "Accounts",
      "DiscoveryRequest": "GET /aixe/account/get-profile/?"
    },
    {
      "Endpoint": "/aixe/account/logout/",
      "Method": "POST",
      "Title": "Log Out",
      "Purpose": "End the current AIXE session when the human is finished. Invalidates the submitted account token so it can no longer retrieve private account information.",
      "AccessType": "Authenticated",
      "GroupName": "Accounts",
      "DiscoveryRequest": "GET /aixe/account/logout/?"
    },
    {
      "Endpoint": "/aixe/lists/create-list/",
      "Method": "POST",
      "Title": "Create A List",
      "Purpose": "Create a personal list, such as Shopping List, HEB, or Costco. The authenticated creator becomes its sole Admin and can manage settings, share access, or delete it.",
      "AccessType": "Authenticated",
      "GroupName": "Lists",
      "DiscoveryRequest": "GET /aixe/lists/create-list/?"
    },
    {
      "Endpoint": "/aixe/lists/list-lists/",
      "Method": "POST",
      "Title": "Find My Lists",
      "Purpose": "Find lists you own and lists shared with you. Use this before selecting a list for reading, editing, or shopping. Returns a bounded page of summaries with your access role.",
      "AccessType": "Authenticated",
      "GroupName": "Lists",
      "DiscoveryRequest": "GET /aixe/lists/list-lists/?"
    },
    {
      "Endpoint": "/aixe/lists/get-list/",
      "Method": "POST",
      "Title": "Get A List",
      "Purpose": "Read one list that you own or that has been shared with you. Returns the list settings and your role so you can determine which actions are available.",
      "AccessType": "Authenticated",
      "GroupName": "Lists",
      "DiscoveryRequest": "GET /aixe/lists/get-list/?"
    },
    {
      "Endpoint": "/aixe/lists/update-list/",
      "Method": "POST",
      "Title": "Update A List",
      "Purpose": "Rename your list or change its description, checkmark behavior, or display order. Only the list owner with Admin access can change these settings.",
      "AccessType": "Authenticated",
      "GroupName": "Lists",
      "DiscoveryRequest": "GET /aixe/lists/update-list/?"
    },
    {
      "Endpoint": "/aixe/lists/delete-list/",
      "Method": "POST",
      "Title": "Delete A List",
      "Purpose": "Permanently delete a list you own, every item it contains, and its item and sharing links. Use only when the owner intends to remove the whole list and its contents.",
      "AccessType": "Authenticated",
      "GroupName": "Lists",
      "DiscoveryRequest": "GET /aixe/lists/delete-list/?"
    },
    {
      "Endpoint": "/aixe/lists/share-list/",
      "Method": "POST",
      "Title": "Share A List",
      "Purpose": "Give another existing MmmmGood account immediate Contributor access to a list you own. Supply their registered email address. No acceptance, invitation, or email sending is involved.",
      "AccessType": "Authenticated",
      "GroupName": "Lists",
      "DiscoveryRequest": "GET /aixe/lists/share-list/?"
    },
    {
      "Endpoint": "/aixe/list-items/create-item/",
      "Method": "POST",
      "Title": "Add A List Item",
      "Purpose": "Add an item to an owned or shared list, optionally including quantity, unit, notes, and display order.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/create-item/?"
    },
    {
      "Endpoint": "/aixe/list-items/list-items/",
      "Method": "POST",
      "Title": "Find List Items",
      "Purpose": "Read a bounded page of items in a list. In checkable lists, unchecked items appear first and checked items follow them.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/list-items/?"
    },
    {
      "Endpoint": "/aixe/list-items/get-item/",
      "Method": "POST",
      "Title": "Read A List Item",
      "Purpose": "Read one item from an owned or shared list, including its quantity, notes, order, and stored check state.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/get-item/?"
    },
    {
      "Endpoint": "/aixe/list-items/update-item/",
      "Method": "POST",
      "Title": "Edit Or Check A List Item",
      "Purpose": "Edit an item\u0027s details or order, check it off, or return it to the unchecked items. Admins and Contributors can edit.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/update-item/?"
    },
    {
      "Endpoint": "/aixe/list-items/delete-item/",
      "Method": "POST",
      "Title": "Remove A List Item",
      "Purpose": "Permanently remove one item and its membership link from an owned or shared list. Use checking off instead if the person wants to keep the item.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/delete-item/?"
    },
    {
      "Endpoint": "/aixe/list-items/move-item/",
      "Method": "POST",
      "Title": "Move A List Item",
      "Purpose": "Move an item between lists you own or can contribute to, such as moving groceries from HEB to Costco.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/move-item/?"
    },
    {
      "Endpoint": "/aixe/list-items/clear-checked-items/",
      "Method": "POST",
      "Title": "Remove Checked Items",
      "Purpose": "Permanently delete all checked items from a checkable list, preserving every unchecked item. Use only when the person intends to remove completed items.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/clear-checked-items/?"
    },
    {
      "Endpoint": "/aixe/list-items/reset-checkmarks/",
      "Method": "POST",
      "Title": "Reset List Checkmarks",
      "Purpose": "Uncheck every checked item in a checkable list so the same list can be reused. No items are deleted.",
      "AccessType": "Authenticated",
      "GroupName": "List Items",
      "DiscoveryRequest": "GET /aixe/list-items/reset-checkmarks/?"
    }
  ]
}