unopost

MCP-connector

Verstuur een brief vanuit uw AI-assistent

Voeg één URL toe aan Claude, ChatGPT of een andere MCP-client. Uw assistent maakt uw originele document klaar om op A4 te printen en met Australia Post te versturen, met track & trace. U controleert het voorbeeld en betaalt op onze website, dus er wordt niets zonder u verstuurd.

$10 gewone post$20 Express Post

Server-URL
https://unopost.com.au/api/mcp

Dezelfde prijzen als op de website, inclusief GST. Geen account, inloggen of API-sleutel.

Post je vanuit je eigen code? De connector werkt met elke MCP-client of gewone HTTP, maar elke brief wordt op onze website betaald. Om te posten zonder dat er iemand aan te pas komt, gebruik je de x402-API.

VerbindenServerkaart

Verbinden

De connector is een externe MCP-server via Streamable HTTP. Inloggen is niet nodig, dus laat authenticatie uit.

  • Claude: open Customize → Connectors, kies Add custom connector, noem hem Unopost en plak de server-URL. Zet Unopost in een chat aan via het menu met tools.
  • ChatGPT: voeg in de ontwikkelaarsmodus een aangepaste connector toe met de server-URL en zonder authenticatie, en zet hem daarna aan in de chat.
  • Claude Code en andere clients: voeg hem toe als externe HTTP-server. Elke client die aangepaste MCP-servers ondersteunt, gebruikt dezelfde URL.
Claude Code
claude mcp add --transport http unopost https://unopost.com.au/api/mcp
.mcp.json
{
  "mcpServers": {
    "unopost": {
      "type": "http",
      "url": "https://unopost.com.au/api/mcp"
    }
  }
}

Zo gaat een brief

  1. Adressen bevestigen
  2. Brief klaarmaken
  3. Wachten op de opmaak
  4. De gebruiker betaalt op de website

De assistent bevestigt de adressen met de gebruiker, maakt de brief klaar en geeft de gebruiker een privélink om hem te controleren. Daar bekijkt de gebruiker het voorbeeld, vult een e-mailadres in en betaalt met een kaart. Pas door de betaling wordt de brief verstuurd.

Wat de gebruiker zegt
Post this letter by Express Post to Jane Citizen,
12 Example Street, Southbank VIC 3006.
My return address is 1 Sample Road, Carlton VIC 3053.

Tools

Assistenten roepen deze zelf aan. Elk resultaat van prepare_letter, finish_letter_upload en get_letter_status bevat reviewUrl, de privépagina waar de gebruiker het voorbeeld controleert en betaalt, en instructions, met wat de gebruiker daarna te horen moet krijgen.

prepare_letter

TOOLprepare_letter

Neemt een bestandsreferentie van de host aan, zoals een bijlage in ChatGPT, downloadt het origineel en start de brief. Het bestand wordt nooit overgetypt, nagebouwd of als tekst verstuurd. Elke aanroep maakt een nieuwe brief aan, dus een assistent roept hem één keer aan.

Argumenten

fileobject · verplicht
De referentie van de host naar de originele bijlage van de gebruiker: download_url en file_id, met file_name en mime_type als die bekend zijn.
fileNamestring · optioneel
De bestandsnaam met extensie, zoals letter.pdf. Alleen nodig als file.file_name ontbreekt.
recipientAddress · verplicht
Naar wie de brief gaat, zoals de gebruiker heeft bevestigd. In Australië, tenzij service gelijk is aan international.
senderAddress · verplicht
Het retouradres van de gebruiker, geprint op de envelop. Het mag in elk land liggen.
servicestring · optioneel
express (standaard), ongevouwen in een B4-envelop; regular, gevouwen in een DL-envelop, tot 12 pagina's; of international, met handtekening bij ontvangst.
signatureboolean · optioneel
Handtekening bij ontvangst, $6 extra in Australië. Gewone post gaat daarmee als aangetekende post.
duplexboolean · optioneel
Dubbelzijdig printen. Statutory declarations worden altijd enkelzijdig geprint.
monoboolean · optioneel
In zwart-wit printen. Kleur blijft standaard in kleur, zonder meerkosten.
stapleboolean · optioneel
De pagina's één keer linksboven nieten. Alleen voor documenten tot 12 pagina's; een langer document wordt bij het berekenen van de prijs geweigerd. Standaard false.
foldboolean · optioneel
Een brief met Express Post of naar het buitenland van maximaal 12 pagina's in een kleinere envelop vouwen.
preparedForstring · optioneel
Alleen als u namens een bedrijf aan een van zijn klanten schrijft: de naam van het bedrijf, maximaal 60 tekens. De betaalpagina toont deze als wat de assistent ons heeft verteld, niet als gecontroleerd, en namen als Unopost, Australia Post, een bank of een overheidsinstantie worden geweigerd.
notifyEmailstring · optioneel
Met preparedFor: het e-mailadres van het bedrijf. Dit krijgt een kopie van elke e-mail over de brief, van betaling tot bezorging, en de klant ziet dit adres voordat hij betaalt.
customerEmailstring · optioneel
Het e-mailadres van de betalende klant, als u dat heeft. De betaalpagina is er al mee ingevuld; e-mails met track & trace gaan naar dit adres.

Adres

name, line1 en suburb zijn verplicht; namen en regels mogen maximaal 40 tekens lang zijn. In Australië bepaalt de postcode de deelstaat. Voor het buitenland voegt u country toe, en voor een brief naar China een Chinees mobiel nummer in phone.

namestring · verplicht
De volledige naam van de persoon.
companystring · optioneel
Een bedrijf of organisatie.
line1string · verplicht
Het straatadres, of een PO Box zoals "PO Box 123".
line2string · optioneel
Een tweede adresregel.
suburbstring · verplicht
De wijk (suburb) of plaats.
statestring · optioneel
Laat dit veld weg in Australië: de postcode bepaalt de deelstaat. Indien opgegeven, een van ACT, NSW, NT, QLD, SA, TAS, VIC of WA, passend bij de postcode. In het buitenland de regio, als het land die gebruikt.
postcodestring · optioneel
Vier cijfers, verplicht in Australië. In het buitenland de postcode, als het land die gebruikt.
countrystring · optioneel
Laat dit veld weg voor Australië. Anders de naam van het land in het Engels. De ontvanger kan alleen in het buitenland zijn met service op international.
phonestring · optioneel
Alleen voor een ontvanger in China: diens Chinese mobiele nummer, dat China Post nodig heeft.
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "prepare_letter",
    "arguments": {
      "file": {
        "download_url": "https://files.example.com/letter.pdf",
        "file_id": "file_abc123",
        "file_name": "letter.pdf",
        "mime_type": "application/pdf"
      },
      "recipient": {
        "name": "Jane Citizen",
        "line1": "12 Example Street",
        "suburb": "Southbank",
        "postcode": "3006"
      },
      "sender": {
        "name": "Sam Sender",
        "line1": "1 Sample Road",
        "suburb": "Carlton",
        "postcode": "3053"
      },
      "service": "express"
    }
  }
}
structuredContent
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "reviewUrl": "https://unopost.com.au/pay?job=019d7a7f-a183-752d-9b3b-11511179033b",
  "currency": "AUD",
  "status": "CONVERTING",
  "service": "express",
  "instructions": "The letter is being laid out, usually for a few seconds. Then give the user reviewUrl to check the preview, enter an email and pay. Nothing is posted until payment. …"
}

Het bestand zelf uploaden

TOOLcreate_letter_upload → finish_letter_upload

Voor clients die het bestand van de gebruiker kunnen lezen en een HTTP-verzoek kunnen doen, maar waarvan de host geen bestandsreferenties heeft. create_letter_upload neemt de bestandsnaam aan en geeft uploadUrl terug, die na 5 minuten verloopt. Stuur de originele bytes daar met PUT naartoe en roep daarna finish_letter_upload aan met de jobId en dezelfde briefvelden als prepare_letter.

PUT uploadUrl
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @letter.pdf

get_letter_status

TOOLget_letter_status

Meldt waar een brief is, met de definitieve pageCount en costCents zodra hij is opgemaakt. Een brief duurt meestal een paar seconden. Vraag hoogstens elke 5 seconden op.

CONVERTED
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "reviewUrl": "https://unopost.com.au/pay?job=019d7a7f-a183-752d-9b3b-11511179033b",
  "currency": "AUD",
  "status": "CONVERTED",
  "pageCount": 3,
  "costCents": 2000,
  "previewUrl": "https://unopost.com.au/preview/019d7a7f-a183-752d-9b3b-11511179033b/letter.pdf?Expires=...&Signature=...",
  "service": "express",
  "instructions": "Ready: give the user reviewUrl to check the preview, enter an email and pay by card. The letter is posted only once it's paid for. pageCount and costCents (AUD cents) are final."
}
FAILED
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "reviewUrl": "https://unopost.com.au/pay?job=019d7a7f-a183-752d-9b3b-11511179033b",
  "currency": "AUD",
  "status": "FAILED",
  "error": "document has more than 80 pages",
  "instructions": "Not posted, and nothing was charged. The document has more than 80 pages. Suggest splitting it into separate letters of up to 80 pages each. …"
}

get_letter_info

TOOLget_letter_info

Actuele prijzen in AUD-centen, de pagina's die elke prijs dekt, pagina- en bestandslimieten, en heldere antwoorden over verzendtijden, bezorging, track & trace en annuleren. Assistenten gebruiken dit om vragen te beantwoorden voordat ze iets klaarmaken.

tools/call
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_letter_info",
    "arguments": {}
  }
}

Limieten

pages
Maximaal 80 pagina's per brief. Splits een langer document op in losse brieven.
regular
Gewone post, en elke gevouwen brief, neemt maximaal 12 pagina's. Langere brieven gaan ongevouwen met Express Post.
size
Maximaal 50 MB per bestand.
files
PDF, Word (.doc, .docx), JPEG of PNG. Word-documenten worden op A4 opgemaakt.
letter
Eén bestand per brief via de connector. De website neemt er maximaal 10.
rate
200 brieven per uur vanaf elke AI-host.

Statussen

CREATED
Gereserveerd, wacht op het bestand.
CONVERTING
Wordt opgemaakt.
CONVERTED AWAITING_PAYMENT
Klaar voor de gebruiker om te controleren en te betalen via reviewUrl.
PAID PAYING SENDING RETRYING MANUAL_CHECK
Betaald. Brieven die op een werkdag vóór 14:30 uur Melbourne-tijd zijn betaald, worden dezelfde dag verstuurd.
POSTED UNDELIVERED
Afgegeven bij Australia Post. Het track & trace-nummer is naar de gebruiker gemaild.
DELIVERED
Volgens de track & trace van Australia Post bezorgd.
FAILED
Niet verstuurd. error zegt waarom, en instructions wat de volgende stap is. Een betaalde brief wordt volledig terugbetaald.
PAYMENT_EXPIRED
Niet op tijd betaald. Het document is verwijderd.
REFUNDED
Geannuleerd of niet te versturen, en teruggestort op de kaart.

Fouten

Een tool die mislukt, geeft een foutresultaat terug waarvan de tekst, geschreven voor de assistent, zegt wat er misging en wat te doen. Er zijn geen foutcodes en we kunnen de meldingen anders formuleren, dus handel naar het soort fout, niet naar de exacte woorden.

Een tool betaalt en verstuurt nooit, dus een fout kost de gebruiker nooit iets. Maar zodra een fout een job noemt, bestaat die brief: controleer hem met get_letter_status in plaats van een tweede klaar te maken.

arguments
Een argument ontbreekt of klopt niet: een adres dat de gebruiker moet bevestigen, opties die niet samengaan, een niet-ondersteund bestandstype, een geweigerde preparedFor of een ongeldig e-mailadres. De melding noemt het. Corrigeer het en roep opnieuw aan; er is niets aangemaakt.
file
Het originele bestand kon niet bij de host worden opgehaald: de link is verlopen, werd geweigerd, was te traag of stuurde te vaak door, verwijst naar een privéadres, of het bestand is leeg of groter dan 50 MB. Er is niets verstuurd. Haal een nieuwe bestandsreferentie op, of gebruik create_letter_upload; stuur nooit een tekstkopie in plaats daarvan.
job …
De melding begint met job …: als de brief is aangemaakt maar een latere stap mislukte. Roep get_letter_status aan met die job-ID, en daarna finish_letter_upload als hij nog op zijn adressen wacht. Maak geen nieuwe brief klaar.
rate limit
Te veel brieven van deze AI-host dit uur, of de daglimiet van de connector is bereikt. Probeer het niet in een lus opnieuw: zeg de gebruiker het later te proberen, of de brief via de website van Unopost te versturen.
paused
We hebben nieuwe brieven tijdelijk gepauzeerd; brieven die al onderweg zijn, gaan gewoon door. Probeer het later opnieuw.
not found
Geen enkele brief heeft die jobId, of de upload is na 24 uur verlopen. Gebruik alleen een job-ID die Unopost aan deze gebruiker heeft teruggegeven, en begin opnieuw als die verlopen is.
server
Er ging bij ons iets mis: Unopost API returned HTTP 5xx. Wacht een paar seconden en probeer het nog één keer.
FAILED
Een brief die niet geprint kan worden, is geen toolfout: get_letter_status geeft FAILED terug met error en duidelijke instructions, zoals een document van meer dan 80 pagina's opsplitsen of een wachtwoord verwijderen.

Betaling en privacy

  • Hij betaalt en verstuurt nooit. De connector geeft geen betaallink terug. De gebruiker betaalt alleen op de website, nadat hij het voorbeeld heeft gezien.
  • Het originele bestand, ongewijzigd. Bestanden gaan nooit mee in MCP-berichten en worden nooit vervangen door tekst.
  • Privélinks. Een job-ID is de enige sleutel tot een brief, dus assistenten delen die en reviewUrl alleen met de gebruiker.
  • Annuleren vóór het printen. Een betaalde brief kan via reviewUrl met volledige terugbetaling worden geannuleerd totdat wij hem beginnen te printen.
  • Verwijderd na verzending. Documenten worden verwijderd zodra een brief is verstuurd, en die van een onbetaalde brief na 24 uur.

Webhooks? Gebruik een inbox

De connector heeft geen webhooks. Geef de assistent in plaats daarvan een notifyEmail van een inbox die uw software leest. Elke e-mail over een brief komt van notifications@unopost.com.au en draagt de brief in de headers mee, zodat een maildienst die code uitvoert op binnenkomende mail, zoals Amazon SES, Postmark, Mailgun of SendGrid, op elke update kan reageren zodra die binnenkomt.

  1. Laat notifyEmail wijzen naar een adres dat uw maildienst ontvangt, zoals letters@yourbusiness.com.au.
  2. Accepteer alleen mail van notifications@unopost.com.au die de DMARC-controle doorstaat, en negeer de rest.
  3. Lees de headers, niet de tekst, want die kan veranderen. Negeer een Unopost-Event-Id die u al hebt gezien.

Headers

Unopost-Letter-Id
De jobId van de brief, zoals de connector die teruggaf.
Unopost-Event
Wat er is gebeurd: receipt, posted, tracking, retrying, delayed, awaiting-collection, delivered, cancelled, failed, refunded of refunded-printed.
Unopost-Event-Id
Hetzelfde voor hetzelfde nieuws, hoe vaak het ook wordt verstuurd, zodat u herhalingen kunt negeren.
Unopost-Letter-Status
De status van de brief daarna: TO_POST, POSTED, DELAYED, AWAITING_AT_COLLECTION, DELIVERED, CANCELLED of REFUNDED.
Unopost-Tracking-Number
Het track & trace-nummer van Australia Post, zodra de brief is verstuurd.
Unopost-Copy
business op de kopie die een bedrijf krijgt; niet op de eigen e-mail van de klant.
Headers
From: Unopost <notifications@unopost.com.au>
Unopost-Letter-Id: 019d7a7f-a183-752d-9b3b-11511179033b
Unopost-Event: tracking
Unopost-Event-Id: evt_3f9a1c0b7e2d4a6b8c1d0e2f
Unopost-Letter-Status: POSTED
Unopost-Tracking-Number: 33LQV507012301000935005
Unopost-Copy: business
Amazon SES · receipt rule Lambda
export const handler = async (event) => {
  const { mail, receipt } = event.Records[0].ses;
  const { from } = mail.commonHeaders;
  const fromUs = from.length === 1 && /(^|<)notifications@unopost\.com\.au>?$/i.test(from[0]);
  // DMARC, not DKIM alone: only a DMARC pass means unopost.com.au signed it.
  if (!fromUs || receipt.dmarcVerdict.status !== 'PASS') return;
  const header = name =>
    mail.headers.find(h => h.name.toLowerCase() === name.toLowerCase())?.value;
  await recordUpdate({
    letterId: header('Unopost-Letter-Id'),
    event: header('Unopost-Event'),
    eventId: header('Unopost-Event-Id'), // drop one you've seen
    status: header('Unopost-Letter-Status'),
    trackingNumber: header('Unopost-Tracking-Number'),
  });
};

Kopieën beginnen zodra de klant betaalt, dus voor een brief die nooit wordt betaald komt er niets binnen: controleer tot dan get_letter_status. De e-mails aan de klant zelf bevatten dezelfde headers. We kunnen headers toevoegen, maar deze nooit hernoemen of verwijderen.

Vindbaarheid

Agents kunnen de connector vinden zonder dat iemand het ze vertelt. Hij staat in onze AI-catalogus, die naar de MCP-serverkaart verwijst.

Prijzen

OnderdeelPrijs
Gewone post, gevouwen zodat het in de brievenbus past: maximaal 12 pagina's$10
Aangetekende post, gewone post met handtekening bij ontvangst: maximaal 12 pagina's$16
Express Post, ongevouwen in een B4-envelop: 20 pagina's inbegrepen, daarna $0.30 per extra pagina$20
Express Post met handtekening bij ontvangst: 20 pagina's inbegrepen, daarna $0.30 per extra pagina$26
Track & trace, kleur, dubbelzijdig of zwart-wit printen, en nietenGratis

Elke brief heeft track & trace. De uiteindelijke prijs hangt af van het aantal pagina's, dat bekend is zodra de brief is opgemaakt.

Op brieven die via de connector worden klaargemaakt, zijn net als op alle andere onze Voorwaarden en ons Privacybeleid van toepassing.