Developer Tools
Coming soon
Postsale CLI: ship from your terminal.
Search orders, compare rates and buy and void labels from a terminal, a scheduled job or an AI agent. Type the exact command, or say what you want in plain words. Nothing spends money without an explicit go-ahead.
Coming to Mac and Windows. Early access is by invitation.
Nothing spends money without an explicit go-ahead
A sample session in the Postsale CLI:
postsale orders work-queue | jq -r '.orders[:3][].number'450645054504postsale shipments get-rates --input 4505.json > rates.jsonjq -r '.rates[]|"\(.total) \(.service)"' rates.json7.52 usps_ground_advantage15 usps_priority_mail29.83 ups_ground30.52 fedex_ground_home_deliverySHIP=$(jq -r .id 4505.json)postsale labels purchase --shipment-id $SHIP{"error":{"code":"confirmation_required","message":"This operation requires confirmation. Pass --yes to proceed non-interactively."}}postsale labels purchase --shipment-id $SHIP --yes > label.jsonjq -r '.labels[].tracking_number' label.json1Z999AA10123454505
Setup
Set up Postsale CLI in three steps.
Step 1
Request Early Access
The CLI is coming soon for Mac and Windows. Ask for early access by email, and your invitation includes the signed program, one self-contained file.
Step 2
Sign In and Check Your Setup
Run postsale auth login to sign in through your browser, or add --no-browser on a server. Then postsale doctor confirms your sign-in, carriers and origin addresses in one pass.
Step 3
Ask or Command
postsale orders work-queue shows what is ready to ship. postsale run "ship it with the cheapest carrier" does the rest, and stops before buying until you give the go-ahead. The Quick Start walks through the first hour.
Features
Built so an agent can’t spend by accident.
Most shipping software lets an assistant in through a connector. Postsale also ships its own program, with its own plain-words agent and its own safety rules.
Money waits for a go-ahead
Three actions move money: creating a shipment, buying labels and voiding. They wait for --yes or an allow-list you set. If neither is set and no one is at the terminal to approve, the run stops. Deletes wait the same way.
Give only the go-ahead you mean
Approve just shipment creation and label purchase for a run, and nothing else. Every other action that spends or deletes still stops.
Rehearse with dry-run
Preview the purchases, voids, deletes and status changes a plain-words run would make. The result lists what it simulated and what still ran.
Practice labels that are never billed
Test-label mode prints watermarked UPS and USPS test labels that are never billed, and refuses the whole batch if any shipment is not a test.
Batches need their own yes
Parallel batches take up to 50 orders. Buying across a batch needs a separate approval, even after --yes.
Some things stay with the owner
Accepting terms and reactivating a lapsed subscription go back to the account owner. No flag skips them.
Agent-first, people too
Made for agents. Easy on people.
One program, the same rules, whether a person, a schedule or an agent is at the keyboard.
Agent hosts
One call describes every command. Results are clean data, and every error names its next step. Point your agent host at the published contract.
https://postsale.com/cli/AGENTS.md
Unattended runs
A preflight check before the job, a scoped API key you can revoke and a record of what ran.
postsale doctor --pre-flight
Your terminal
Add --human to read anything at a glance. Typos get a “Did you mean?” Save a question and run it by name.
postsale doctor --human
Every command
The daily work of the app, from the terminal.
Orders & work queue10 commands
orders work-queue
What is ready to ship right now, with the excluded orders counted so nothing hides in an unexpected status
orders search
Find orders with structured filters or a plain-language query like "orders from last 7 days"
orders get
Read one order in full, including items, addresses and notes
orders create
Add an order from the terminal or a script
orders update
Change addresses, items, notes or shipping preferences on an order
orders set-status
Move one order to a new status, or a list of order ids at once with bulk-status
orders tag
Add or remove tags to organize and filter orders
orders recover
Restore a deleted order
filters
Saved order searches you can list, create, update and reuse
stores list
See the storefronts connected to your account
Rates, shipments & labels8 commands
shipments get-rates
Compare live rates across every carrier on your account
shipments create
Create a shipment from an order, ready to rate and buy
orders create-shipment
Order to shipment in one step, with the defaults the agent applies spelled out
shipments update
Fix the package, service, ship date or from-address before you buy
shipments bulk-update
Change the package, service, ship date or from-address across many shipments at once
labels purchase
Buy a label. Waits for an explicit go-ahead, and first shows that this label will be billed
labels void
Void a label you no longer need and request the refund
labels reprint
Print an existing label again without buying a new one
Reports & end of day7 commands
reports order-count
Count orders by date range, status or store
reports shipment-count
Count shipments by date range, carrier or service
reports revenue
Revenue totals for the period you ask about
reports top-items
Your most-shipped products, ranked
reports cost-by-carrier
Shipping spend broken down by carrier
manifest list
What is still pending for each carrier's end-of-day manifest
manifest close
Close out the day for a carrier
Account, carriers & settings10 commands
auth login
Sign in through your browser, or with a device code on a machine without one
auth status
See which credential is active and whether it is still valid
account whoami
Who you are signed in as. Needs a signed-in session, not an API key
doctor
Check sign-in, network, carriers and origin addresses before you ship; pre-flight mode for unattended runs
carriers
Add, validate, update and remove carrier accounts
origin-addresses
Manage the addresses your shipments ship from
shipping-rules
List, create, update and delete the rules that build shipments automatically
automation
List, create, update and delete workflows and webhooks
templates
Label, packing-slip, invoice and email templates as records: list, copy, move and back them up
licenses
The Postsale license and third-party notices, offline
Natural language & agents8 commands
run
Say what you want; the agent picks the tools and waits for an explicit go-ahead before anything that moves money
run --dry-run
Preview the purchases, voids, deletes and status changes without making them; other edits still run
run --stream
One JSON event per line, for hosts that watch the work as it happens
continue
Pick up a previous conversation and keep going
conversations
The conversations stored on this machine, so you can continue one
saved-queries
Save the intents you use often and run them by name
traces
See exactly what ran, export it or purge it
schema
Describe any command's request and response shapes; --all bootstraps an agent in one call
Questions
About Postsale CLI and Postsale.
Which plans include the Postsale CLI?
Every plan. Sign in with your Postsale account and the CLI uses the carriers, rates and templates already on it. API keys, the credential for jobs that run without you, are a Soar-plan feature.
Do I need an AI subscription to use it?
No. Search, reports and the work queue understand plain words with no model key, and direct commands need none either. Only postsale run, which handles several steps for you, uses your own Anthropic or OpenAI key.
Can it buy labels on its own?
Not without an explicit go-ahead. Creating a shipment, buying labels, voiding and deleting wait for --yes at the time or an allow-list you set for a job. Batches need their own approval on top of that. Dry-run previews the work, and test-label mode prints practice labels that are never billed.
What does dry-run not simulate?
Dry-run stands in for creating shipments, buying and voiding labels, deletes, closing the end-of-day manifest and order status changes. Other edits still run for real: creating or updating an order, editing a shipment, tags and saved searches. The result lists what it simulated, so you can see which is which.
How is this different from the MCP connector?
The MCP connector puts Postsale inside your chat assistant, such as Claude.ai or ChatGPT, with no keys to manage. The CLI is for your terminal, your scripts and agents you run yourself, with structured output and the same safety gates on every path. It’s the same account with the same carriers, and many teams use both.
Does it replace the web app?
No. Visual work like the shipping Dock and template design stays in the app. The CLI is for repeatable operations, unattended runs and agents.
How do I get it?
It’s coming soon for Mac and Windows. Ask for early access by email, and your invitation includes the program. Then sign in with your Postsale account.
Claude, ChatGPT, Anthropic and OpenAI are trademarks of their respective owners. Postsale is not affiliated with or endorsed by these companies.
Bring Postsale to your terminal.
Coming to Mac and Windows. Early access is by invitation.
Nothing spends money without an explicit go-ahead