{"openapi":"3.1.0","info":{"title":"Printago Job Control (BYOK) API","version":"0.1.0","description":"Printago Job Control (BYOK) lets an AI assistant read your own Printago Job Control data through the Printago Job Control API with a key you supply (Printago API key). Reads and device changes: 7 tools (list_printers, get_printer, list_print_jobs, get_print_job, pause_print_job, resume_print_job, cancel_print_job). The BYOK key travels with each request, is used for that one call only and is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-printago-job-control.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-printago-job-control/docs"},"termsOfService":"https://connectorbay.com/byok-printago-job-control/terms"},"servers":[{"url":"https://byok-printago-job-control.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-printago-job-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 print farm with online and availability flags, nozzle diameter, tags and the job being printed.","description":"List the printers of the print farm with online and availability flags, nozzle diameter, tags and the job being printed. The API allows 600 requests per hour per store. Use for \"Which of my Printago printers are online and available\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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. Use for \"Show Printago printer prn_abc123\".","description":"Get one printer by id. Use for \"Show Printago printer prn_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Printago printer id as returned by list_printers.","maxLength":80,"title":"Id","type":"string"}},"required":["id"],"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/list_print_jobs":{"post":{"operationId":"list_print_jobs","summary":"List print jobs of the queue and history with status, part or SKU name, assigned printer and start and finish times. Use","description":"List print jobs of the queue and history with status, part or SKU name, assigned printer and start and finish times. Use for \"Which Printago print jobs are queued or failed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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/get_print_job":{"post":{"operationId":"get_print_job","summary":"Get one print job by id with its status, error message and timing. Use for \"What is the status of Printago print job job","description":"Get one print job by id with its status, error message and timing. Use for \"What is the status of Printago print job job_abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Print job id as returned by list_print_jobs.","maxLength":80,"title":"Id","type":"string"}},"required":["id"],"title":"get_print_jobArguments","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_job":{"post":{"operationId":"pause_print_job","summary":"Send the printer a command to pause one print job that is printing. This changes the physical printer state: the print s","description":"Send the printer a command to pause one print job that is printing. This changes the physical printer state: the print stops moving until the job is resumed. The answer lists the job ids the command was accepted for. This does not start any print. Use for \"Pause print job 65f0c1a2b3c4d5e6f7a8b9c0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"print_job_id":{"description":"Print job id (24 lowercase letters and digits) from list_print_jobs or get_printer (printingJobId).","maxLength":24,"title":"Print Job Id","type":"string"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"}},"required":["print_job_id","confirm"],"title":"pause_print_jobArguments","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/resume_print_job":{"post":{"operationId":"resume_print_job","summary":"Send the printer a command to resume one paused print job. This changes the physical printer state: the printer starts m","description":"Send the printer a command to resume one paused print job. This changes the physical printer state: the printer starts moving again. The answer lists the job ids the command was accepted for. This does not start any print. Use for \"Resume print job 65f0c1a2b3c4d5e6f7a8b9c0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"print_job_id":{"description":"Print job id (24 lowercase letters and digits) from list_print_jobs or get_printer (printingJobId).","maxLength":24,"title":"Print Job Id","type":"string"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"}},"required":["print_job_id","confirm"],"title":"resume_print_jobArguments","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/cancel_print_job":{"post":{"operationId":"cancel_print_job","summary":"Cancel one print job that is queued or printing. By default a stop command is also sent to the printer, which ends the r","description":"Cancel one print job that is queued or printing. By default a stop command is also sent to the printer, which ends the running print for good; set send_stop to false to only mark the job cancelled in Printago. This changes the physical printer state when a stop is sent. The answer lists the job ids the command was accepted for. This does not start any print. Use for \"Cancel print job 65f0c1a2b3c4d5e6f7a8b9c0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"print_job_id":{"description":"Print job id (24 lowercase letters and digits) from list_print_jobs or get_printer (printingJobId).","maxLength":24,"title":"Print Job Id","type":"string"},"confirm":{"const":"yes","description":"Must be exactly yes, only after the user approved this change in chat.","title":"Confirm","type":"string"},"send_stop":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True (default) also sends a stop command to the printer; false only marks the job cancelled in Printago.","title":"Send Stop"}},"required":["print_job_id","confirm"],"title":"cancel_print_jobArguments","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}}}}