{
  "$schema": "https://modelcontextprotocol.io/schemas/draft/2025-06-18/server.json",
  "name": "frameid",
  "displayName": "FrameID",
  "description": "Australia's registry for bikes, e-bikes and light vehicles. Look up a bike by Frame ID, serial or plate, check the stolen register, search the model and parts archive, explain e-bike fault codes, estimate second-hand value, and (signed in) manage your own bikes.",
  "documentation": "https://frameid.org/for/mcp",
  "privacyPolicy": "https://frameid.org/privacy",
  "termsOfService": "https://frameid.org/terms",
  "contact": "https://frameid.org/contact",
  "version": "1.0.0",
  "protocolVersion": "2025-06-18",
  "remotes": [
    {
      "type": "streamable-http",
      "transport": "streamable-http",
      "url": "https://vvtwoeixlmawcngwvxkz.supabase.co/functions/v1/mcp"
    }
  ],
  "authentication": {
    "type": "optional",
    "anonymous": "Public tools work with no credentials at all. Just connect and call them.",
    "signIn": "For account tools, call the frameid_sign_in tool with the user's FrameID email and password, then pass the returned access token as the Authorization: Bearer <token> header on later requests."
  },
  "tools": [
    { "name": "frameid_lookup_bike", "access": "public", "description": "Find a bike by Frame ID, frame serial or registration plate and return its public record." },
    { "name": "frameid_check_stolen", "access": "public", "description": "Say whether a bike is on the stolen register, and where it was reported." },
    { "name": "frameid_search_archive", "access": "public", "description": "Search the bike model archive by brand, model and year." },
    { "name": "frameid_get_archive_model", "access": "public", "description": "Return one archive model with specifications and compliance notes." },
    { "name": "frameid_search_components", "access": "public", "description": "Search motors, batteries, controllers, displays and tyres in the parts archive." },
    { "name": "frameid_lookup_fault_codes", "access": "public", "description": "Explain an e-bike display fault code, with likely causes and fixes." },
    { "name": "frameid_estimate_value", "access": "public", "description": "Estimate a second-hand value from comparable Australian marketplace listings." },
    { "name": "frameid_sign_in", "access": "public", "description": "Sign in with a FrameID email and password and return a session token for the account tools." },
    { "name": "frameid_my_bikes", "access": "account", "description": "List the bikes registered to the signed-in account." },
    { "name": "frameid_get_my_bike", "access": "account", "description": "Return one of the account holder's bikes in full, including service history." },
    { "name": "frameid_my_transfers", "access": "account", "description": "List ownership transfers involving the signed-in account." },
    { "name": "frameid_report_stolen", "access": "write", "description": "Put one of the account holder's own bikes on the stolen register." },
    { "name": "frameid_report_sighting", "access": "write", "description": "Record a sighting of a bike on the register." },
    { "name": "frameid_register_bike", "access": "write", "description": "Register a new bike to the signed-in account." }
  ],
  "usageNotes": [
    "Public responses never include owner identity, contact details, prices or internal notes.",
    "Confirm with the user before calling any write tool (report stolen, report sighting, register a bike).",
    "Rate limits: 240 requests per IP per minute, 10 sign-in attempts per IP per 5 minutes, 20 writes per account per hour."
  ]
}
