{"openapi":"3.1.0","info":{"title":"Simply Print Control (BYOK) API","version":"0.1.0","description":"Simply Print Control (BYOK) lets an AI assistant read your own Simply Print Control data through the Simply Print Control API with a key you supply (SimplyPrint API key (needs the Pro plan or an organization seat)). Reads and device changes: 7 tools (list_printers, get_printer, get_farm_overview, list_print_jobs, pause_print, resume_print, cancel_print). The BYOK key travels with each request, is...\n\nMost operations are read-only. These change the state of a device and run only with confirm = \"yes\" after the user approved that change: pause_print, resume_print, cancel_print. The same tools are available over MCP (streamable HTTP) at https://byok-simplyprint-print-control.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-simplyprint-print-control/docs"},"termsOfService":"https://connectorbay.com/byok-simplyprint-print-control/terms"},"servers":[{"url":"https://byok-simplyprint-print-control.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-simplyprint-print-control/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_printers":{"post":{"operationId":"list_printers","summary":"List the printers of the account with name, state, online flag, group, IP, firmware, model and temperatures. Page size i","description":"List the printers of the account with name, state, online flag, group, IP, firmware, model and temperatures. Page size is 1 to 25. Use for \"Which of my 3D printers are online and what are they doing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"SimplyPrint company id (the number in your SimplyPrint API URLs, shown in your account's API settings).","title":"Company Id","type":"integer"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":25,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many printers per page (1 to 25).","title":"Page Size"},"order_by":{"anyOf":[{"enum":["status","name","online","last_online","ui","created"],"type":"string"},{"type":"null"}],"default":"name","description":"Sort order.","title":"Order By"},"compact":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True to return only the AI-relevant column set (smaller answer).","title":"Compact"}},"required":["company_id"],"title":"list_printersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_printer":{"post":{"operationId":"get_printer","summary":"Get one printer by id with state, group, IP, firmware, model, temperatures and camera flag. Use for \"What is printer 13 ","description":"Get one printer by id with state, group, IP, firmware, model, temperatures and camera flag. Use for \"What is printer 13 doing right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"SimplyPrint company id (the number in your SimplyPrint API URLs, shown in your account's API settings).","title":"Company Id","type":"integer"},"pid":{"description":"Printer id from list_printers.","minimum":1,"title":"Pid","type":"integer"}},"required":["company_id","pid"],"title":"get_printerArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_farm_overview":{"post":{"operationId":"get_farm_overview","summary":"Get a summary of the print farm: how many printers are online, offline, printing, paused, awaiting bed clearing, in main","description":"Get a summary of the print farm: how many printers are online, offline, printing, paused, awaiting bed clearing, in maintenance or need attention, and the per-brand breakdown. Needs the Print Farm plan. Use for \"How many of my printers are printing and which ones need the bed cleared\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"SimplyPrint company id (the number in your SimplyPrint API URLs, shown in your account's API settings).","title":"Company Id","type":"integer"}},"required":["company_id"],"title":"get_farm_overviewArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_print_jobs":{"post":{"operationId":"list_print_jobs","summary":"List print jobs (ongoing and finished) with filename, status, printer, start and end time, filament used and print time.","description":"List print jobs (ongoing and finished) with filename, status, printer, start and end time, filament used and print time. Page size is 1 to 100. Use for \"Which prints finished or failed recently on my printers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"SimplyPrint company id (the number in your SimplyPrint API URLs, shown in your account's API settings).","title":"Company Id","type":"integer"},"page":{"description":"Page number, starting at 1.","maximum":1000,"minimum":1,"title":"Page","type":"integer"},"page_size":{"description":"Jobs per page (1 to 100).","maximum":100,"minimum":1,"title":"Page Size","type":"integer"}},"required":["company_id","page","page_size"],"title":"list_print_jobsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/pause_print":{"post":{"operationId":"pause_print","summary":"Pause the active print on one printer. The printer must be in the printing state. This changes the physical printer stat","description":"Pause the active print on one printer. The printer must be in the printing state. This changes the physical printer state: the print head stops and the job waits until it is resumed. Only a printer that is in the right state accepts it. This does not start any print. Use for \"Pause the print on printer 13\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"SimplyPrint company id (the number in your SimplyPrint API URLs, shown in your account's API settings).","title":"Company Id","type":"integer"},"pid":{"description":"Printer id from list_printers (one printer).","minimum":1,"title":"Pid","type":"integer"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"}},"required":["company_id","pid","confirm"],"title":"pause_printArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":false,"x-changes-device-state":true,"x-requires-confirmation":"confirm"}},"/v1/tools/resume_print":{"post":{"operationId":"resume_print","summary":"Resume a paused print on one printer. The printer must be in the paused state. This changes the physical printer state: ","description":"Resume a paused print on one printer. The printer must be in the paused state. This changes the physical printer state: the printer starts moving again (the hotend is reheated first if the pause cooled it). Only a printer that is in the right state accepts it. This does not start any print. Use for \"Resume the paused print on printer 13\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"SimplyPrint company id (the number in your SimplyPrint API URLs, shown in your account's API settings).","title":"Company Id","type":"integer"},"pid":{"description":"Printer id from list_printers (one printer).","minimum":1,"title":"Pid","type":"integer"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"}},"required":["company_id","pid","confirm"],"title":"resume_printArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":false,"x-changes-device-state":true,"x-requires-confirmation":"confirm"}},"/v1/tools/cancel_print":{"post":{"operationId":"cancel_print","summary":"Cancel the active print on one printer (it must be printing, paused or pausing). This changes the physical printer state","description":"Cancel the active print on one printer (it must be printing, paused or pausing). This changes the physical printer state and the job cannot be continued afterwards; the account may require a reason or comment, which can be given here. Only a printer that is in the right state accepts it. This does not start any print. Use for \"Cancel the print on printer 13 because the nozzle is clogged\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"SimplyPrint company id (the number in your SimplyPrint API URLs, shown in your account's API settings).","title":"Company Id","type":"integer"},"pid":{"description":"Printer id from list_printers (one printer).","minimum":1,"title":"Pid","type":"integer"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"},"reason":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Cancel reason id, required only if the account demands a reason.","title":"Reason"},"comment":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text comment, up to 500 characters, required only if the account demands one.","title":"Comment"}},"required":["company_id","pid","confirm"],"title":"cancel_printArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":false,"x-changes-device-state":true,"x-requires-confirmation":"confirm"}}}}