unopost

Connecteur MCP

Postez une lettre depuis votre assistant IA

Ajoutez une URL à Claude, ChatGPT ou tout client MCP. Votre assistant prépare votre document original pour qu'il soit imprimé en A4 et posté par Australia Post, avec suivi. Vous vérifiez l'aperçu et payez sur notre site : rien n'est posté sans vous.

$10 Courrier standard$20 Express Post

URL du serveur
https://unopost.com.au/api/mcp

Les mêmes prix que sur le site, GST incluse. Sans compte, connexion ni clé d'API.

Vous postez depuis votre propre code ? Le connecteur fonctionne avec tout client MCP ou en HTTP simple, mais chaque lettre se paie sur notre site. Pour poster sans intervention humaine, utilisez l'API x402.

Le connecterCarte du serveur

Le connecter

Le connecteur est un serveur MCP distant en Streamable HTTP. Il ne demande aucune connexion : laissez l'authentification désactivée.

  • Claude : ouvrez Customize → Connectors, choisissez Add custom connector, nommez-le Unopost et collez l'URL du serveur. Dans une conversation, activez Unopost depuis le menu des outils.
  • ChatGPT : ajoutez un connecteur personnalisé en mode développeur avec l'URL du serveur et sans authentification, puis activez-le dans la conversation.
  • Claude Code et autres clients : ajoutez-le comme serveur HTTP distant. Tout client qui accepte des serveurs MCP personnalisés utilise la même 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"
    }
  }
}

Le parcours d'une lettre

  1. Confirmer les adresses
  2. Préparer la lettre
  3. Attendre la mise en page
  4. L'utilisateur paie sur le site

L'assistant confirme les adresses avec l'utilisateur, prépare la lettre et lui donne un lien de vérification privé. L'utilisateur y vérifie l'aperçu, saisit une adresse e-mail et paie par carte. C'est le paiement qui fait partir la lettre.

Ce que dit l'utilisateur
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.

Outils

Les assistants les appellent eux-mêmes. Chaque résultat de prepare_letter, finish_letter_upload et get_letter_status contient reviewUrl, la page privée où l'utilisateur vérifie l'aperçu et paie, et instructions, qui indiquent quoi dire ensuite à l'utilisateur.

prepare_letter

TOOLprepare_letter

Prend une référence de fichier fournie par l'hôte, comme une pièce jointe dans ChatGPT, télécharge l'original et crée la lettre. Le fichier n'est jamais ressaisi, reconstruit ni envoyé sous forme de texte. Chaque appel crée une nouvelle lettre : un assistant ne l'appelle donc qu'une fois.

Arguments

fileobject · obligatoire
La référence de l'hôte à la pièce jointe originale de l'utilisateur : download_url et file_id, avec file_name et mime_type s'ils sont connus.
fileNamestring · facultatif
Le nom du fichier avec son extension, par exemple letter.pdf. Nécessaire seulement si file.file_name manque.
recipientAddress · obligatoire
Le destinataire de la lettre, tel que l'utilisateur l'a confirmé. En Australie, sauf si service vaut international.
senderAddress · obligatoire
L'adresse de retour de l'utilisateur, imprimée sur l'enveloppe. Elle peut se trouver dans n'importe quel pays.
servicestring · facultatif
express (par défaut), à plat dans une enveloppe B4 ; regular, pliée dans une enveloppe DL, jusqu'à 12 pages ; ou international, avec signature à la livraison.
signatureboolean · facultatif
Signature à la livraison, $6 de plus en Australie. Avec elle, le Courrier standard part en Courrier recommandé.
duplexboolean · facultatif
Impression recto verso. Les déclarations solennelles sont toujours imprimées en recto.
monoboolean · facultatif
Impression en noir et blanc. Par défaut, la couleur reste en couleur, sans supplément.
stapleboolean · facultatif
Agrafage des pages, une fois dans le coin supérieur gauche. Uniquement pour les documents de 12 pages au plus ; un document plus long est refusé lors du calcul du prix. Par défaut : false.
foldboolean · facultatif
Plier une lettre Express Post ou internationale de 12 pages maximum dans une enveloppe plus petite.
preparedForstring · facultatif
Uniquement si vous écrivez pour une entreprise à l'un de ses clients : le nom de l'entreprise, 60 caractères maximum. La page de paiement l'affiche comme ce que l'assistant nous a indiqué, non comme vérifié, et les noms tels qu'Unopost, Australia Post, une banque ou un organisme public sont refusés.
notifyEmailstring · facultatif
Avec preparedFor : l'adresse e-mail de l'entreprise. Elle reçoit une copie de chaque e-mail concernant la lettre, du paiement à la livraison, et le client voit cette adresse avant de payer.
customerEmailstring · facultatif
L'adresse e-mail du client qui paie, si vous l'avez. La page de paiement s'ouvre avec ce champ prérempli ; les e-mails de suivi y sont envoyés.

Adresse

name, line1 et suburb sont obligatoires ; les noms et les lignes acceptent jusqu'à 40 caractères. En Australie, le code postal détermine l'État. Pour l'étranger, ajoutez country, ainsi qu'un numéro de mobile chinois dans phone pour une lettre vers la Chine.

namestring · obligatoire
Le nom complet de la personne.
companystring · facultatif
Une entreprise ou un organisme.
line1string · obligatoire
L'adresse postale, ou une PO Box telle que "PO Box 123".
line2string · facultatif
Une seconde ligne d'adresse.
suburbstring · obligatoire
Le quartier ou la ville.
statestring · facultatif
À omettre en Australie : le code postal le détermine. S'il est fourni, l'une des valeurs ACT, NSW, NT, QLD, SA, TAS, VIC ou WA, en accord avec le code postal. À l'étranger, la région, si le pays en utilise une.
postcodestring · facultatif
Quatre chiffres, obligatoire en Australie. À l'étranger, le code postal, si le pays en utilise un.
countrystring · facultatif
À omettre pour l'Australie. Sinon, le nom du pays en anglais. Le destinataire ne peut être à l'étranger qu'avec service à international.
phonestring · facultatif
Uniquement pour un destinataire en Chine : son numéro de mobile chinois, dont China Post a besoin.
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. …"
}

Téléverser le fichier vous-même

TOOLcreate_letter_upload → finish_letter_upload

Pour les clients capables de lire le fichier de l'utilisateur et d'envoyer une requête HTTP, mais dont l'hôte n'a pas de références de fichier. create_letter_upload prend le nom du fichier et renvoie uploadUrl, qui expire au bout de 5 minutes. Envoyez-y les octets d'origine par PUT, puis appelez finish_letter_upload avec le jobId et les mêmes champs de lettre que 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

Indique où en est une lettre, avec le pageCount et le costCents définitifs une fois la mise en page faite. Une lettre prend généralement quelques secondes. Interrogez au plus toutes les 5 secondes.

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

Les prix actuels en cents AUD, les pages couvertes par chaque prix, les limites de pages et de fichiers, et des réponses claires sur les heures de dépôt, la livraison, le suivi et l'annulation. Les assistants s'en servent pour répondre aux questions avant de préparer quoi que ce soit.

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

Limites

pages
Jusqu'à 80 pages par lettre. Divisez un document plus long en plusieurs lettres.
regular
Le Courrier standard, comme toute lettre pliée, accepte jusqu'à 12 pages. Les lettres plus longues partent en Express Post, à plat.
size
Jusqu'à 50 Mo par fichier.
files
PDF, Word (.doc, .docx), JPEG ou PNG. Les documents Word sont mis en page au format A4.
letter
Un fichier par lettre via le connecteur. Le site en accepte jusqu'à 10.
rate
200 lettres par heure depuis chaque hôte IA.

Statuts

CREATED
Réservée, en attente de son fichier.
CONVERTING
Mise en page en cours.
CONVERTED AWAITING_PAYMENT
Prête à être vérifiée et payée par l'utilisateur sur reviewUrl.
PAID PAYING SENDING RETRYING MANUAL_CHECK
Payée. Les lettres payées avant 14 h 30, heure de Melbourne, un jour ouvré sont postées le jour même.
POSTED UNDELIVERED
Déposée auprès d'Australia Post. Le numéro de suivi a été envoyé par e-mail à l'utilisateur.
DELIVERED
Le suivi d'Australia Post l'indique comme livrée.
FAILED
Non postée. error indique pourquoi, et instructions que faire ensuite. Une lettre payée est intégralement remboursée.
PAYMENT_EXPIRED
Non payée à temps. Son document a été supprimé.
REFUNDED
Annulée ou impossible à poster, et remboursée sur la carte.

Erreurs

Un outil qui échoue renvoie un résultat d'erreur dont le texte, rédigé pour l'assistant, indique ce qui s'est mal passé et quoi faire. Il n'y a pas de codes d'erreur et nous pouvons reformuler les messages : réagissez donc au type d'erreur, pas à sa formulation exacte.

Un outil ne paie ni ne poste jamais, donc une erreur ne coûte jamais rien à l'utilisateur. Mais dès qu'une erreur mentionne une tâche, cette lettre existe : vérifiez-la avec get_letter_status plutôt que d'en préparer une seconde.

arguments
Un argument manque ou est incorrect : une adresse que l'utilisateur devrait confirmer, des options incompatibles, un type de fichier non pris en charge, un preparedFor refusé ou une adresse e-mail mal formée. Le message le précise. Corrigez-le et rappelez l'outil ; rien n'a été créé.
file
Le fichier original n'a pas pu être récupéré auprès de l'hôte : le lien a expiré, a été refusé, était trop lent ou redirigeait trop souvent, pointe vers une adresse privée, ou le fichier est vide ou dépasse 50 Mo. Rien n'a été posté. Obtenez une nouvelle référence de fichier ou utilisez create_letter_upload ; n'envoyez jamais une copie texte à la place.
job …
Le message commence par job …: quand la lettre a été créée mais qu'une étape ultérieure a échoué. Appelez get_letter_status avec cet identifiant de tâche, puis finish_letter_upload si elle attend encore ses adresses. Ne préparez pas d'autre lettre.
rate limit
Trop de lettres depuis cet hôte IA cette heure-ci, ou la limite quotidienne du connecteur est atteinte. Ne réessayez pas en boucle : dites à l'utilisateur de réessayer plus tard ou de l'envoyer sur le site d'Unopost.
paused
Nous avons suspendu les nouvelles lettres pour un temps ; les lettres déjà en cours suivent leur cours. Réessayez plus tard.
not found
Aucune lettre n'a ce jobId, ou son téléversement a expiré au bout de 24 heures. N'utilisez qu'un identifiant de tâche qu'Unopost a renvoyé à cet utilisateur, et recommencez s'il a expiré.
server
Un problème est survenu de notre côté : Unopost API returned HTTP 5xx. Attendez quelques secondes et réessayez une fois.
FAILED
Une lettre impossible à imprimer n'est pas une erreur d'outil : get_letter_status renvoie FAILED avec error et des instructions claires, comme diviser un document de plus de 80 pages ou retirer un mot de passe.

Paiement et confidentialité

  • Il ne paie ni ne poste jamais. Le connecteur ne renvoie aucun lien de paiement. L'utilisateur paie uniquement sur le site, après avoir vu l'aperçu.
  • Le fichier original, inchangé. Les fichiers ne transitent jamais dans les messages MCP et ne sont jamais remplacés par du texte.
  • Liens privés. Un identifiant de tâche est la seule clé d'une lettre : les assistants ne le communiquent, avec reviewUrl, qu'à l'utilisateur.
  • Annulation avant impression. Une lettre payée peut être annulée depuis reviewUrl, avec remboursement intégral, tant que nous n'avons pas commencé à l'imprimer.
  • Supprimés après l'envoi. Les documents sont supprimés une fois la lettre postée, et ceux d'une lettre impayée au bout de 24 heures.

Des webhooks ? Utilisez une boîte de réception

Le connecteur n'a pas de webhooks. Donnez plutôt à l'assistant un notifyEmail correspondant à une boîte de réception que votre logiciel lit. Chaque e-mail concernant une lettre provient de notifications@unopost.com.au et porte la lettre dans ses en-têtes : un service de messagerie qui exécute du code sur le courrier entrant, comme Amazon SES, Postmark, Mailgun ou SendGrid, peut donc traiter chaque mise à jour dès son arrivée.

  1. Faites pointer notifyEmail vers une adresse que reçoit votre service de messagerie, par exemple letters@yourbusiness.com.au.
  2. N'acceptez que les e-mails de notifications@unopost.com.au qui passent la vérification DMARC, et ignorez le reste.
  3. Lisez les en-têtes, pas le texte, qui peut changer. Ignorez un Unopost-Event-Id déjà vu.

En-têtes

Unopost-Letter-Id
Le jobId de la lettre, tel que le connecteur l'a renvoyé.
Unopost-Event
Ce qui s'est passé : receipt, posted, tracking, retrying, delayed, awaiting-collection, delivered, cancelled, failed, refunded ou refunded-printed.
Unopost-Event-Id
Identique pour une même nouvelle, quel que soit le nombre d'envois : vous pouvez donc ignorer les doublons.
Unopost-Letter-Status
Le statut de la lettre ensuite : TO_POST, POSTED, DELAYED, AWAITING_AT_COLLECTION, DELIVERED, CANCELLED ou REFUNDED.
Unopost-Tracking-Number
Le numéro de suivi Australia Post, une fois la lettre postée.
Unopost-Copy
business sur la copie que reçoit une entreprise ; pas sur l'e-mail du client lui-même.
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'),
  });
};

Les copies commencent dès que le client paie : rien n'arrive donc pour une lettre jamais payée. Consultez get_letter_status jusque-là. Les e-mails du client lui-même portent les mêmes en-têtes. Nous pouvons ajouter des en-têtes, mais nous ne renommerons ni ne supprimerons jamais ceux-ci.

Découverte

Les agents peuvent trouver le connecteur sans qu'on le leur indique. Il figure dans notre catalogue IA, qui renvoie à sa carte de serveur MCP.

Tarifs

PrestationPrix
Courrier standard, plié pour entrer dans une boîte aux lettres : jusqu'à 12 pages$10
Courrier recommandé, le Courrier standard remis contre signature : jusqu'à 12 pages$16
Express Post, à plat en enveloppe B4 : 20 pages incluses, puis $0.30 par page supplémentaire$20
Express Post avec signature à la livraison : 20 pages incluses, puis $0.30 par page supplémentaire$26
Suivi, impression couleur, recto verso ou noir et blanc, et agrafageGratuit

Chaque lettre est suivie. Le prix final dépend du nombre de pages, connu une fois la lettre mise en page.

Les lettres préparées via le connecteur sont couvertes, comme toutes les autres, par nos Conditions d'utilisation et notre Politique de confidentialité.