{"openapi":"3.1.0","info":{"title":"PrintNode (BYOK) API","version":"0.1.0","description":"PrintNode (BYOK) lets an AI assistant read your own PrintNode data through the PrintNode API with a key you supply (PrintNode API key). Read-only: 11 tools (get_account_summary, list_computers, get_computer, list_printers, get_printer, list_computer_printers, list_print_jobs, list_printer_print_jobs, get_print_job, get_print_job_states, list_scales). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-printnode.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-printnode/docs"},"termsOfService":"https://connectorbay.com/byok-printnode/terms"},"servers":[{"url":"https://byok-printnode.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-printnode/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/get_account_summary":{"post":{"operationId":"get_account_summary","summary":"Show the PrintNode account the key belongs to: account id, state, number of computers, total prints, remaining credits a","description":"Show the PrintNode account the key belongs to: account id, state, number of computers, total prints, remaining credits and permissions. Use for \"How many computers and prints does my PrintNode account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_account_summaryArguments","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_computers":{"post":{"operationId":"list_computers","summary":"List the computers that run the PrintNode client with name, client version and connection state (connected or disconnect","description":"List the computers that run the PrintNode client with name, client version and connection state (connected or disconnected). Use for \"Which of my computers are connected to PrintNode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum records to return (default 100).","title":"Limit"},"after":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Return records after this id (use the last id of the previous page).","title":"After"},"dir":{"anyOf":[{"enum":["desc","asc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Order by id: desc (newest first) or asc.","title":"Dir"}},"title":"list_computersArguments","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_computer":{"post":{"operationId":"get_computer","summary":"Get one computer by id: name, client version and connection state. Use for \"Is PrintNode computer 12 connected\".","description":"Get one computer by id: name, client version and connection state. Use for \"Is PrintNode computer 12 connected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"computer_id":{"description":"PrintNode computer id (positive integer) as returned by list_computers.","maximum":2000000000,"minimum":1,"title":"Computer Id","type":"integer"}},"required":["computer_id"],"title":"get_computerArguments","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_printers":{"post":{"operationId":"list_printers","summary":"List all printers known to the account with online state, description and the computer they are attached to. Use for \"Wh","description":"List all printers known to the account with online state, description and the computer they are attached to. Use for \"Which printers are online in PrintNode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum records to return (default 100).","title":"Limit"},"after":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Return records after this id (use the last id of the previous page).","title":"After"},"dir":{"anyOf":[{"enum":["desc","asc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Order by id: desc (newest first) or asc.","title":"Dir"}},"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 its state and computer. Use for \"What is the state of PrintNode printer 34\".","description":"Get one printer by id with its state and computer. Use for \"What is the state of PrintNode printer 34\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"printer_id":{"description":"PrintNode printer id (positive integer) as returned by list_printers.","maximum":2000000000,"minimum":1,"title":"Printer Id","type":"integer"}},"required":["printer_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_computer_printers":{"post":{"operationId":"list_computer_printers","summary":"List the printers attached to one computer. Use for \"Which printers are attached to PrintNode computer 12\".","description":"List the printers attached to one computer. Use for \"Which printers are attached to PrintNode computer 12\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"computer_id":{"description":"PrintNode computer id (positive integer) as returned by list_computers.","maximum":2000000000,"minimum":1,"title":"Computer Id","type":"integer"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum records to return (default 100).","title":"Limit"},"after":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Return records after this id (use the last id of the previous page).","title":"After"},"dir":{"anyOf":[{"enum":["desc","asc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Order by id: desc (newest first) or asc.","title":"Dir"}},"required":["computer_id"],"title":"list_computer_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/list_print_jobs":{"post":{"operationId":"list_print_jobs","summary":"List recent print jobs (newest first) with state, source, printer and creation time. Job titles and content are not retu","description":"List recent print jobs (newest first) with state, source, printer and creation time. Job titles and content are not returned. Use for \"What were my last print jobs in PrintNode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum records to return (default 100).","title":"Limit"},"after":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Return records after this id (use the last id of the previous page).","title":"After"},"dir":{"anyOf":[{"enum":["desc","asc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Order by id: desc (newest first) or asc.","title":"Dir"}},"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/list_printer_print_jobs":{"post":{"operationId":"list_printer_print_jobs","summary":"List the print jobs sent to one printer, newest first. Use for \"Which print jobs went to PrintNode printer 34\".","description":"List the print jobs sent to one printer, newest first. Use for \"Which print jobs went to PrintNode printer 34\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"printer_id":{"description":"PrintNode printer id (positive integer) as returned by list_printers.","maximum":2000000000,"minimum":1,"title":"Printer Id","type":"integer"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum records to return (default 100).","title":"Limit"},"after":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Return records after this id (use the last id of the previous page).","title":"After"},"dir":{"anyOf":[{"enum":["desc","asc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Order by id: desc (newest first) or asc.","title":"Dir"}},"required":["printer_id"],"title":"list_printer_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 current state and printer. Use for \"Did PrintNode print job 473 finish\".","description":"Get one print job by id with its current state and printer. Use for \"Did PrintNode print job 473 finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"print_job_id":{"description":"Print job id (positive integer) as returned by list_print_jobs.","maximum":2000000000,"minimum":1,"title":"Print Job Id","type":"integer"}},"required":["print_job_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/get_print_job_states":{"post":{"operationId":"get_print_job_states","summary":"Get the state history of one print job (new, sent to client, done, error, expired) with messages and timestamps. Use for","description":"Get the state history of one print job (new, sent to client, done, error, expired) with messages and timestamps. Use for \"What happened to PrintNode print job 473\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"print_job_id":{"description":"Print job id (positive integer) as returned by list_print_jobs.","maximum":2000000000,"minimum":1,"title":"Print Job Id","type":"integer"}},"required":["print_job_id"],"title":"get_print_job_statesArguments","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_scales":{"post":{"operationId":"list_scales","summary":"List the weighing scales attached to a computer with their latest reading (mass in micrograms, measurement units) and th","description":"List the weighing scales attached to a computer with their latest reading (mass in micrograms, measurement units) and the age of the data. Readings are kept for 45 seconds. Use for \"What do the scales on PrintNode computer 12 read right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"computer_id":{"description":"PrintNode computer id (positive integer) as returned by list_computers.","maximum":2000000000,"minimum":1,"title":"Computer Id","type":"integer"}},"required":["computer_id"],"title":"list_scalesArguments","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}}}}