{"app":{"handle":"ordly","name":"Ordly"},"available":true,"endpoint":"https:\/\/api.sappo.xco.agency\/ordly\/mcp","protocolVersions":["2025-11-25","2025-06-18","2025-03-26","2024-11-05"],"server":{"name":"Ordly","version":"1.0.0"},"instructions":"Sheet syncs and sync activity for the authenticated shop.\n\nThe store is identified automatically from your API token.\n\nAvailable tools:\n- `list_sheet_syncs`: List sheet syncs\n- `get_sheet_sync`: Get one sheet sync by id\n- `list_sync_activities`: List sync activities\n- `get_sync_activity`: Get one sync activity by id\n\nEvery `list_` tool takes `page` and `page_size` (25 by default, 100 at most) and\nreturns the page plus `meta.total`. Every `get_` tool takes the record `id`.\nEverything is read-only: changes are made in the app, never through this server.","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-ordly":{"type":"http","url":"https:\/\/api.sappo.xco.agency\/ordly\/mcp","headers":{"Authorization":"Bearer mak_your_token_here"}}}},"cli":"claude mcp add --transport http sappo-ordly https:\/\/api.sappo.xco.agency\/ordly\/mcp --header \"Authorization: Bearer mak_your_token_here\""},"tools":[{"name":"list_sheet_syncs","title":"List Sheet Syncs Tool","description":"List sheet syncs for the authenticated shop.","inputSchema":{"properties":{"page":{"description":"Page number, starting at 1","type":"integer"},"page_size":{"description":"Page size, maximum 100","type":"integer"}},"type":"object"},"examplePrompt":"Show me the sheet syncs."},{"name":"get_sheet_sync","title":"Get Sheet Sync Tool","description":"Get one sheet sync by id for the authenticated shop.","inputSchema":{"properties":{"id":{"description":"Record id","type":"string"}},"type":"object","required":["id"]},"examplePrompt":"Give me the details of a sheet sync."},{"name":"list_sync_activities","title":"List Sync Activities Tool","description":"List sync activities for the authenticated shop.","inputSchema":{"properties":{"page":{"description":"Page number, starting at 1","type":"integer"},"page_size":{"description":"Page size, maximum 100","type":"integer"}},"type":"object"},"examplePrompt":"Show me the sync activities."},{"name":"get_sync_activity","title":"Get Sync Activity Tool","description":"Get one sync activity by id for the authenticated shop.","inputSchema":{"properties":{"id":{"description":"Record id","type":"string"}},"type":"object","required":["id"]},"examplePrompt":"Give me the details of a sync activity."}],"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"]}}