S’exécute surWrit CloudDesktop
Sur cette page
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_.
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 |
|---|---|
| Transport | Streamable HTTP — JSON-RPC 2.0 sur POST /mcp, objet unique ou tableau batch |
| Version du protocole | 2025-03-26 |
| Nom du serveur | writ-cloud |
| Auth | Authorization: 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"
}
}
}
}tools-list.sh
# Confirm the server is reachable and see the tools it exposes
curl -X POST https://api.usewrit.app/mcp \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'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.
| Outil | Ce qu’il fait |
|---|---|
writ_list_workflows | Liste les workflows enregistrés — id, nom, entrées, planification. |
writ_run_workflow | Exé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_data | Les données accumulées par un workflow, en colonnes et en lignes. |
writ_search_data | Recherche par mots-clés dans tout ce que vos workflows ont collecté. |
writ_export_data | La table complète en CSV ou JSON. |
writ_workflow_runs | L’historique des runs d’un workflow. |
writ_set_schedule | Planifie un workflow : every_minutes, ou daily/weekly avec une heure et des jours. |
writ_expose_workflow_api | Expose un workflow comme endpoint REST ; renvoie l’URL. |
writ_scrape | Lit 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_site | Collecte 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_crawls | Liste les crawls enregistrés. |
writ_run_saved_crawl | Exécute un crawl enregistré — ou sert ses données récentes via max_age. |
writ_saved_crawl_data | Accès en lecture seule aux derniers résultats d’un crawl enregistré. |
writ_crawl_status | La progression d’un crawl en cours. |
writ_crawl_files | Les 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_automation | Crée une automatisation — exécuter un workflow, notifier ou réveiller un agent IA sur un événement. |
writ_create_monitor | Surveille les changements d’une page. |
writ_wire_monitor | Choisit 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_personas | Liste 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_use | Agit 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_website | Démarre l’enregistrement d’une tâche sur un site, pour la rejouer ensuite. |
writ_website_to_api | Transforme 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_build | Construit 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_act | Pilote la session — naviguer, cliquer, remplir, sélectionner, extraire — et renvoie l’observation suivante. Chaque action rejouable est enregistrée. |
writ_browser_context | Lit à la demande le DOM nettoyé, les champs et les liens de la page. |
writ_browser_network | Cherche dans les requêtes faites par la page, capturées pendant que vous pilotez. |
writ_browser_save | Termine la session et enregistre ses étapes comme workflow réutilisable. |
writ_browser_cancel | Termine la session sans rien enregistrer. |
writ_browser_sessions | Les 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ôle | Défaut | Rôle |
|---|---|---|
wait | true | Bloque jusqu’au verdict du run et renvoie les données extraites. |
timeout_seconds | 120 | Durée maximale d’attente avant de rendre un run encore en cours. |
max_age | 0 | Sert 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.
| Champ | Règle |
|---|---|
tool_name | respecte ^[a-zA-Z_][a-zA-Z0-9_]*$ — 100 caractères au plus |
description | 500 caractères au plus — ce que le modèle lit pour décider quand appeler |
input_schema | JSON Schema ; null le dérive des entrées du workflow |
timeout_seconds | 5–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 :
| Plan | Outils MCP publiés |
|---|---|
| Free | 2 |
| Starter | 5 |
| Pro | 15 |
| Growth | 40 |
| Scale | 100 |
| Enterprise | Illimité |
faq