Toutes les dernières mises à jour, fonctionnalités et améliorations de MailMCP.
Pilotage : refunded_amount Polar est déjà la part HT, la TVA remboursée est séparée
Pilotage : chiffres lisibles sur les barres, pluriels et colonnes sans retour à la ligne
Pilotage : CA HT, frais Polar et net par semaine ou par mois, graphes en barres lisibles
Coupure anti-spam : le plafond d'envoi du fournisseur ne compte plus comme rejet permanent
Webhook Polar : la fin d'un ancien abonnement ne retire plus le Pro d'une boîte qui en porte un nouveau
Paliers Pro 3 000 et 6 000 appels/jour, prorata facturé immédiatement
Plan Activation 72 h : tableau de bord hebdomadaire et document de suivi
Resiliation programmee : on demande pourquoi, en un clic, tant qu'il est temps
Activation : le correctif s'affiche a cote de la boite en echec, et le premier appel est guide
Connexion IMAP : l'echec dit enfin pourquoi, en un seul libelle
Mails d'onboarding : sequences coupees apres J+7, pixel d'ouverture, UTM, offre annuelle elargie
IMAP : une reponse « * BAD » sans tag met fin a la commande
Outreach : une boite Pro suffit, le plan du compte ne fait plus foi
Journal MCP : un refus dit desormais quelle boite et quel outil
Creation de dossier : le prefixe d'espace de noms est essaye avant d'abandonner
Alertes : les erreurs d'entree sur upload_attachment_chunk ne sont plus des incidents
fix(calendrier): un marqueur journée entière ne bloque plus la journée
Lecture d'un mail : un corps non-UTF-8 renvoyait « false » au lieu du texte
Alertes : le gate calendrier des boîtes Free n'est pas un bug
Réponses dans le fil : un Message-ID replié sur plusieurs lignes ressortait vide
Tableau de bord : les erreurs remontees par un controleur etaient invisibles
CalDAV : messages d'erreur reseau lisibles (trouve en test contre un vrai serveur)
Envoi : accepte un destinataire passé sous forme de tableau
CalDAV : parcours complet couvert par des tests, et suite entièrement verte
Pièces jointes : corrige une corruption silencieuse et les erreurs qui bloquaient les clients
Tests : socle CalDAV (16 tests, 78 assertions)
CalDAV : calendriers connectés + 6 outils MCP (agenda, créneaux libres, prise de rendez-vous)
MCP schedule_email : accepte les délais en secondes, semaines et mois (FR/EN)
Réseau : résolution IPv4 explicite + SNI pour IMAP/SMTP (incident IPv6 VPS 09/09, timeouts websupport.cz)
MCP : création de dossier (Drafts…) — dernier recours INBOX./INBOX/ quand aucun préfixe de namespace n'est détectable (boîte neuve avec INBOX seul, cas BAL#796 selfnet.at)
Rescue IMAP : fournisseur déduit de l'hôte testé (pas de l'adresse d'inscription) ; séquences raccourcies : ne pas renvoyer une étape à un user déjà passé à une étape plus tardive
Mails auto (plan 09/09) : mail « test IMAP échoué » par fournisseur + blocage Microsoft avant test, nudge quota élargi (1 j, silence 3 j, relance J+7, CTA tracé), séquences no_bal/no_mcp raccourcies, mail premier appel réussi, offre annuelle aux mensuels au 2e paiement
Page upgrade : encart « Besoin de plus de 500 appels/jour ? » (paliers 1 000 / 1 500 sur demande au support, formulaire prérempli)
Paliers Pro 500/1000/1500 appels/jour par boîte + garde-fous (rate limit 20/min, plafond d'envois, coupure anti-spam) + vrai fil de discussion sur reply_to_id + timeout IMAP global 120 s
MCP : accepte to/cc/bcc en tableau (TypeError fatal sur send_email)
OAuth : retire /.well-known/oauth-protected-resource (RFC 9728) — cassait ChatGPT
Corrige 2 bugs bloquants : TTL des pieces jointes + OAuth des clients publics
Observability : silencier les bounces/NDR (Undelivered Mail Returned to Sender) sans alerter
Git : ignore artefacts Playwright-MCP + captures/notes de travail (annuaires, mockups)
Alertes : ne plus signaler « Chunk too large » comme un bug
Loop watchdog : fenêtre silence nocturne 00-08h + fix thrash support:sync (skip ré-import >45j)
Rapport daily-stats : 08:00 -> 06:00 (2h plus tot, demande Nicolas)
Observability : desactive les alertes 'regression compte' (redondant avec daily)
Support : categorie/onglet 'Commercial' pour les sollicitations B2B
Outreach : but plus clair (accroche benefit-first + 3 etapes)
Rapport hebdo consolide (securite + sante + business) -> nicolas@lws.fr lundi
Securite : cron d'audit dependances (CVE + maj dispo) -> alerte Nicolas
Securite : maj deps vulnerables (commonmark 2.10.0 + guzzle 7.15.5)
Outreach : captation auto du site via la section Liens de la chaine (innertube)
Outreach : renseigner manuellement le site d'une cible (section Liens non captee par l'API)
Outreach email finder : fallback contact@domaine gated sur MX
Outreach : garde-fou anti-placeholder avant envoi
Rescue onboarding : garde email valide (LIKE '%@%.%') sur les 5 cohortes
MCP read_email : garde-fou taille (tronque > 1 Mo) pour éviter le drop de session
dashboard affiche la limite par boîte (500) + ObservabilityAlerts n'avance le state qu'après envoi
Relance : prioriser la séquence 0 MCP sur 0 BAL (anti-famine du rate limit)
Observabilité : ne plus alerter sur attachment_id invalide (re-upload chunk)
Observabilité : ne plus alerter Nicolas sur le timeout IMAP 60s
Doc ChatGPT : chemin MCP build-agnostique (Plugins OU Connecteurs)
Guide : « Comment utiliser ChatGPT pour répondre à vos e-mails » (FR + EN)
Doc ChatGPT : réécriture pour la nouvelle UI (Connecteurs + Mode développeur)
Honeypot register : display:none anti-autofill (faux positif signup) + DKIM checker : liste de sélecteurs élargie
Onglet SMTP recadré sur la BAL support + retrait Kevin du cron
Digest quotidien : « Boîtes Pro actives » (payantes/offertes) en tête + Users Pro calculé sur les boîtes
Doc : distinguer éditeur (STAY WEB SASU) et hébergeur (LWS, ISO 27001)
support:import-external : résoudre ceo@lws.fr par email (id 3 supprimé → 126) + sortie SUCCESS si source absente
Rescue onboarding : tracking de clic des CTA (route /go + clicked_at)
SMTP : journal des echecs (smtp_failures) + retry transitoire + rapport mensuel
MCP : annotations title + readOnlyHint/destructiveHint sur les 20 outils
Ménage tokens MCP + dead-man's switch du loop d'observabilité
Facturation Pro par boîte : accountLimit sur capacité payée + filet multi-sièges Polar
Dashboard : badge PRO si l'user a une boite Pro (pas seulement plan user)
Billing : mail de rappel avant expiration des Pro offerts (J-14/J-7/J-2)
Billing : page upgrade honnete pour les Pro OFFERTS (sans abo Polar)
Rescue : fix lien /help (url->route, evite 404) + sous-flag dedie sequence no_bal
ImapService : timeout de lecture socket 60s (anti-worker bloque)
Anti-orphelin abo Pro + fix race mcp_connections
Observabilite MCP (etape C) : 'Activite MCP recente' cote client (transparence)
Securite/stabilite : detracker .env du repo (cause du bug OAuth localhost)
Observabilite : elargit le filtre anti-phishing + auto-silence (spam direct)
Monitor : fix comptage established (ss retire la colonne State avec le filtre)
Monitor : 'Connexions actives' = connexions ETABLIES uniquement
Support : desactive la relance J+24h (support:check-followups)
Relance J+24h : email HTML propre (cartes, charte alertes)
Registre MCP officiel : route .well-known/mcp-registry-auth (verif domaine HTTP)
Alerte ventes Pro : source = polar_events (au lieu des notifs email)
BAL : alerte "nouvelle IP MCP" desactivee par defaut a la creation
Alerte : délai Free->Pro en entier + détection plan robuste (12 mois / annuel / mensuel)
Alerte observabilité : email HTML propre + ventes Pro séparées avec délai Free→Pro
lien cassé : cross-links connecteurs IMAP via use_case_url (slugs FR/EN)
Use-cases : carte « Connecteur IMAP ChatGPT » dans l'index (maillage interne)
Positionnement : hero home nomme Claude & ChatGPT + visuel « conversation IA » sur les landings Claude/ChatGPT
Conversion : nudge sur le mur des 5 appels/jour (message MCP enrichi + email auto Free->Pro)
Alerte observabilite : filtre le spam/phishing des mails support (plus d'alerte pour les arnaques 'domaine suspendu')
Observabilite : filtre les rejets SMTP destinataire (Recipient address rejected / No valid recipient) = erreur input LLM, pas notre bug
create_folder idempotent : dossier deja existant = succes (fin du faux positif 'bug')
Upgrade Pro : le flux generique renvoie vers Comptes email pour choisir la boite
Webhook Polar : matching de secours par user_id/email quand account_id absent (flux seats)
Daily stats : fix variable $num manquante dans la closure delta
Daily stats : mail matinal en dashboard HTML + ventes/CA de la veille + churn
Fixes: server/discover en INFO+(-32601), message quota adapte au Pro, formulations Pro exactes (fin des 'illimites')
CGV : article 'Commande, facturation et paiement' complet (exigences Polar MST + droit FR)
Quota Free: corrige '20 -> 5 appels MCP/jour' sur tout le site (le quota reel est 5)
Legal : allege l'editeur (mentions), corrige les quotas CGV, DPA en page imprimable
Legal : refonte en centre légal structuré (1 document = 1 page)
Legal/statut : alleger sous-processeurs + epurer la page /status
Mentions legales : ajout du bloc Prestataire de paiement (Polar Software Inc., Merchant of Record)
Paiement : expliquer au client le role de Polar (Merchant of Record) + corriger 'Stripe' -> 'Polar'
CGV : Stripe -> Polar (Merchant of Record) + palier Free = essai, pas de remboursement au-dela du delai legal
support:import-external : echec IMAP transitoire -> WARNING + SUCCESS (au lieu de FAILURE)
Live chat : bulle plus humaine (photo + 'Assistant IA' + point vert anime ping) + en-tete dynamique (nom — Assistant IA, statut 'En ligne · l'IA peut faire des erreurs' avec point vert anime)
Profil : pre-remplit le pays avec le pays detecte a l'inscription (registration_country) si le champ est vide
observability:alerts : ignore les erreurs des scripts de diag CLI (trace 'Standard input code')
Paiement ouvert a tous : gate IP leve + fix metadata Polar (account_id vide refuse -> omis si absent)
Upgrade : badges de confiance = icones colorees + texte, sans fond/bordure (ne fait plus 'bouton')
Upgrade : badges de confiance en pastilles colorees (vert=securite Stripe, bleu=facture TVA, indigo=resiliable) plus visibles
Page upgrade plus vendeuse : reassurance 'test gratuit', preuve sociale, badges confiance (Stripe/TVA/resiliable)
Facturation : retire le blocage avant Pro, Polar collecte l'adresse + webhook la synchronise
Facturation : pays requis + adresse obligatoire avant Pro + autocomplete adresse (Photon/OSM)
Upgrade : bloquer la souscription tant que l'email n'est pas verifie
Profil : Full name + champs requis/optionnel + select pays recherchable
Devise : regle Europe->EUR / hors Europe->USD + pays d'inscription pour les users connectes
Devise auto selon le pays (US=USD, sinon EUR) + page upgrade currency-aware
Tarifs : retire la mention '10 boites en annuel = 19,90/mois refacturable' (home #pricing + /pricing) — chiffre incoherent avec la grille par-boite
Quota par boite : filet de securite pour les clients payants (plan au niveau user)
Quota MCP par boite (aligne sur le tarif par siege)
Page compte : formulaire d'edition des parametres de connexion (reconnexion)
Upgrade : lien CGV selon la langue active (EN -> /en/legal#terms, FR -> /legal#terms)
Dates d'expiration + resiliation Pro + downgrade auto + CGV obligatoires
Phase 3 : webhook Polar -> provisioning Pro par boite (metadata.account_id)
Factures : onglet dedie 'Facturation' dans /dashboard/profile (retire de la page upgrade)
Offre par boite (siege) : badge + bouton upgrade sur chaque compte
Dashboard: badge plan + bouton Passer a Pro + page souscription Polar (gate IP preview)
Tarifs : selecteur 3 paliers (Mensuel / 12 mois -63% / 24 mois -75%) + textes
ObservabilityAlerts : silence 'non trouve ou deja envoye' (cancel_scheduled input)
Legal : bascule editeur MailMCP vers STAY WEB (SASU) + nouvelle adresse
Doc chatgpt-email : write fonctionne aussi sur Plus (test reel), retrait du caveat lecture seule
MCP OAuth : renvoyer le scope demandé dans la réponse /token (fix warning ChatGPT)
Doc chatgpt-email : corriger le prerequis de plan (Developer mode, write Business/Enterprise)
MCP OAuth /authorize : ne plus rejeter un client dyn_ dont l'enregistrement a expiré
ObservabilityAlerts : silence 'filename et (content OR attachment_id)' (PJ input LLM)
MCP draft_email : auto-créer le dossier Brouillons si absent + détection localisée
ObservabilityAlerts : silence 'réservée aux comptes Pro' (gate Outreach Free->Pro)
MCP move_email : accepter folder/target/dest… en alias de destination
ObservabilityAlerts : silence 'Failed to connect to IMAP server' (miroir anglais)
MCP move_email : resolver de destination (namespace préfixé + dossier existant)
ObservabilityAlerts : silence 'Impossible de se connecter au SMTP' + 'RateLimitReached'
MCP : accepter q/search/term/keyword en alias de query (search_emails)
ObservabilityAlerts : silence 'base64 invalide après' (troncature PJ)
ObservabilityAlerts : silence 'contenu base64 invalide'
ImapService : encoder les noms de dossiers en modified UTF-7 (RFC 3501)
ObservabilityAlerts : silence 'Combined chunks could not be decoded'
MCP : accepter email_id/emailId en alias de id sur les tools email
MCP : toggle par-BAL pour l'alerte "nouvelle IP" (fix ticket Max Kossatz #242544)
ObservabilityAlerts : silence 'SMTP rejected email'
ObservabilityAlerts : silence 'Generate signature failed'
ObservabilityAlerts : silence 'Email ID is required'
Onboarding rescue funnel : 3 mails auto de rattrapage (H+48h / J+3 sans BAL / J+3 sans call MCP)
MCP dispatcher : fallback tolérant method=tool_name + silence l'alerte résiduelle
Dashboard accounts/{id} : onglet Statistiques MCP — Option B
Dashboard accounts : ajoute compteur MCP inline (aujourd'hui/semaine/mois) — Option A
search_emails/list_emails : expose 'mailbox' + 'note' pour éviter le bug UID cross-mailbox
OAuth refresh_token : grace period 30s après revocation (fix race condition claude.ai)
TEMP: log détaillé tools/call pour diag pourquoi mcp_calls reste vide
urgent : restaure le fallback OAuth /authorize (safe) — claude.ai n'envoie pas de resource
balise <title> dashboard — strip_tags sur page-title pour retirer HTML/SVG
Sécurise le OAuth MCP /authorize — exige login + consent + supprime le fallback dangereux
UX sidebar : signaler la cliquabilité de la user card (profil)
Chrome password suggestion — ajout autocomplete sur profile/login/reset
i18n /dashboard/accounts batch 2 : wizard entier (step 1/2/3)
i18n /dashboard/accounts batch 1 : strings hors wizard
Wizard : URLs des steps provider cliquables (target=_blank)
P1 wizard BAL : guide contextuel provider + auto-fill hosts + conseils erreur
Review asks : rate 20→10/jour + section stats dans daily report 08:00
Stats mail auto : sélecteur de période 30j / 3 mois / 12 mois / Tout
Stats mail auto : CTR global + CTR par trigger
Ajoute section « Détail des 4 triggers » (accordion) dans onglet Mail auto
Ajoute les mails automatiques (review-ask, review-followup) dans l'onglet Templates
Système auto de demandes d'avis Trustpilot (feature flag OFF par défaut)
Filtre business : « non trouvé ou déjà envoyé » (cancel_scheduled stale)
SMTP bare LF rejection (552) — normalise CRLF sur body/bodyHtml/htmlSignature
send_email/draft_email/schedule_email : ajout du champ bcc
observability:alerts — filtre 'base64 invalide après' (PJ inline tronquée)
Alerte MCP enrichie : localisation, ASN, client probable, user-agent
observability:alerts — filtre 'Combined chunks could not be decoded as base64'
observability:alerts — filtre 'Recipient address rejected' (user input)
security: bump guzzle 7.11→7.12, psr7 2.11→2.12, phpseclib 3.0.52→3.0.55
observability:alerts — filtre 'Failed to move email' (erreur user input)
observability:alerts — affiche "FIX PROBABLE : commit XXX" si commit post-erreur
Schedule::command->everyTwentyMinutes() n'existe pas, utiliser cron('*/20 * * * *')
MCP base64 PJ : détection troncature dès 2KB + signatures binaires
support:check-followups : skip si on a re-écrit au client après le Sent en question
Léa — Assistant IA
En ligne · l'IA peut faire des erreurs
Besoin d'un humain ? contact@mailmcp.io