Stannp
MARKETING · MARKETING
Postcards, letters, campaigns, and recipients posted from the account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
stannp_get_v1_accounts_balanceREADGet Account Balance via GET /v1/accounts/balance. Check your account balance.
stannp_get_v1_campaigns_get_by_idREADGet Campaign via GET /v1/campaigns/get/{id}. Get details for a specific campaign.
stannp_get_v1_campaigns_listREADList Campaigns via GET /v1/campaigns/list. Get a list of your campaigns.
stannp_get_v1_files_foldersREADList Folders via GET /v1/files/folders. List folders in your secure file transfer area.
stannp_get_v1_groups_listREADList Groups via GET /v1/groups/list. Get a list of mailing groups on your account. Supports pagination.
stannp_get_v1_letters_get_by_idREADGet Letter via GET /v1/letters/get/{id}. Obtain the mailpiece object for the specified letter ID. Measured 2026-09-16: an id that does not exist answers HTTP 400 {"error":"Could not find the resource"}, not the 404 the reference's status table implies.
stannp_get_v1_postcards_get_by_idREADGet Postcard via GET /v1/postcards/get/{id}. Obtain the mailpiece object for the specified postcard ID. Measured 2026-09-16: an id that does not exist answers HTTP 400 {"error":"Could not find the resource"}, not the 404 the reference's status table implies.
stannp_get_v1_qrcode_createREADCreate QR Code via GET /v1/qrcode/create. Generate a QR code image. **Requires a PUBLIC KEY** (not a private API key). The `data` parameter accepts any content, typically a URL. Use template variables (e.g., `{{url}}`) for personalised QR codes per recipient during mail merge. Returns a JPEG image. Returns a JPEG image, not the {success, data} envelope: this tool answers {content_type, content_length, content_base64} instead, and refuses to inline anything over its byte bound. Measured 2026-09-16: size=100 -> 4,692 bytes, size=2000 -> 168,344 bytes. The reference says this endpoint "Requires a PUBLIC KEY (not a private API key)"; measured, the account's own API key is accepted.
stannp_get_v1_recipients_get_by_idREADGet Recipient via GET /v1/recipients/get/{id}. Get a single recipient by ID.
stannp_get_v1_recipients_listREADList Recipients via GET /v1/recipients/list. Get a list of recipient objects. Include group_id to filter by group. Supports pagination via offset and limit.
stannp_get_v1_reporting_list_by_startdate_by_enddateREADList Reported Mailpieces via GET /v1/reporting/list/{startdate}/{enddate}/{status}/{tag}. Retrieve a list of mailpiece objects sent within a date range. Status and tag filters are optional. status and tag are OPTIONAL trailing path segments at Stannp, which no ledger can express; this tool takes them as optional arguments and composes the path. All four shapes were measured 200 on 2026-09-16, including tag-without-status, which sends an empty status segment.
stannp_get_v1_reporting_summary_by_startdate_by_enddateREADGet Reporting Summary via GET /v1/reporting/summary/{startdate}/{enddate}. Retrieve a status summary on individual items within a date range. Dates in YYYY-MM-DD format. The end date includes everything on that day.
stannp_get_v1_templates_listREADList Templates via GET /v1/templates/list. Get the templates created on your account.
stannp_post_v1_accounts_topupWRITESPENDS REAL MONEY: this CHARGES THE SAVED PAYMENT CARD on the Stannp account for the amount given. There is no test mode. Top Up Account via POST /v1/accounts/topup. Top up your balance using a saved default card. Consider enabling auto top-up to ensure sends are not impacted by a low balance.
stannp_post_v1_addresses_validateREADValidate Address via POST /v1/addresses/validate. Validate a postal address. Currently supports UK and US addresses.
stannp_post_v1_campaigns_approveWRITEIRREVERSIBLE: approving a campaign locks its design and recipient selection, and is the step before booking dispatches it. There is no test mode and no un-approve. Approve Campaign via POST /v1/campaigns/approve. Approve a campaign. This locks the design and recipient selection. Once approved, changes cannot be made.
stannp_post_v1_campaigns_available_datesREADGet Campaign Available Dates via POST /v1/campaigns/availableDates. Get available dates for booking a campaign.
stannp_post_v1_campaigns_bookWRITESPENDS REAL MONEY: booking a campaign DISPATCHES every mailpiece in it and takes payment from the account balance. There is NO test mode on this call. Price it first with the campaign-cost tool and approve it deliberately. Book Campaign via POST /v1/campaigns/book. Book a campaign for dispatch. Payment is taken from your balance.
stannp_post_v1_campaigns_costREADGet Campaign Cost via POST /v1/campaigns/cost. Get the cost breakdown and rates for a campaign.
stannp_post_v1_campaigns_createWRITECreate Campaign via POST /v1/campaigns/create. Create a new campaign. Measured 2026-09-16: the response is {"success":true,"data":"571884"} -- the campaign id as a bare string, NOT the {"id": ...} object the reference shows. Creates a DRAFT. Nothing is printed, posted or charged until the campaign is approved and then booked.
stannp_post_v1_campaigns_deleteWRITEDESTRUCTIVE: this deletes the campaign and its recipient selection. Only a campaign that has not been booked can be deleted. Delete Campaign via POST /v1/campaigns/delete. Delete a campaign. Only campaigns that have not been booked can be deleted.
stannp_post_v1_campaigns_sampleREADSample Campaign via POST /v1/campaigns/sample. Produce a PDF sample of your campaign. The link is valid for 30 minutes.
stannp_post_v1_files_create_folderWRITECreate Folder via POST /v1/files/createFolder. Create a folder in your secure file transfer area.
stannp_post_v1_files_uploadWRITEUpload File via POST /v1/files/upload. Upload a file to your secure file transfer area.
stannp_post_v1_groups_add_by_group_idWRITEAdd Recipients To Group via POST /v1/groups/add/{group_id}. Add recipients to an existing mailing list. Measured 2026-09-16: adding a recipient that is already in the group answers {"success":true,"data":0} -- the count added, not an error.
stannp_post_v1_groups_calculate_by_group_idWRITERecalculate Group via POST /v1/groups/calculate/{group_id}. Recalculate a group to update its statistics.
stannp_post_v1_groups_deleteWRITEDESTRUCTIVE: this deletes the mailing group, and with delete_recipients=true it DELETES its recipients outright -- they stop existing in every other group too. Delete Group via POST /v1/groups/delete. Delete a mailing list.
stannp_post_v1_groups_newWRITECreate Group via POST /v1/groups/new. Create a new empty mailing list.
stannp_post_v1_groups_purgeWRITEDESTRUCTIVE: this removes every recipient from the group, and with delete_recipients=true it DELETES those recipients outright -- they stop existing in every other group too. Purge Group via POST /v1/groups/purge. Remove all recipients from a mailing list.
stannp_post_v1_groups_remove_by_group_idWRITERemove Recipients From Group via POST /v1/groups/remove/{group_id}. Remove recipients from a group. This only removes the recipient from the group and does not delete the recipient.
stannp_post_v1_letters_cancelWRITEDESTRUCTIVE: cancelling stops a mailpiece the account has ALREADY PAID FOR from being posted, and cannot be undone. It succeeds only before production starts. Cancel Letter via POST /v1/letters/cancel. Cancel a letter if processing has not yet started. Measured 2026-09-16: a mailpiece that cannot be cancelled answers HTTP 400 {"error":"We could not find any items which can be cancelled"} -- the same status for "no such id" and "too late to cancel".
stannp_post_v1_letters_createWRITESPENDS REAL MONEY: this PRINTS AND POSTS a physical letter and charges the Stannp account. Send test=true to produce a sample PDF instead, at no charge; a test response is identifiable by "id": 0 and "status": "test". Omitting test posts real mail. Create Letter via POST /v1/letters/create. Create a single letter with mail merge for address and variable data.
stannp_post_v1_letters_postWRITESPENDS REAL MONEY: this PRINTS AND POSTS a physical letter and charges the Stannp account. Send test=true to produce a sample PDF instead, at no charge; a test response is identifiable by "id": 0 and "status": "test". Omitting test posts real mail. Post Pre-addressed Letter via POST /v1/letters/post. Post a letter that already has the address on the PDF. The API uses OCR to extract the recipient address from the document. The address is read OFF THE PDF by OCR: measured 2026-09-16, a PDF with no postal address answers HTTP 400 {"error":"We couldn't OCR the recipient"} even with test=true.
stannp_post_v1_pdf_mergeWRITEMerge PDFs via POST /v1/pdf/merge. Merge multiple PDF files into a single file.
stannp_post_v1_postcards_cancelWRITEDESTRUCTIVE: cancelling stops a mailpiece the account has ALREADY PAID FOR from being posted, and cannot be undone. It succeeds only before production starts. Cancel Postcard via POST /v1/postcards/cancel. Cancel a postcard if processing has not yet started. Measured 2026-09-16: a mailpiece that cannot be cancelled answers HTTP 400 {"error":"We could not find any items which can be cancelled"} -- the same status for "no such id" and "too late to cancel".
stannp_post_v1_postcards_createWRITESPENDS REAL MONEY: this PRINTS AND POSTS a physical postcard and charges the Stannp account. Send test=true to produce a sample PDF instead, at no charge; a test response is identifiable by "id": 0 and "status": "test". Omitting test posts real mail. Create Postcard via POST /v1/postcards/create. Create and send a single postcard. Performs a mail merge to place the address and any variable data.
stannp_post_v1_recipient_events_createWRITECreate Recipient Event via POST /v1/recipientEvents/create. Create a recipient event for tracking campaign engagement and conversions. Events can trigger automated communication. Measured 2026-09-16: the response is {"success":true,"data":"0"} -- a string, not the integer the reference shows.
stannp_post_v1_recipients_deleteWRITEDESTRUCTIVE: this permanently deletes the recipient from the account. It is removed from every group it belonged to and cannot be recovered. Delete Recipient via POST /v1/recipients/delete. Permanently delete a recipient from your account.
stannp_post_v1_recipients_importWRITEImport Recipients via POST /v1/recipients/import. Import a data file into your account.
stannp_post_v1_recipients_newWRITECreate Recipient via POST /v1/recipients/new. Create a new recipient.
stannp_post_v1_selections_newWRITECreate Selection via POST /v1/selections/new. Create an auto-filter selection for a group. Measured 2026-09-16: the response is {"success":true,"data":true}, NOT the [{"id": "1234"}] array the reference shows; the new selection's id is not returned.
stannp_post_v1_sms_createWRITESPENDS REAL MONEY: this SENDS an SMS and charges the Stannp account. Send test=true to price the message without sending it; a test response is identifiable by "id": 0 and "status": "test". Send SMS via POST /v1/sms/create. Send an SMS message to a recipient's mobile device. NOT AVAILABLE ON EVERY ACCOUNT: measured 2026-09-16, this account answers 404 {"success":false,"error":"Resource not found"} to every form of this call. That is NOT the router's 404, which names the unmatched segment ("Resource 'definitely-not-a-route' not found"), so the route is mounted and the SMS feature -- which the response body describes with a profile_id and a sender-id profile_type -- is what the account lacks.
Often connected alongside
Put Stannp behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.