Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the PrintSocket API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fprintsocket.com%2Fprintsocket" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fprintsocket.com%2Fprintsocket" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with PrintSocket API.
Send a print job to one printer with content as a URL, base64, or an uploaded document_id, with copies and job options
Print raw ZPL or ESC/POS by setting the content format to raw for label and receipt printers
Track a print job through its ordered event timeline and cancel it before it reaches a terminal state
List printers by device_id, state, or enabled flag and read each printer's reported capabilities
GET STARTED
Read the latest weight a connected scale reported, with captured_at showing how fresh it is
Enroll a new machine with a single-use enrollment token so account keys never sit on the end customer's machine
Register signed webhooks for job and device events and send a test ping to verify the receiver
Patterns agents use PrintSocket API for, with concrete tasks.
★ Agent-triggered printing
An AI agent handling an order can print the packing slip on the warehouse printer as soon as the order is ready. Through Jentic the agent searches for 'print a document on a printer', calls listPrinters to find an online printer, and calls createJob with the printer_id and content as a URL to the PDF. It then reads getJob or listJobEvents to confirm the job completed instead of assuming it did.
GET /printers with state filter for online printers, then POST /jobs with printer_id 'prn_...' and content url 'https://example.com/slips/1042.pdf', then GET /jobs/{id}/events until the job reaches a terminal state
Shipping label and receipt printing
Label and receipt printers speak their own languages. Setting the job content format to raw passes ZPL or ESC/POS straight to the printer unvalidated, so a fulfilment service can generate a label from its carrier and print it at the right packing station. queue_if_offline holds the job until the printer reconnects rather than failing it.
POST /jobs with printer_id for the label printer, content format 'raw', content base64 of the ZPL label, and queue_if_offline true
Weighing parcels at the packing bench
A packing workflow can read the weight of a parcel from a scale attached to the same machine as the printer. getScale returns the latest reading the agent reported with a captured_at timestamp, so the workflow can check freshness and then buy postage for the right weight before printing the label.
GET /scales filtered by device_id, then GET /scales/{id} and use the reading if captured_at is within the last few seconds
Rolling out printing to customer sites
A software vendor installing printing at many customer sites can avoid shipping account keys in the installer. createEnrollmentToken returns a single-use token valid for 1 hour that the agent installer exchanges for device-scoped credentials, and revokeDevice cuts a machine off immediately if it is decommissioned.
POST /enrollment_tokens with name 'Store 14 front desk' and metadata store_id '14', and pass the token to the installer
30 endpoints — the printsocket api prints to physical printers and reads scales on any machine running the lightweight printsocket agent, which connects outbound so there are no inbound ports to open and no print server to run.
METHOD
PATH
DESCRIPTION
/jobs
Create a print job
/jobs/{id}
Retrieve a job
/jobs/{id}/events
List a job's state transitions
/jobs/{id}/cancel
Cancel a job
/printers
List printers
/scales/{id}
Retrieve a scale reading
/documents
Upload a document
/enrollment_tokens
Create an enrollment token
/jobs
Create a print job
/jobs/{id}
Retrieve a job
/jobs/{id}/events
List a job's state transitions
/jobs/{id}/cancel
Cancel a job
/printers
List printers
/scales/{id}
Retrieve a scale reading
/documents
Upload a document
/enrollment_tokens
Create an enrollment token
What agents get from Jentic-routed access to this vendor.
Setup
Wiring PrintSocket by hand means sending the key as a bearer token, attaching an Idempotency-Key to every POST, paging lists with next_cursor and has_more, and verifying signed webhook deliveries. Through Jentic you install once, import PrintSocket from the API Directory, store the key once, and your agent calls it.
Permission scoping
PrintSocket puts device, printer, and job ids in the URL path (/devices/{id}, /printers/{id}, /jobs/{id}), but createJob carries the printer_id in the request body, so for printing, rules bound which operations your agent may call rather than which printer. You choose those operations, so destructive ones like revokeDevice or deleteAPIKey are not included unless you add them.
Credential isolation
Your PrintSocket key is stored once, encrypted, by your own Jentic One instance and injected into the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'print a document on a printer' or 'read the scale weight', and Jentic returns the matching PrintSocket operation with its input schema, including the content object and job options, so the agent calls the right endpoint directly.
Alternatives and complements available in the Jentic catalogue.
Specific to using PrintSocket API through Jentic.
What authentication does the PrintSocket API use?
Per its OpenAPI spec, the PrintSocket API authenticates with an API key sent as a bearer token, such as Authorization: Bearer sk_live_... or sk_test_.... GET /ping and GET /openapi.json are public endpoints that need no credential. Each key carries a read, print, or manage scope, and the prefix sets live or test mode. Through Jentic the key is held by your own instance and attached at call time.
Can I print raw ZPL or ESC/POS with the PrintSocket API?
Yes. POST /jobs takes a printer_id and a content object, and setting content format to raw passes the bytes to the printer unvalidated, which is how ZPL and ESC/POS are sent. Content can be a URL, base64 up to 50 MB decoded, or a document_id from an earlier upload.
What are the rate limits for the PrintSocket API?
The OpenAPI spec states a default of 20 requests per second per account, burstable, with sustained excess returning 429 and a Retry-After header. Responses carry RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers so a client can pace itself.
Is there a PrintSocket MCP server?
You don't need an MCP server to give your agent PrintSocket. Jentic connects it directly from the API Directory: import it, store your key once, and your agent calls the printer, job, and scale operations on demand without loading another server's tool definitions into its context.
How do I send a print job through Jentic?
Search Jentic for 'print a document on a printer', load the createJob operation, and execute it with a printer_id and content holding a URL, base64, or document_id. Send an Idempotency-Key so a retry cannot create a duplicate job. To run it on your own infrastructure, install Jentic One from its GitHub repo.
Can I limit what my agent is allowed to do with the PrintSocket API?
Yes. Write a rule that allows only GET /printers, POST /jobs, and GET /jobs/{id}, so the agent can find a printer, print, and check the result but cannot revoke devices, change webhooks, or create API keys. Every call it makes is logged for review.
Can I test the PrintSocket API without a printer?
Yes. Keys prefixed sk_test_ get a virtual device and printer that runs the full job lifecycle, kept completely separate from live data, and jobs to the virtual printer never count toward plan limits.
For Agents
Send PDF or raw ZPL and ESC/POS print jobs to real printers on a remote machine, track each job's status, and read the current weight from connected scales.
Use for: Print this shipping label PDF on the warehouse printer, Send a ZPL label to the Zebra printer at the packing station, Check whether my print job finished or failed, List all printers that are online right now
Not supported: Does not generate shipping labels, render documents, or manage printer drivers. Use for sending print jobs to and reading scales on enrolled machines only.
The PrintSocket API prints to physical printers and reads scales on any machine running the lightweight PrintSocket agent, which connects outbound so there are no inbound ports to open and no print server to run. You enroll a device with a short-lived token, list the printers and scales it exposes, and create print jobs whose content arrives as a URL, base64, or an uploaded document, including raw ZPL and ESC/POS for label and receipt printers. Each job has an ordered event timeline and can be cancelled before it finishes, and signed webhooks report job and device events. sk_test_ keys get a virtual device and printer that runs the full job lifecycle before any hardware exists.
This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>