Appuyez sur / pour rechercher

Toute la documentation
docs▸Appeler depuis votre IA▸Serveur MCP

S’exécute surWrit CloudDesktop

mcp ▸ des outils pour l’ia

Chaque workflow, un outil.

Le serveur MCP writ-cloud transforme votre compte en outils qu’un agent IA peut appeler : trente outils intégrés pour les workflows, les données, les crawls, les moniteurs et les automatisations — chaque workflow enregistré s’exécute via writ_run_workflow, et ceux que vous épinglez apparaissent aussi comme leur propre outil run_<name>. L’authentification est une clé API wt_.

Writ s’exécute sur vos propres comptes, avec vos propres identifiants et données, sur les sites que vous êtes autorisé à utiliser.

connexion ▸ une seule url

Un serveur pour tout le compte.

Le transport est Streamable HTTP : chaque message est un POST vers /mcp sur api.usewrit.app — JSON-RPC 2.0, un objet unique ou un tableau batch par requête. GET /mcp est une sonde de santé. Authentifiez-vous avec Authorization: Bearer et une clé API wt_ ; cet endpoint n’accepte pas OAuth.

PropriétéValeur
TransportStreamable HTTP — JSON-RPC 2.0 sur POST /mcp, objet unique ou tableau batch
Version du protocole2025-03-26
Nom du serveurwrit-cloud
AuthAuthorization: Bearer — une clé API wt_ ; pas d’OAuth sur cet endpoint
SantéGET /mcp

mcp-client config

{
  "mcpServers": {
    "writ-cloud": {
      "type": "http",
      "url": "https://api.usewrit.app/mcp",
      "headers": {
        "Authorization": "Bearer wt_xxxxxxxxxxxx"
      }
    }
  }
}

GET /api/mcp/connect-info vous remet les deux blocs prêts à coller : la ligne du connecteur npm — claude mcp add writ-cloud -e WRIT_API_KEY=… -- npx -y writ-mcp — et un bloc direct {"type":"http"} URL + en-tête. Dans les deux cas, la clé voyage dans une variable d’environnement, jamais dans argv.

outils ▸ trente intégrés

Trente outils, sur chaque compte.

Le jeu intégré couvre la boucle qu’un agent exécute réellement : trouver un workflow, l’exécuter, lire et chercher ce qu’il a collecté, le planifier, l’exposer, crawler, surveiller, automatiser.

OutilCe qu’il fait
writ_list_workflowsListe les workflows enregistrés — id, nom, entrées, planification.
writ_run_workflowExécute un workflow par id ou nom ; attend par défaut et renvoie les données extraites.
writ_pin_workflow_toolÉpingle ou désépingle un workflow enregistré comme son propre outil run_<name> — désactivé par défaut et plafonné à 20 ; chaque workflow reste appelable via writ_run_workflow.
writ_workflow_dataLes données accumulées par un workflow, en colonnes et en lignes.
writ_search_dataRecherche par mots-clés dans tout ce que vos workflows ont collecté.
writ_export_dataLa table complète en CSV ou JSON.
writ_workflow_runsL’historique des runs d’un workflow.
writ_set_schedulePlanifie un workflow : every_minutes, ou daily/weekly avec une heure et des jours.
writ_expose_workflow_apiExpose un workflow comme endpoint REST ; renvoie l’URL.
writ_scrapeLit le contenu d’une page maintenant, en un appel : une page (url), une liste de pages (urls), ou les N premiers éléments d’une liste et leurs pages (url + top_n) — markdown propre, fils de commentaires annotés par profondeur ; persona_id derrière un login, use_residential contre les murs anti-bots.
writ_crawl_siteCollecte un site ou une section dans un jeu de données interrogeable — markdown classique, enregistrements par schéma, ou extraction assistée par IA page par page ; save_as le rend réexécutable.
writ_saved_crawlsListe les crawls enregistrés.
writ_run_saved_crawlExécute un crawl enregistré — ou sert ses données récentes via max_age.
writ_saved_crawl_dataAccès en lecture seule aux derniers résultats d’un crawl enregistré.
writ_crawl_statusLa progression d’un crawl en cours.
writ_crawl_filesLes documents originaux capturés par un crawl — PDF, fichiers bureautiques, images, CSV — avec des URL de téléchargement à courte durée de vie ; le jeu de données du crawl garde le texte extrait.
writ_create_automationCrée une automatisation — exécuter un workflow, notifier ou réveiller un agent IA sur un événement.
writ_create_monitorSurveille les changements d’une page.
writ_wire_monitorChoisit ce qu’un changement détecté déclenche — exécuter un workflow, notifier, ou réveiller un agent IA avec une consigne de tâche.
writ_personasListe et opère les identités de connexion enregistrées — en inspecter une, rafraîchir sa session, ou laisser l’IA enregistrer son parcours de connexion une fois ; passez un persona_id pour exécuter, crawler, extraire ou naviguer connecté. N’en crée, modifie ni supprime jamais.
writ_browser_useAgit sur un site avec un vrai navigateur — cliquer, remplir, se connecter, soumettre ; renvoie une observation de la page. Lire une page, c’est writ_scrape.
writ_record_websiteDémarre l’enregistrement d’une tâche sur un site, pour la rejouer ensuite.
writ_website_to_apiTransforme un site sans API exploitable en API appelable — propose vos propres workflows et les API prêtes à l’emploi de la marketplace avant d’enregistrer quoi que ce soit.
writ_buildConstruit un workflow réutilisable pour toute tâche web répétable, quand aucun outil de démarrage plus précis ne s’applique.
writ_browser_actPilote la session — naviguer, cliquer, remplir, sélectionner, extraire — et renvoie l’observation suivante. Chaque action rejouable est enregistrée.
writ_browser_contextLit à la demande le DOM nettoyé, les champs et les liens de la page.
writ_browser_networkCherche dans les requêtes faites par la page, capturées pendant que vous pilotez.
writ_browser_saveTermine la session et enregistre ses étapes comme workflow réutilisable.
writ_browser_cancelTermine la session sans rien enregistrer.
writ_browser_sessionsLes sessions de navigateur cloud ouvertes sur ce compte, pour qu’un agent en reprenne une par session_id au lieu d’ouvrir un second navigateur à côté.

La cadence est appliquée, pas ajustée. Un intervalle de moniteur sous le plancher de votre plan est rejeté avec une erreur 402 interval_too_short — jamais raccourci en silence. L’agent réessaie avec un intervalle plus long.

Le client connecté est l’IA. Une session d’enregistrement passe par la même clé : démarrez-la, pilotez-la tour par tour avec writ_browser_act, puis terminez avec writ_browser_save — ou writ_browser_cancel pour l’abandonner. L’enregistrement est automatique et la sauvegarde à la demande : un workflow enregistré se rejoue ensuite sans modèle dans la boucle. Pour une valeur sensible, définissez data_key et l’étape enregistrée conserve un placeholder plutôt que la valeur. Deux points diffèrent du connecteur bureau, parce que le navigateur est le nôtre et non le vôtre : un outil de démarrage EXIGE une url (elle passe le contrôle SSRF et la politique de domaines avant l’ouverture du navigateur), et un site dont la connexion demande un code à usage unique nécessite un persona_id — le code est généré côté serveur à partir de cette identité enregistrée et n’atteint jamais le modèle. Une session ouverte mobilise un vrai navigateur cloud : son temps réel s’impute à votre quota d’exécution jusqu’à la sauvegarde ou l’annulation ; une session laissée inactive est récupérée automatiquement.

outils ▸ épingler un workflow

Chaque workflow s’exécute ; ceux que vous épinglez deviennent des outils.

Chaque workflow enregistré est appelable via writ_run_workflow, par id ou par nom. Ceux que vous épinglez — avec writ_pin_workflow_tool, ou l’interrupteur Exposer en tant qu’outil MCP dans les réglages d’exécution du workflow — apparaissent aussi dans tools/list comme leur propre outil run_<name>, son schéma d’entrée dérivé des entrées déclarées du workflow. Les noms sont slugifiés ; une collision se dédouble en _2, _3 ; les noms intégrés writ_* gagnent toujours. L’épinglage est désactivé par défaut et plafonné à 20 par compte : un client MCP injecte le schéma de chaque outil annoncé dans le contexte du modèle à chaque requête, et plusieurs plafonnent le total (ChatGPT et VS Code à 128 ; Cursor avertit dès une quarantaine), donc un compte aux centaines de workflows ne doit pas annoncer des centaines d’outils. Un client qui garde une liste plus ancienne peut continuer d’appeler un run_<name> non épinglé — le nom exact est résolu en repli. writ_run_workflow et chaque outil de run acceptent les trois mêmes contrôles :

ContrôleDéfautRôle
waittrueBloque jusqu’au verdict du run et renvoie les données extraites.
timeout_seconds120Durée maximale d’attente avant de rendre un run encore en cours.
max_age0Sert un résultat récent réussi au lieu de réexécuter ; 0 exécute toujours à neuf.

La réutilisation ne s’applique qu’aux résultats réussis et se fonde sur les entrées exactes. Les réponses portent _cache.hit et _cache.age_seconds : un agent distingue toujours une réponse en cache d’une réponse fraîche.

règles ▸ pas de porte dérobée

Un appel d’outil est un appel d’API.

MCP ajoute un protocole, pas une porte dérobée. Chaque appel d’outil s’exécute exactement sous les règles de l’API REST appelée avec la même clé : isolation du tenant, scopes de la clé, limites du plan et facturation s’appliquent sans changement.

publication ▸ /mcp/{slug}

Des serveurs publiés sur /mcp/{slug}.

La publication crée aussi des serveurs MCP autonomes sur /mcp/{slug} — Streamable HTTP sur POST /mcp/{slug}, avec SSE en option sur GET /mcp/{slug}/sse. Ils acceptent une clé wt_ ou un token d’accès OAuth : vous confiez un workflow à un client sans lui confier une clé de compte.

OAuth pour les clients MCP

Un appel refusé répond avec WWW-Authenticate dont le resource_metadata pointe vers …/.well-known/oauth-protected-resource/mcp/{slug} — la découverte OAuth standard de MCP. Les métadonnées du serveur d’autorisation vivent sur GET /api/oauth/.well-known/oauth-authorization-server, et les clients s’enregistrent eux-mêmes via l’enregistrement dynamique RFC 7591 sur POST /api/oauth/register — clients publics PKCE uniquement, sans client secret. Conçu pour les connecteurs personnalisés de Claude, Cursor et tout client qui parle ce flux.

Configuration d’un outil

Chaque outil publié est un petit contrat ; le slug du serveur est toujours dérivé du nom.

ChampRègle
tool_namerespecte ^[a-zA-Z_][a-zA-Z0-9_]*$ — 100 caractères au plus
description500 caractères au plus — ce que le modèle lit pour décider quand appeler
input_schemaJSON Schema ; null le dérive des entrées du workflow
timeout_seconds5–300 secondes, 30 par défaut

Les outils MCP publiés sont plafonnés par plan (la limite max_mcp_tools) — un plafond sur le nombre d’outils publiés, jamais sur la fréquence de leurs appels :

PlanOutils MCP publiés
Free2
Starter5
Pro15
Growth40
Scale100
EnterpriseIllimité

faq

Questions MCP, répondues.

Quelle est l’URL du serveur MCP ?
Le serveur du compte est https://api.usewrit.app/mcp — Streamable HTTP, authentifié par une clé API wt_ dans l’en-tête Authorization. Les serveurs publiés par workflow vivent sur /mcp/{slug} et acceptent aussi les tokens d’accès OAuth.
Un client MCP peut-il enregistrer un nouveau workflow sur le cloud ?
Oui. Démarrez une session, pilotez-la avec writ_browser_act, puis terminez avec writ_browser_save — le workflow est ensuite à vous, à exécuter, planifier ou exposer. Votre client connecté est l’IA : aucune clé de modèle distincte n’intervient.
Pourquoi un workflow enregistré n’apparaît-il pas comme son propre outil ?
Parce que les outils run_<name> sont en opt-in, désactivés par défaut. Chaque workflow s’exécute déjà via writ_run_workflow ; épinglez ceux que vous appelez souvent — avec writ_pin_workflow_tool, ou l’interrupteur « Exposer en tant qu’outil MCP » dans les réglages d’exécution du workflow — et chacun apparaît comme son propre outil au prochain tools/list, jusqu’à 20 par compte. Les clients chargent le schéma de chaque outil annoncé dans le contexte du modèle à chaque requête : la liste reste courte tant que vous ne l’allongez pas.
Le serveur cloud prend-il en charge OAuth ?
Pas sur POST /mcp — cet endpoint n’authentifie que les clés wt_. Les serveurs publiés /mcp/{slug}, eux, acceptent OAuth : PKCE, enregistrement dynamique des clients (RFC 7591), clients publics sans secret, avec découverte via WWW-Authenticate et /.well-known/oauth-protected-resource.
Les appels d’outils ont-ils leur propre facturation ?
Non. Un appel d’outil est le même appel facturé que celui que vous auriez fait vous-même sur l’API REST, sous la même isolation de tenant, les mêmes scopes de clé et les mêmes limites de plan. MCP ne change rien au coût d’un run.