Serveur MCP

mb-mastering

com.mathieuberthet/mb-mastering

Ce que fait ce MCP

Provides audio mastering service information, pricing, quote requests, client invoicing, payment links, and studio administration tools.

fetch
Récupère le contenu complet d'un document MB Mastering à partir de son id (obtenu via search). / Fetches the full content of a document by id (from search results).
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Identifiant du document renvoyé par search.'}}, 'additionalProperties': False}
get_faq
Réponses aux questions fréquentes sur le mastering chez MB Mastering : prix, délais, révisions, travail à distance, gravure vinyle, localisation.
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_pricing
Donne les tarifs de mastering de MB Mastering, ainsi que les délais, la politique de révisions et les modalités de paiement.
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_services
Liste les services de mastering de MB Mastering (mastering stéréo, stems, à distance, gravure vinyle, numérisation, formation) avec leurs tarifs et descriptions.
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_studio_info
Informations sur le studio MB Mastering : fondateur, expérience, adresse à Paris, équipement analogique, liens et réseaux.
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
imap_get_mail
RÉSERVÉ AU STUDIO (token). Récupère le corps + liens (WeTransfer, Drive, SwissTransfer, etc.) + pièces jointes d'un mail INBOX par UID. UID est fourni par imap_list_inbox. Décode automatiquement quoted-printable/base64 + UTF-8.
Schéma d’entrée
{'type': 'object', 'required': ['uid'], 'properties': {'uid': {'type': 'integer', 'description': 'UID du mail (obtenu via imap_list_inbox).'}, 'auth_token': {'type': 'string'}}, 'additionalProperties': False}
imap_list_inbox
RÉSERVÉ AU STUDIO (token). Liste les N derniers mails de INBOX (contact@mathieuberthet.com) via IMAP direct sur OVH. Retourne UID (à passer à imap_get_mail), date, expéditeur, objet, flags. Bypass Chrome/Roundcube — beaucoup plus rapide et fiable.
Schéma d’entrée
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'description': 'Nombre de mails à retourner (défaut 20, max 50).'}, 'auth_token': {'type': 'string'}}, 'additionalProperties': False}
list_quote_requests
RÉSERVÉ AU STUDIO (token). Journal des demandes de devis reçues via le tool public send_quote_request : envoyées par mail ET filtrées comme robots/spam (avec la raison). Permet de vérifier qu'aucune vraie demande n'a été filtrée.
Schéma d’entrée
{'type': 'object', 'properties': {'days': {'type': 'integer', 'description': 'Fenêtre en jours (défaut 7, max 90).'}, 'verdict': {'type': 'string', 'description': "Filtre : 'envoyé', 'filtré', 'plafond'. Vide = tout."}, 'auth_token': {'type': 'string'}}, 'additionalProperties': False}
prepare_quote_email
RÉSERVÉ AU STUDIO (token d'administration requis). Prépare un brouillon — ou envoie — l'email d'un devis ou d'une facture PDF à un client, depuis contact@mathieuberthet.com. Par défaut (mode « draft »), l'email est déposé dans les Brouillons du webmail OVH pour relecture avant envoi ; en mode « send », il est envoyé immédiatement puis archivé dans Envoyés. Le PDF est récupéré par le serveur directement dans Qonto (qonto_type + qonto_number) — ou fourni en base64 pour un document externe.
Schéma d’entrée
{'type': 'object', 'required': ['document_type', 'document_number', 'client_email'], 'properties': {'cc': {'type': ['string', 'array'], 'description': 'Adresses en copie (string CSV ou array).'}, 'mode': {'enum': ['draft', 'send'], 'type': 'string', 'description': 'draft (défaut) : brouillon dans le webmail OVH. send : envoi immédiat.'}, 'subject': {'type': 'string', 'description': "Sujet de l'email. Défaut : « MB Mastering — Devis/Facture n° … »."}, 'language': {'enum': ['fr', 'en', 'raw'], 'type': 'string', 'description': "Langue du wrapper email : 'fr' (défaut, template français avec « Bonjour » + « Bien cordialement, Mathieu Berthet »), 'en' (template anglais avec « Hi » + « Best regards, Jean-Claude assistant to Mathieu Berthet »), ou 'raw' (aucun wrapper — le body_message est envoyé tel quel, pour un contrôle total). Utiliser 'en' pour clients anglophones (SlapFunk, Scott Anderson, etc.) — ne JAMAIS envoyer un body EN avec language 'fr'."}, 'qonto_id': {'type': 'string', 'description': 'Id Qonto du document (alternative à qonto_number).'}, 'auth_token': {'type': 'string', 'description': "Token d'administration (si le client MCP ne permet pas le header Authorization)."}, 'pdf_base64': {'type': 'string', 'description': "PDF externe encodé en base64 — seulement si le document n'est pas dans Qonto."}, 'qonto_type': {'enum': ['quote', 'invoice'], 'type': 'string', 'description': 'RECOMMANDÉ : le serveur va chercher le PDF dans Qonto lui-même (aucun base64 à transporter). quote = devis, invoice = facture.'}, 'references': {'type': 'string', 'description': 'Chaîne References (Message-IDs séparés par espaces). Auto = in_reply_to si absent.'}, 'client_name': {'type': 'string', 'description': 'Nom du client (salutation et en-tête To).'}, 'in_reply_to': {'type': 'string', 'description': 'Message-ID du mail auquel on répond (avec ou sans chevrons), pour threading IMAP/Gmail.'}, 'body_message': {'type': 'string', 'description': 'Paragraphe personnalisé inséré dans le corps par défaut.'}, 'client_email': {'type': 'string', 'description': 'Adresse email du client destinataire.'}, 'pdf_filename': {'type': 'string', 'description': 'Nom du fichier joint. Défaut : Devis-<n>.pdf / Facture-<n>.pdf.'}, 'qonto_number': {'type': 'string', 'description': 'Numéro Qonto du document (D-2026-003, F-2026-001). Défaut : document_number.'}, 'document_type': {'enum': ['devis', 'facture'], 'type': 'string', 'description': 'Type de document joint.'}, 'document_number': {'type': 'string', 'description': 'Numéro du document, ex. 202608-2.'}}, 'additionalProperties': False}
qonto_append_invoice_line
RÉSERVÉ AU STUDIO (token d'administration requis). Ajoute une ligne à un brouillon (proforma) Qonto existant pour un client, ou crée le brouillon si absent. Idéal pour clients récurrents (Antinote, DKO, etc.) : accumuler les prestations puis facturer d'un coup avec qonto_finalize_invoice.
Schéma d’entrée
{'type': 'object', 'required': ['title', 'unit_price'], 'properties': {'title': {'type': 'string', 'description': "Intitulé de la ligne, ex. 'cutting 12 inch A + B side ATN070'."}, 'quantity': {'type': ['string', 'number']}, 'client_id': {'type': 'string'}, 'auth_token': {'type': 'string'}, 'unit_price': {'type': 'number'}, 'client_name': {'type': 'string'}, 'client_email': {'type': 'string'}}, 'additionalProperties': False}
qonto_create_invoice
RÉSERVÉ AU STUDIO (token). Crée une facture client Qonto (brouillon/proforma par défaut, ou 'unpaid' = officielle) et renvoie numéro, total, lien de paiement Mollie. Client cherché par id, email puis nom ; création possible avec create_client_if_missing=true + adresse. Anti-doublon : refuse un document identique le même jour (sauf force=true) ; request_id rend l'appel rejouable sans doublon. Aucun PDF dans la réponse : utiliser prepare_quote_email (qonto_type/qonto_number) pour l'envoyer, qonto_get pour l'URL PDF.
Schéma d’entrée
{'type': 'object', 'required': ['items'], 'properties': {'city': {'type': 'string', 'description': 'Ville — obligatoire pour créer un client.'}, 'force': {'type': 'boolean', 'description': 'Créer même si un document identique (même client, même total, même jour) existe déjà. Défaut false.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'unit_price'], 'properties': {'title': {'type': 'string', 'description': "Intitulé de la prestation, ex. 'Mastering stéréo — Track X'."}, 'quantity': {'type': ['string', 'number'], 'description': 'Quantité (défaut 1).'}, 'unit_price': {'type': 'number', 'description': 'Prix unitaire HT en €.'}}}, 'description': 'Lignes (au moins 1).'}, 'status': {'enum': ['draft', 'unpaid'], 'type': 'string', 'description': 'draft (proforma, à finaliser plus tard) ou unpaid (facture officielle). Défaut : draft.'}, 'due_days': {'type': 'integer', 'description': 'Jours avant échéance (défaut 30).'}, 'zip_code': {'type': 'string', 'description': 'Code postal — obligatoire pour créer un client, sauf address_unknown.'}, 'client_id': {'type': 'string', 'description': 'Id Qonto du client (prioritaire sur email/nom).'}, 'auth_token': {'type': 'string', 'description': "Token d'administration (si le client MCP ne permet pas le header Authorization)."}, 'request_id': {'type': 'string', 'description': "Identifiant unique de CET appel (ex. 'mate027-devis-2026-09-22'). Si le même request_id est rejoué (timeout, relance), le serveur renvoie la réponse d'origine sans rien recréer."}, 'tin_number': {'type': 'string', 'description': 'SIREN/SIRET (ou n° fiscal étranger) du client : rend le type company possible. Optionnel.'}, 'vat_number': {'type': 'string', 'description': 'N° TVA intracom du client créé (optionnel).'}, 'client_kind': {'enum': ['company', 'individual'], 'type': 'string', 'description': 'Type du client créé. Défaut individual (le nom du label/artiste est conservé tel quel comme nom affiché) ; company UNIQUEMENT avec tin_number (SIREN/SIRET) — sinon Qonto refuse le devis.'}, 'client_name': {'type': 'string', 'description': "Nom du client (label, studio, artiste ou 'Prénom Nom'). Recherche exacte insensible à la casse."}, 'client_email': {'type': 'string', 'description': "Email du client (recherche par email d'abord)."}, 'contact_name': {'type': 'string', 'description': "Prénom Nom de la personne de contact (ex. 'Rafa Santos') quand client_name est un label — sert de prénom/nom Qonto. Optionnel."}, 'client_country': {'type': 'string', 'description': 'Code pays ISO2 du client créé (défaut FR).'}, 'street_address': {'type': 'string', 'description': 'Adresse de facturation (rue) — obligatoire pour créer un client, sauf address_unknown.'}, 'address_unknown': {'type': 'boolean', 'description': "Le client n'a PAS communiqué son adresse : rue/code postal remplacés par « — » (ville + pays requis). JAMAIS inventer une adresse — la demander au client."}, 'create_client_if_missing': {'type': 'boolean', 'description': "Si le client n'existe pas : le créer (sinon erreur explicite). Exige alors l'adresse ci-dessous."}}, 'additionalProperties': False}
qonto_create_quote
RÉSERVÉ AU STUDIO (token). Crée un devis client Qonto (D-2026-XXX) et renvoie numéro, total, lien client, id. Client cherché par id, email puis nom ; création possible avec create_client_if_missing=true + adresse (jamais inventée : address_unknown=true pose des tirets). Anti-doublon : refuse un devis identique le même jour (sauf force=true) ; request_id rend l'appel rejouable sans doublon. Aucun PDF dans la réponse : prepare_quote_email (qonto_type=quote, qonto_number=D-…) l'envoie, qonto_get donne l'URL PDF. En cas de doute sur l'état : qonto_list avant de relancer.
Schéma d’entrée
{'type': 'object', 'required': ['items'], 'properties': {'city': {'type': 'string', 'description': 'Ville — obligatoire pour créer un client.'}, 'force': {'type': 'boolean', 'description': 'Créer même si un document identique (même client, même total, même jour) existe déjà. Défaut false.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'unit_price'], 'properties': {'title': {'type': 'string', 'description': "Intitulé de la prestation, ex. 'Mastering stéréo — Track X'."}, 'quantity': {'type': ['string', 'number'], 'description': 'Quantité (défaut 1).'}, 'unit_price': {'type': 'number', 'description': 'Prix unitaire HT en €.'}}}, 'description': 'Lignes (au moins 1).'}, 'zip_code': {'type': 'string', 'description': 'Code postal — obligatoire pour créer un client, sauf address_unknown.'}, 'client_id': {'type': 'string', 'description': 'Id Qonto du client (prioritaire sur email/nom).'}, 'auth_token': {'type': 'string'}, 'request_id': {'type': 'string', 'description': "Identifiant unique de CET appel (ex. 'mate027-devis-2026-09-22'). Si le même request_id est rejoué (timeout, relance), le serveur renvoie la réponse d'origine sans rien recréer."}, 'tin_number': {'type': 'string', 'description': 'SIREN/SIRET (ou n° fiscal étranger) du client : rend le type company possible. Optionnel.'}, 'vat_number': {'type': 'string', 'description': 'N° TVA intracom du client créé (optionnel).'}, 'client_kind': {'enum': ['company', 'individual'], 'type': 'string', 'description': 'Type du client créé. Défaut individual (le nom du label/artiste est conservé tel quel comme nom affiché) ; company UNIQUEMENT avec tin_number (SIREN/SIRET) — sinon Qonto refuse le devis.'}, 'client_name': {'type': 'string', 'description': "Nom du client (label, studio, artiste ou 'Prénom Nom'). Recherche exacte insensible à la casse."}, 'client_email': {'type': 'string', 'description': "Email du client (recherche par email d'abord)."}, 'contact_name': {'type': 'string', 'description': "Prénom Nom de la personne de contact (ex. 'Rafa Santos') quand client_name est un label — sert de prénom/nom Qonto. Optionnel."}, 'validity_days': {'type': 'integer', 'description': 'Jours de validité du devis (défaut 30).'}, 'client_country': {'type': 'string', 'description': 'Code pays ISO2 du client créé (défaut FR).'}, 'street_address': {'type': 'string', 'description': 'Adresse de facturation (rue) — obligatoire pour créer un client, sauf address_unknown.'}, 'address_unknown': {'type': 'boolean', 'description': "Le client n'a PAS communiqué son adresse : rue/code postal remplacés par « — » (ville + pays requis). JAMAIS inventer une adresse — la demander au client."}, 'create_client_if_missing': {'type': 'boolean', 'description': "Si le client n'existe pas : le créer (sinon erreur explicite). Exige alors l'adresse ci-dessous."}}, 'additionalProperties': False}
qonto_delete
RÉSERVÉ AU STUDIO (token). Supprime un devis en attente (pending_approval) ou une facture brouillon (draft) — ex. doublon créé par erreur. Refuse tout document envoyé/approuvé/finalisé. Exige confirm=true (le premier appel sans confirm renvoie un récapitulatif).
Schéma d’entrée
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'type': {'enum': ['quote', 'invoice'], 'type': 'string', 'description': 'Défaut : quote.'}, 'number': {'type': 'string', 'description': 'Numéro du document (ou id Qonto).'}, 'confirm': {'type': 'boolean', 'description': 'true pour supprimer réellement.'}, 'auth_token': {'type': 'string'}}, 'additionalProperties': False}
qonto_finalize_invoice
RÉSERVÉ AU STUDIO (token d'administration requis). Passe un brouillon (proforma) en statut 'unpaid' = facture officielle numérotée. Qonto génère le PDF + lien de paiement Mollie. Trouve le brouillon par invoice_id OU par client (id/email/name).
Schéma d’entrée
{'type': 'object', 'properties': {'client_id': {'type': 'string'}, 'auth_token': {'type': 'string'}, 'invoice_id': {'type': 'string'}, 'client_name': {'type': 'string'}, 'client_email': {'type': 'string'}}, 'additionalProperties': False}
qonto_get
RÉSERVÉ AU STUDIO (token). Détail d'un devis ou d'une facture Qonto par numéro (D-2026-003, F-2026-001) ou id : lignes, client + adresse, statut, lien client/paiement, URL PDF signée (temporaire). Jamais de base64.
Schéma d’entrée
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Id Qonto (alternative à number).'}, 'type': {'enum': ['quote', 'invoice'], 'type': 'string', 'description': 'Défaut : quote.'}, 'number': {'type': 'string', 'description': 'Numéro du document (ou id Qonto).'}, 'auth_token': {'type': 'string'}}, 'additionalProperties': False}
qonto_list
RÉSERVÉ AU STUDIO (token). Liste compacte des devis, factures ou clients Qonto (numéro, statut, total, date, client, id). À appeler AVANT de relancer une création si un appel précédent a semblé échouer.
Schéma d’entrée
{'type': 'object', 'properties': {'type': {'enum': ['quotes', 'invoices', 'clients'], 'type': 'string', 'description': 'Défaut : quotes.'}, 'limit': {'type': 'integer', 'description': 'Max lignes (défaut 30, max 100).'}, 'status': {'type': 'string', 'description': 'Filtre statut : devis pending_approval|approved|canceled ; factures draft|unpaid|paid|canceled.'}, 'auth_token': {'type': 'string'}, 'client_email': {'type': 'string', 'description': 'Filtre par email client.'}}, 'additionalProperties': False}
qonto_update_client
RÉSERVÉ AU STUDIO (token d'administration requis). Met à jour l'adresse de facturation d'un client Qonto existant. Identifier par client_id (préféré) OU client_email/client_name.
Schéma d’entrée
{'type': 'object', 'required': ['street_address', 'city', 'zip_code'], 'properties': {'city': {'type': 'string', 'description': 'Ville.'}, 'zip_code': {'type': 'string', 'description': 'Code postal.'}, 'client_id': {'type': 'string', 'description': 'ID Qonto du client (préféré).'}, 'auth_token': {'type': 'string', 'description': "Token d'administration."}, 'client_name': {'type': 'string', 'description': 'Fallback : recherche par nom.'}, 'client_email': {'type': 'string', 'description': 'Fallback : recherche par email.'}, 'country_code': {'type': 'string', 'description': 'Code pays ISO2 (défaut FR).'}, 'street_address': {'type': 'string', 'description': 'Rue et numéro.'}}, 'additionalProperties': False}
search
Recherche dans les contenus de MB Mastering (services de mastering, tarifs, studio, FAQ) et renvoie une liste de résultats avec id, titre, extrait et URL. / Searches MB Mastering content (mastering services, rates, studio info, FAQ) and returns matching results.
Schéma d’entrée
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Termes de recherche / search query.'}}, 'additionalProperties': False}
send_quote_request
Envoie une demande de devis de mastering à MB Mastering par email. À utiliser quand l'utilisateur souhaite être recontacté. Requiert au minimum le nombre de titres et l'email du demandeur.
Schéma d’entrée
{'type': 'object', 'required': ['requester_email', 'titles'], 'properties': {'genre': {'type': 'string', 'description': 'Genre musical.'}, 'notes': {'type': 'string', 'description': 'Précisions libres sur le projet.'}, 'format': {'type': 'string', 'description': 'Support final visé (streaming, vinyle, CD…).'}, 'titles': {'type': 'integer', 'minimum': 1, 'description': 'Nombre de titres à masteriser.'}, 'service': {'type': 'string', 'description': 'Service souhaité (mastering stéréo, stems, à distance, gravure vinyle…).'}, 'deadline': {'type': 'string', 'description': 'Échéance éventuelle.'}, 'requester_name': {'type': 'string', 'description': 'Nom du demandeur ou du projet/artiste.'}, 'requester_email': {'type': 'string', 'description': 'Email du demandeur (pour la réponse).'}}, 'additionalProperties': False}
upload_master
RÉSERVÉ AU STUDIO (token d'administration requis). Dépose un zip de master client dans ~/www/masters/ sur le serveur OVH. Nom conservé tel quel (contrôle total côté studio). Upload chunké (chunk_index=0 pour le premier, is_last=true pour le dernier — le tool renvoie alors l'URL client). Écriture UNIQUEMENT dans ~/www/masters/ (chemin hardcodé, sanitize strict, pas d'échappement possible).
Schéma d’entrée
{'type': 'object', 'required': ['filename', 'chunk_data'], 'properties': {'is_last': {'type': 'boolean', 'description': "true pour le dernier chunk → renvoie l'URL client finalisée."}, 'filename': {'type': 'string', 'description': 'Nom du fichier .zip (autorisé : lettres/chiffres/._- et espaces ; extension .zip obligatoire ; max 200 chars). Sanitize strict côté serveur.'}, 'auth_token': {'type': 'string', 'description': "Token d'administration (si le client MCP ne permet pas le header Authorization)."}, 'chunk_data': {'type': 'string', 'description': 'Contenu du chunk encodé en base64. Max ~8 Mo par chunk pour rester sous les limites HTTP OVH.'}, 'chunk_index': {'type': 'integer', 'description': 'Index du chunk (0-based). 0 = truncate le fichier destination ; >0 = append.'}}, 'additionalProperties': False}
Ajouté
imap_get_mail
27 September 2026 02:53
Ajouté
imap_list_inbox
27 September 2026 02:53
Modifié
prepare_quote_email
25 September 2026 03:02
Ajouté
qonto_update_client
23 September 2026 02:53
Ajouté
qonto_finalize_invoice
23 September 2026 02:53
Ajouté
qonto_append_invoice_line
23 September 2026 02:53
Ajouté
list_quote_requests
23 September 2026 02:53
Ajouté
qonto_delete
23 September 2026 02:53
Ajouté
qonto_get
23 September 2026 02:53
Ajouté
qonto_list
23 September 2026 02:53
Ajouté
qonto_create_quote
23 September 2026 02:53
Ajouté
qonto_create_invoice
23 September 2026 02:53
Modifié
prepare_quote_email
23 September 2026 02:53
Ajouté
upload_master
17 September 2026 12:36
Ajouté
prepare_quote_email
17 September 2026 12:36
Ajouté
send_quote_request
17 September 2026 12:36
Ajouté
get_faq
17 September 2026 12:36
Ajouté
get_studio_info
17 September 2026 12:36
Ajouté
get_pricing
17 September 2026 12:36
Ajouté
get_services
17 September 2026 12:36
Ajouté
fetch
17 September 2026 12:36
Ajouté
search
17 September 2026 12:36