{"app":{"handle":"theme","name":"Theme Maestro"},"available":true,"endpoint":"https:\/\/api.sappo.xco.agency\/theme\/mcp","protocolVersions":["2025-11-25","2025-06-18","2025-03-26","2024-11-05"],"server":{"name":"Theme Maestro","version":"1.0.0"},"instructions":"Theme Maestro MCP server for accessing scheduled theme data from Shopify stores.\n\nThe store is identified automatically from your API token.\n\nAvailable tools:\n- `list_scheduled_themes`: List scheduled theme publish events with optional status\/type filters\n- `get_scheduled_theme`: Get a specific scheduled theme event by ID\n- `list_publish_history`: List published theme history with pagination","auth":{"tokenPrefix":"mak_","header":"Authorization","scheme":"Bearer","whereToGet":"Open the app in your Shopify admin, go to Settings \u2192 API Access, and create a token. The full token is shown once, at creation time; afterwards only its first 12 characters are stored in readable form. If that card is locked, API access is not included in your current plan and the app will not create a token until the plan changes. At most three tokens can be active at once, so revoke one you no longer use before creating another.","plan":{"required":false,"plans":[]}},"clientConfig":{"claudeDesktop":{"mcpServers":{"sappo-theme":{"type":"http","url":"https:\/\/api.sappo.xco.agency\/theme\/mcp","headers":{"Authorization":"Bearer mak_your_token_here"}}}},"cli":"claude mcp add --transport http sappo-theme https:\/\/api.sappo.xco.agency\/theme\/mcp --header \"Authorization: Bearer mak_your_token_here\""},"tools":[{"name":"list_scheduled_themes","title":"List Scheduled Themes Tool","description":"List scheduled theme publish events for a Shopify store. Returns paginated theme schedules.","inputSchema":{"properties":{"page":{"description":"Page number (default: 1)","type":"integer"},"page_size":{"description":"Items per page, max 100 (default: 25)","type":"integer"},"status":{"description":"Filter by status: 0=pending, 1=published, 2=in progress (recurring), 3=failed, 4=skipped, 5=stopped, 6=publishing","type":"integer"},"type":{"description":"Filter by schedule type","enum":["content","canvas","publish","flow"],"type":"string"}},"type":"object"},"examplePrompt":"Show me the scheduled themes."},{"name":"get_scheduled_theme","title":"Get Scheduled Theme Tool","description":"Get a single scheduled theme event by ID for a Shopify store.","inputSchema":{"properties":{"id":{"description":"Scheduled theme ID","type":"integer"}},"type":"object","required":["id"]},"examplePrompt":"Give me the details of a scheduled theme."},{"name":"list_publish_history","title":"List Publish History Tool","description":"List theme publish history for a Shopify store using Theme Maestro.","inputSchema":{"properties":{"page":{"description":"Page number (default: 1)","type":"integer"},"page_size":{"description":"Items per page, max 100 (default: 25)","type":"integer"}},"type":"object"},"examplePrompt":"Show me the publish history."}],"errors":[{"status":401,"code":"MISSING_TOKEN","message":"Authorization header with Bearer token is required.","whatToDo":"Send an `Authorization: Bearer mak_\u2026` header. This code also appears when the header is present but does not start with `Bearer ` \u2014 a bare token or a `Token \u2026` prefix is not accepted."},{"status":401,"code":"INVALID_TOKEN","message":"Token is invalid, expired, or revoked.","whatToDo":"Check the token was copied in full, is still listed as active in Settings \u2192 API Access, and has not passed its expiry date. Create a new token if in doubt. The same code is returned when the store is suspended."},{"status":403,"code":"PLAN_REQUIRED","message":"API access is not included in the current plan.","whatToDo":"The token is valid, but this app sells API access on named plans only and this store is not on one of them. The plans that carry it are listed under **Authentication** above; change the plan in the app and the same token starts working \u2014 there is no need to create a new one."},{"status":404,"code":"APP_NOT_FOUND","message":"App not found.","whatToDo":"The app handle in the path is not one Sappo serves. Use the handle this documentation was generated for, and check for a typo or a stray path segment."},{"status":429,"code":"RATE_LIMITED","message":"Too many requests. Please slow down.","whatToDo":"Wait the number of seconds in the `Retry-After` header before retrying, and keep each client under 60 requests per 60 seconds. Fetch more records per request instead of making more requests."},{"status":503,"code":"API_NOT_AVAILABLE","message":"The API is not available for this app yet.","whatToDo":"The app is served but its store of API tokens has not been created yet, so no token can be checked. Nothing is wrong with your request: retry later, and tell support if it lasts."}],"throttle":{"requests":60,"windowSeconds":60,"scope":"client address","message":"Too Many Attempts.","headers":["X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset","Retry-After"]}}