S’exécute surWrit CloudDesktop
Sur cette page
Décrivez la tâche. Scribe pilote.
Scribe est l’IA de Writ. Vous dites ce que vous voulez en langage clair ; elle ouvre un vrai navigateur, trouve la page, y valide un sélecteur, et construit le moniteur, le workflow ou le crawl. Elle travaille par tours, et elle s’arrête avant tout ce qui vous coûte de l’argent ou touche à vos comptes.
validation ▸ elle s’arrête
Elle s’arrête et demande. C’est le principe.
Une mission avance par tours. Quand elle a besoin de vous, elle s’arrête : la session passe en awaiting_input et porte un pending_request qui décrit ce qu’elle attend. Il y a trois formes de pause :
| Pause | Ce que vous voyez |
|---|---|
| Une question | Un ou plusieurs champs à renseigner — un seuil, un choix, une confirmation, une identité de connexion. |
| Une revue de lot de moniteurs | Tous les sites découverts, tous présélectionnés et décochables un par un, avec un coût d’installation estimé — montré avant qu’un seul moniteur soit créé. |
| Une revue de mise en service | Les URL d’endpoint qu’elle vient de publier, plus la proposition de créer une clé API pour elles. |
L’achat automatique a une condition dure, pas une condition molle. Une persona, un moyen de paiement, une confirmation explicite et un seuil doivent tous être recueillis avant qu’elle ne rédige quoi que ce soit. S’il en manque un, elle demande au lieu d’avancer.
Deux façons d’arrêter. interrupt casse le tour en cours et gare la mission — elle est reprenable. cancel y met fin. Et une réponse à un tour déjà dépassé reçoit 409 : relisez la session et répondez au tour courant plutôt qu’à celui que vous regardiez.
capacités ▸ un outil par tour
Ce que vous pouvez lui demander.
Scribe choisit exactement un outil par tour, dans un jeu fixe. Elle ne peut pas inventer d’outil : la liste ci-dessous est donc tout ce qu’une mission peut faire.
| Trouver et lire une page | Arriver sur la bonne page, puis proposer un sélecteur et le valider sur la page en direct avant de l’utiliser. |
| Créer un moniteur | Surveiller un prix face à un seuil numérique, ou surveiller un contenu au moindre changement de texte. Mode : un sélecteur, ou une comparaison visuelle pixel à pixel d’une zone de capture — c’est ainsi qu’on surveille graphiques, images, canvas/SVG et logos. Rendu : auto, http ou js. |
| Surveiller plusieurs sites d’un coup | Découvrir des sites candidats, proposer un lot classé pour votre revue, et créer un moniteur par site gardé en un seul tour. |
| Vous demander une entrée | text, value, choice, confirm, secret, persona ou payment_method. |
| Se connecter en votre nom | Rattacher une identité de connexion enregistrée et gérer la 2FA, pour atteindre les pages derrière un login. |
| Construire un workflow | Rédiger un workflow d’achat automatique, mener une session autonome qui se connecte et en construit un, ou enregistrer un workflow à partir d’étapes que vous énoncez explicitement. Ajouter un appelable nommé. |
| Le tester et le planifier | Exécuter le workflow et rendre un PASS ou un FAIL avec des données d’exemple, puis configurer une planification. |
| Le publier | Exposer le workflow en REST, en surface compatible OpenAI, ou en MCP — puis s’arrêter pour vous montrer les URL en direct. |
| Câbler une automatisation | Relier un changement détecté à une notification. |
| Crawler et répondre | Lancer un crawl de site entier avec progression en direct, replier un crawl terminé en une seule réponse, et armer un crawl récurrent ou réactif. |
| Utiliser ce que vous avez déjà | Lister, fouiller et répondre depuis les datasets déjà collectés. C’est le chemin le moins cher, et il passe avant tout crawl. |
| Terminer | Clore la mission par un résumé de ce qui a été construit. |
Le jeu est fixe à dessein. Une IA qui ne peut choisir que dans une liste connue est une IA dont le pire tour reste un outil décrit sur cette page — « qu’est-ce qu’elle pourrait bien faire ? » a donc une réponse de longueur finie.
lieux ▸ deux, pas un
Scribe cloud et Scribe desktop ne sont pas la même chose.
Il y a deux implémentations, et elles diffèrent par ce qu’elles ont le droit de construire. Lisez la ligne qui correspond à votre lieu d’exécution avant de bâtir une mission dessus.
| Où | Base | Ce qu’elle peut construire |
|---|---|---|
| Writ Cloud | /api/ai-concierge | Le jeu complet — y compris la rédaction d’achat automatique et les lots de moniteurs multi-sites. |
| Writ Desktop | /v1/ai-concierge | Surveiller et notifier. Pas de rédaction d’achat automatique, pas de lots multi-sites. |
| Auto-hébergé | — | Indisponible. Scribe ne fait pas partie du coordinateur auto-hébergé. |
| Appel | Ce qu’il fait |
|---|---|
POST /api/ai-concierge/start | Démarrer une mission. Rend {session_id, status, poll_url} immédiatement ; le travail continue en arrière-plan. |
GET /api/ai-concierge/{id} | L’état complet de la session. C’est ce que vous interrogez. |
POST /api/ai-concierge/{id}/respond | Répondre à la pause en cours. |
POST /api/ai-concierge/{id}/ask | Poser une question de suivi sur ce qu’elle a construit. |
POST /api/ai-concierge/{id}/persona | Rattacher ou retirer l’identité de connexion. |
POST /api/ai-concierge/{id}/interrupt | Casser le tour en cours et garer la mission. |
POST /api/ai-concierge/{id}/cancel | Mettre fin à la mission. |
GET /api/ai-concierge | Vos missions, les plus récentes d’abord. |
Sur l’agent desktop
La même forme, en loopback, contre l’agent qui tourne sur votre propre machine — et gratuite, puisque le navigateur est le vôtre :
POST /v1/ai-concierge/start | Démarrer une mission. |
GET /v1/ai-concierge | Lister les missions. |
GET /v1/ai-concierge/{id} | L’état de session à interroger. |
POST /v1/ai-concierge/{id}/respond | Répondre à la pause en cours. |
POST /v1/ai-concierge/{id}/interrupt · /cancel | La garer, ou y mettre fin. |
Disons-le franchement : Scribe ne fait pas partie du coordinateur auto-hébergé. Un déploiement auto-hébergé exécute workflows, moniteurs, automatisations et crawls — il ne livre pas Scribe. Si vous voulez une construction pilotée par mission, c’est Writ Cloud ou Writ Desktop.
session ▸ ce que vous interrogez
La mission tourne en arrière-plan. Vous l’interrogez.
Le démarrage répond aussitôt avec un id de session et une URL d’interrogation — une mission de navigation survit à une requête HTTP, donc un handle est la réponse honnête. Chaque interrogation rend la même projection :
| Champ | Contenu |
|---|---|
session_id · goal · platform | Ce que vous avez demandé, et où ça tourne. |
status | planning, browsing, building, proposing, awaiting_input, armed — plus les états terminaux. |
phase · progress_message | Où elle en est, en mots affichables à un utilisateur. |
transcript | La conversation jusqu’ici. |
thoughts | L’outil choisi et une courte pensée, par étape. |
plan | Ce qu’elle a décidé jusqu’ici. Les références de paiement sont retirées. |
pending_request | La pause qu’elle attend, quand status vaut awaiting_input. |
resources | Ce qu’elle a créé — le moniteur, le workflow, les endpoints. |
turn_seq | Le verrou optimiste que vous renvoyez en répondant. |
tokens | input, output et les crédits dépensés jusqu’ici. |
error_message · created_at · completed_at | Pourquoi elle s’est arrêtée, et quand. |
Son raisonnement visible est volontairement étroit : l’outil choisi et une courte pensée. Les arguments et les résultats d’outil ne sont jamais diffusés — c’est aussi pourquoi rien de ce que vous avez tapé dans un champ secret ne peut apparaître dans le fil de raisonnement.
Démarrer, interroger, répondre
Une mission de bout en bout, en HTTP pur.
start.sh
# Describe the job. goal is 3-2000 characters; url is an optional seed.
curl -X POST https://api.usewrit.app/api/ai-concierge/start \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"goal": "Watch the price of the 15-inch model and alert me under $1,200",
"url": "https://example.com/laptops/15"
}' 200 — start
{
"session_id": 4021,
"status": "planning",
"poll_url": "/api/ai-concierge/4021"
}
// The mission runs in the background from here. Poll poll_url.
// Every poll answers the same projection:
{
"session_id": 4021,
"status": "awaiting_input",
"phase": "proposing",
"goal": "...",
"platform": "cloud",
"progress_message": "Found the price on the page.",
"transcript": [],
"thoughts": [ { "tool": "propose_selectors", "thought": "The price sits in the buy box.", "ts": "..." } ],
"plan": {},
"pending_request": { "kind": "text", "requests": [] },
"resources": {},
"turn_seq": 3,
"tokens": { "input": 8120, "output": 940, "credits": 29 },
"error_message": null
} answer.sh
# Poll until status is awaiting_input, then answer the CURRENT turn.
curl https://api.usewrit.app/api/ai-concierge/4021 -H "Authorization: Bearer $WRIT_API_KEY"
# turn_seq is an optimistic lock: send back the one you just read.
# A stale turn_seq answers 409 — re-read and answer the current turn.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/respond \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"turn_seq": 3, "answers": {"threshold": "1200"}}'
# Ask it a follow-up about what it just built.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/ask \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "How do I call this endpoint from my own code?"}'
# Attach a saved login identity. null clears it.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/persona \
-H "Authorization: Bearer $WRIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"persona_id": 12}'
# Stop mid-turn (the mission parks, resumable) — or end it.
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/interrupt -H "Authorization: Bearer $WRIT_API_KEY"
curl -X POST https://api.usewrit.app/api/ai-concierge/4021/cancel -H "Authorization: Bearer $WRIT_API_KEY"
# Every mission you have run.
curl https://api.usewrit.app/api/ai-concierge -H "Authorization: Bearer $WRIT_API_KEY" respond ▸ répondre à une pause
Répondre au tour qui est devant vous.
Une réponse porte turn_seq et un objet answers indexé par les champs demandés. turn_seq est un verrou optimiste : renvoyez celui que vous avez lu. Si la mission a avancé, vous recevez 409 — rafraîchissez et répondez au tour courant au lieu d’écraser un tour plus récent.
| Type d’entrée | Ce qu’il demande |
|---|---|
text | Texte libre. |
value | Un nombre — un seuil de prix, une quantité. |
choice | Un élément parmi ceux proposés. |
confirm | Un oui ou un non, avant que quelque chose n’arrive. |
secret | Un identifiant. Scellé dans le coffre à l’arrivée. |
persona | Quelle identité de connexion enregistrée utiliser. |
payment_method | Comment un achat serait payé, si vous en construisez un. |
Une réponse secret est scellée dans le coffre dès son arrivée. Ce qui atteint ensuite une exécution est un marqueur résolu au moment de l’exécution — la valeur elle-même ne traverse ni le plan, ni la transcription, ni le modèle.
Une réponse peut porter un champ de plus, et Scribe ne le demande jamais. Le paiement se recueille comme un choix — le modèle ne peut pas réclamer de numéro de carte. Mais si vous prenez la voie avancée et en saisissez un, ces champs voyagent dans leur propre objet card_fields plutôt que dans answers, et sont scellés dans le coffre dès leur arrivée. Seuls des marqueurs atteignent le plan, payment_mode passe à vault_card, et les références sont ensuite retirées du plan que vous interrogez — le numéro lui-même ne traverse ni la transcription, ni le modèle. S’il ne peut pas être stocké, la réponse est refusée avec 400 : la pause reste ouverte, et rien n’est conservé.
La même chose, sur votre machine
Loopback, un token local, et le périmètre plus étroit du desktop — surveiller et notifier.
desktop.sh
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/start \
-H "Authorization: Bearer $WRIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"goal": "Tell me when this page changes", "url": "https://example.com/status"}'
curl http://127.0.0.1:8131/v1/ai-concierge -H "Authorization: Bearer $WRIT_TOKEN"
curl http://127.0.0.1:8131/v1/ai-concierge/7 -H "Authorization: Bearer $WRIT_TOKEN"
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/7/respond \
-H "Authorization: Bearer $WRIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"turn_seq": 2, "answers": {"confirm": true}}'
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/7/interrupt -H "Authorization: Bearer $WRIT_TOKEN"
curl -X POST http://127.0.0.1:8131/v1/ai-concierge/7/cancel -H "Authorization: Bearer $WRIT_TOKEN" limites ▸ franchement
Ce que Scribe ne fera pas.
À lire avant de bâtir dessus. Aucun de ces points n’est un réglage que vous pouvez changer :
- Elle ne passe pas la commande — Pour un achat, elle prépare le paiement jusqu’au bouton de paiement et s’arrête là. Le dernier clic est le vôtre.
- Elle ne demande jamais de numéro de carte — Le paiement se recueille comme un choix — une carte déjà enregistrée chez le marchand, l’autoremplissage de votre propre navigateur sur votre propre machine, ou une carte virtuelle. Le modèle ne peut pas réclamer de numéro. Si vous prenez la voie avancée et en saisissez un vous-même, il est scellé dans le coffre dès son arrivée et seul un marqueur atteint le plan.
- Elle ne peut pas inventer d’outil — Un outil par tour, dans le jeu fixe décrit sur cette page. Il n’y a pas d’action libre.
- Elle ne tourne pas en auto-hébergé — Scribe ne fait pas partie du coordinateur auto-hébergé.
- Scribe desktop est plus étroite — Pas de rédaction d’achat automatique, et pas de lots de moniteurs multi-sites.
- Elle ne diffuse ni ses arguments ni ses résultats — Le raisonnement visible est l’outil choisi et une courte pensée. Rien de plus.
plan ▸ ce que ça coûte
Ce qu’il lui faut, et ce qu’elle dépense.
Scribe demande un plan incluant l’assistance IA. La dépense en tokens est décomptée et affichée dans la session elle-même — le champ tokens porte input, output et les crédits consommés jusqu’ici, pour qu’une longue mission ne soit jamais une surprise à la fin. Une mission sur votre propre machine pilote votre propre navigateur : le temps de navigateur est donc gratuit, les tokens IA restent décomptés.
référence ▸ suite
Ce que Scribe construit pour vous
La surveillance qu’elle crée : types de vérification, modes et cadence.
→ WorkflowsLes étapes enregistrées qu’une mission fige.
→ Crawler un site entierLe crawl qu’elle peut lancer et réarmer.
→ Sessions IALa session de navigation autonome, prise à part.
→ Managed endpointsLes portes REST, compatibles OpenAI et MCP qu’elle publie.
→ Personas, secrets et agentsL’identité de connexion avec laquelle elle se connecte.
→faq
Questions Scribe, répondues.
Scribe va-t-elle acheter quelque chose sans me demander ?
Scribe voit-elle un jour mon numéro de carte ?
Puis-je faire tourner Scribe sur un déploiement auto-hébergé ?
Qu’est-ce qui change avec Scribe desktop ?
Mon appel respond a rendu 409. Que s’est-il passé ?
Quelle part de son raisonnement puis-je voir ?
fin ▸ demandez-lui
Décrivez une tâche et regardez-la s’arrêter.
La façon la plus rapide de comprendre le modèle de validation est de démarrer une mission et de lire le premier pending_request sur lequel elle s’arrête.