Umbodi
Pour les développeurs

Le moteur, pas seulement l'app.

La moitié « recherche » d’Umbodi est accessible depuis votre propre code : un client typé, un service HTTP, un serveur MCP, ou une version auto-hébergée sous licence tournant avec vos propres clés fournisseur. La moitié « réponses IA » est aujourd’hui disponible uniquement dans le produit hébergé. Les tableaux ci-dessous disent exactement ce qui relève de l’un ou de l’autre, car une page développeur qui surestime sa portée vous coûte une après-midi avant que vous ne le découvriez.

ESM pur · aucune étape de build Zéro dépendance d’exécution Node · Deno · edge · browser node --test · plus de 6 900 tests sur la plateforme

Six façons de le livrer.

Trois façons de le faire tourner — et où chacune s’arrête.

Les six surfaces ci-dessus sont COMMENT vous l’appelez. Voici ce qu’il a le droit de faire seul. Chaque mode a un plafond honnête différent, et celui que vous choisissez décide qui appuie sur le dernier bouton.

MODE 1 · TOOL

Sans accès au dépôt

Umbodi prépare le changement et une personne l’applique — copier, coller, envoyer. Il ré-explore ensuite la page en ligne et prouve que le changement y est vraiment. Complet, et ne demande aucune confiance.

MODE 2 · TOOL + GIT

Ouvre une pull request

Un commit atomique sur une branche dédiée, jamais la branche par défaut. Une personne relit et fusionne. Sûr en cas de nouvelle tentative : relancer met à jour la même pull request au lieu d’en ouvrir une seconde.

MODE 3 · INTEGRATED

Auto-réparation

Intégré via l’API ou le SDK, la boucle se referme sans personne dedans : fusion si tout est au vert, puis vérification. La fusion est une option explicite et distincte, jamais héritée d’un curseur d’autonomie.

Un mot, deux sens — vérifiez lequel vous lisezLa documentation du moteur emploie auto-réparation au sens de résilience opérationnelle : nouvelle tentative avec temporisation, bascule de fournisseur, et explicitement aucun code auto-modifiant. Le mode 3 ci-dessus est autre chose : la boucle d’écriture qui fusionne une pull request et vérifie le déploiement. Les deux sont réels ; ce ne sont pas la même capacité, et seule la seconde touche à votre dépôt.

Ce que le moteur vous donne, et ce qui reste hébergé.

Mesuré sur le code du moteur le 30 septembre 2026, et non décrit de mémoire. Si vous évaluez Umbodi pour la partie « réponses IA », lisez ceci avant de commencer.

  • Dans le moteur — six actions. analyze · generate · rankings · competitors · content · status. Chaque surface — SDK, service HTTP, MCP, la compétence Claude, les widgets — est une façon différente d’atteindre ces mêmes six actions. Toutes les six concernent la recherche. Le moteur possède sa propre suite, rapportée par son propre npm test — un chiffre distinct du total de la plateforme ci-dessus, et que ce dépôt ne peut pas recalculer pour vous.
  • Hébergé uniquement — la visibilité dans les réponses IA. Les cinq moteurs de réponse, la vérification des citations et les rapports associés ne sont pas dans le moteur sous licence et ne sont accessibles ni par le SDK ni par MCP. Ils tournent dans le produit hébergé. Le dire vous coûte moins cher que de le découvrir après une licence.
  • Hébergé uniquement — le canal d’écriture. Ouvrir une pull request, la fusionner au vert et vérifier le déploiement en ligne sont des capacités hébergées ; le moteur lui-même recherche et rédige, et n’écrit jamais dans votre dépôt. Une clé de licence atteint la première via l’API hébergée — apply ouvre une pull request avec les changements que vous avez approuvés. Elle ne peut jamais en fusionner une.
  • Borné volontairement. Quel que soit le mode, l’agent n’écrit que du contenu et des fichiers de découvrabilité — il ne peut jamais modifier le code qui décide de ce qu’il a le droit de changer. Cette borne est vérifiée juste avant tout acte irréversible, pas seulement au moment de la proposition.
À propos des noms de paquetsLe produit s’appelle Umbodi ; le paquet du moteur reste @ascent/seo-agent (son serveur MCP est le binaire seo-agent-mcp), et les variables d’environnement restent ASCENT_SERVICE_URL, ASCENT_LICENSE et ASCENT_LOCAL. Ce sont de vrais identifiants, figés jusqu’à une version majeure — copiez-les exactement tels quels. Le paquet n’est pas sur un registre public : les clients sous licence le reçoivent d’Umbodi. L’API hébergée sur https://umbodi.ai/v1 ne demande aucun paquet.
Honnête par conceptionLes chiffres sont toujours étiquetés mesuré sur Google (un rang réel) ou estimation Umbodi (une projection) — les deux ne sont jamais confondus, sur tous les canaux.
Approfondir

Brief architecture & intégration

Le document développeur complet — profil d’exécution, les six surfaces, le cycle de vie des actions, un parcours d’adoption sûr et la checklist de production.

Démarrage rapide

Analysez un site en une minute environ.

Avec une clé de licence, appelez l’API hébergée — rien à installer, et analyze est gratuit. Avec le moteur sous licence, lancez le même audit en processus avec l’adaptateur de contenu sitemap.

# hosted — your license key, nothing to install
curl -s -X POST https://umbodi.ai/v1/analyze \
  -H "authorization: Bearer $ASCENT_LICENSE" -H 'content-type: application/json' \
  -d '{"url":"https://acme.com"}'          # → { issues: [...] }
// licensed engine, in-process (delivered to licensed customers)
import { createSeoAgent, sitemapAdapter } from '@ascent/seo-agent'

// the sitemap adapter is the no-code source of pages to audit
const { listIndexableEntities } = sitemapAdapter({ origin: 'https://acme.com' })

const seo = createSeoAgent(
  { site: { domain: 'acme.com' } },
  { listIndexableEntities },
)

const { issues } = await seo.analyze()
console.log(issues)

generate() (propositions de contenu IA) et run() (la boucle de tâches) utilisent les coutures fournisseur et stockage — voir la section SDK.

Sous licence · demander l’accèsUmbodi est un moteur commercial et n’est pas encore sur un registre public. La ligne d’installation illustre le flux prévu ; commencez dans l’application ou contactez-nous pour demander un accès développeur.
SP0 · Cœur du SDK

Le SDK — une façade, quatre profils.

createSeoAgent(config, deps) enveloppe les cœurs purs et renvoie { analyze, generate, run }. Une couche d’exécution détecte Node / Deno / edge / navigateur et sépare le fiable (serveur, détient les clés) du non fiable (navigateur, relaie les appels secrets au service). Une vérification de licence ES256 hors ligne réutilise vos droits.

import { createSeoAgent, sitemapAdapter, memoryStore } from '@ascent/seo-agent'

const seo = createSeoAgent(
  { site: { domain: 'acme.com' }, serviceUrl: 'https://your-service' },
  {
    listIndexableEntities: sitemapAdapter({ origin: 'https://acme.com' }).listIndexableEntities,
    store: memoryStore(),
    // callClaude, db, auth … wire the seams you need for generate()/run()
  },
)

const { issues } = await seo.analyze()
const draft   = await seo.generate()   // human-approved content proposals
  • @ascent/seo-agent/license — verifyLicense(token, {publicJwk, now}), offline.
  • @ascent/seo-agent/config · /runtime — resolve config + the runtime/trust split.
  • Quatre profils init : headless · api · frontend · admin.
SP1 · Service / API

Un gestionnaire. N routes. Secrets côté serveur.

Un unique routeur standard Web handleRequest(Request) → Response sur chaque enveloppe backend, avec authentification de licence unifiée Authorization: Bearer, CORS et réponses tolérantes aux pannes. C’est le point de terminaison vers lequel le SDK navigateur relaie — ainsi les clés restent sur le serveur.

Ou ne l’hébergez pas du toutUmbodi exécute ce contrat sur https://umbodi.ai/v1 : chaque action est un POST /v1/{action} avec votre clé de licence, les actions payantes sont débitées en crédits sur le compte de la clé, et un site doit être l’un de vos propres projets. GET /v1/status liste les actions.
import { createSeoService, defaultHandlers, toNodeHandler } from '@ascent/seo-agent/service'

const service = createSeoService({
  handlers: defaultHandlers(ctx),   // ctx = your provider + storage seams
  publicJwk,                        // verifies license keys offline
  corsOrigins: ['https://your.site'],
})

// Web-standard (edge / Deno / Bun):
export default (request) => service.handleRequest(request)

// or adapt to a Node http handler:
export const nodeHandler = toNodeHandler(service)
# call it with a license
curl -X POST https://your-service/analyze \
  -H "authorization: Bearer $ASCENT_LICENSE" \
  -H "content-type: application/json" \
  -d '{"site":{"domain":"acme.com"}}'
Référence & téléchargements
Obtenir
SP2 · Serveur MCP

Sept outils, et l’un d’eux agit.

Un serveur Model Context Protocol fait main, sans dépendance, via stdio, exposant analyze · generate · rankings · competitors · content · status · apply. Une clé de licence seule utilise l’API hébergée d’Umbodi (umbodi.ai/v1) ; pointez-la vers votre propre service avec ASCENT_SERVICE_URL, ou exécutez un SDK local en processus.

Un outil agit, et il proposeSix outils lisent ou rédigent. apply demande au service d’ouvrir une pull request — relisible, réversible, visible avant tout le reste — et il ne peut jamais la fusionner. Une clé de licence est une chaîne qui finit dans des fichiers de configuration, des variables de CI et des captures d’écran, ce qu’une installation GitHub App ne fait jamais : aucune action authentifiée par licence ne peut donc fusionner : l’API hébergée n’a pas d’action de fusion, et la vérification des droits refuse une fusion avant même d’examiner la clé. La fusion reste au propriétaire du projet. Il n’y a toujours pas d’outil run ni d’action de worker, le transport est uniquement stdio, et la couche JSON-RPC est un sous-ensemble écrit à la main, pas le SDK officiel.
// add to your MCP client config (e.g. Claude Desktop)
{
  "mcpServers": {
    "ascent-seo": {
      "command": "node",
      "args": ["/path/to/seo-agent/mcp/server.mjs"],
      "env": { "ASCENT_LICENSE": "your-license-key" }
    }
  }
}

Vous préférez l’importer? @ascent/seo-agent/mcp expose runServer, defineTools et resolveBackend.

Référence & téléchargements
Obtenircurl https://umbodi.ai/v1/status
SP3 · Compétence Claude

Une compétence Claude prête à l’emploi.

La compétence ascent-seo permet à Claude d’exécuter des tâches Umbodi pour vous. Elle privilégie le serveur MCP lorsqu’il est connecté et retombe sinon sur un script CLI sans dépendance — elle fonctionne donc que MCP soit câblé ou non. Une référence d’honnêteté garde les résultats mesurés et projetés clairement séparés dans ce que Claude rapporte.

  • Livrée comme skill/ascent-seo/ — SKILL.md + référence d’honnêteté + CLI de repli.
  • MCP prioritaire ; le chemin script ne requiert que ASCENT_SERVICE_URL + ASCENT_LICENSE.
  • Se marie naturellement avec le serveur MCP ci-dessus.
Référence & téléchargements
SP4 · Widgets frontend

Widgets navigateur — build pur, montage léger.

Widgets navigateur sans dépendance, protégés contre le XSS : un injecteur de méta, un badge de rang (mesuré), une jauge de potentiel (projeté) et une carte de résultat honnête. Chacun est un pur buildX(data) → html plus un léger mountX(el, data), avec un theme.css de base.

import { mountRankBadge } from '@ascent/seo-agent/widgets'
import '@ascent/seo-agent/widgets/theme.css'

mountRankBadge(document.querySelector('#rank'), {
  keyword: 'best crm',
  position: 5,          // measured on Google — not a projection
})

makeAscentClient() crée un client navigateur qui dialogue avec votre service ; seul le jeton est envoyé, jamais les secrets.

Référence & téléchargements
Obtenir↓ Widget kit .zipfree · includes theme.css
SP5 · Cockpit d’administration

Un cockpit opérateur que vous contrôlez.

Six panneaux exploitables — propositions, mots-clés, classements, concurrents, autonomie, statut — bâtis sur un petit cadre de panneaux. Les panneaux affichent les données que vous leur passez et écrivent via un rappel onAction que vous branchez, donc aucun point d’écriture caché ne fait semblant d’exister.

import { mountProposals } from '@ascent/seo-agent/admin'

mountProposals(document.querySelector('#proposals'), proposals, {
  onAction: (action) => approve(action), // you own the write path
})
Référence & téléchargements
Obtenir
Crédits Umbodi et facturation

Deux façons de payer les opérations payantes.

Les opérations payantes (SERP + IA) ont un coût. Leur facturation dépend de l’endroit où tourne le moteur — sur votre infrastructure, ou sur l’API hébergée d’Umbodi.

Auto-hébergé / sous licence → vos clés, sans crédits Umbodi

Exécutez le moteur sur votre propre infrastructure avec vos clés Serper/Anthropic. Vous payez ces fournisseurs directement — les crédits Umbodi ne s’appliquent pas et il n’y a rien à recharger. Votre coût = votre facture fournisseur + la licence annuelle. Générez une clé via un bouton 🔒 Generate license.

API / Service hébergé → crédits Umbodi

Appelez l’API hébergée d’Umbodi sur https://umbodi.ai/v1 avec votre clé de licence (Authorization: Bearer). Umbodi exécute les opérations avec ses clés — ou les vôtres, si vous les avez connectées — et débite des crédits Umbodi sur le compte de la clé : le même portefeuille et les mêmes prix que l’app. Un appel qui échoue chez le fournisseur est remboursé ; un portefeuille vide renvoie 402 insufficient_credits, et un projet à son plafond mensuel 402 project_cap_reached. Un sujet content portant sur l’un de vos concurrents suivis est refusé avec 422 topic_refused avant tout débit.

// a paid call: charged to the key's account, refused if the site is not yours
POST https://umbodi.ai/v1/rankings
Authorization: Bearer <license key>
{ "site": { "domain": "example.com" } }   // → { results: [{ keyword, position, top }] }

// top up from the app, signed in — the account comes from your session
POST /api/payments/mips/create-payment
{ "kind": "credit_pack", "packId": "pack_5k" }   // 401 signed out · 503 payments off

Vos propres clés (BYOK) : connectez vos clés Serper/Claude dans les paramètres du compte et les opérations hébergées s’exécutent sur vos clés à quasi zéro crédit — idéal pour les agences et les gros volumes.

L’opérateur peut suspendre la facturation — les appels hébergés sont alors gratuits (l’usage est quand même enregistré).

← Back Docs
Téléchargements

Récupérez les composants gratuits.

Les éléments ouverts sont à télécharger et à utiliser dès maintenant. Le moteur sous licence — cœur du SDK, service/API, serveur MCP, cockpit d’administration — est disponible sur demande.

Kit de widgets

Widgets navigateur + theme.css — badge de rang, jauge de potentiel, carte de résultat, injecteur de méta.

↓ .zip

Compétence Claude

La compétence ascent-seo — SKILL.md, référence d’honnêteté, CLI de repli.

↓ .zip

Définitions de types

La surface d’API .d.ts — entités, adaptateurs, stockage, fournisseurs.

↓ .zip

Exemples

Exemples d’utilisation du SDK exécutables.

↓ .zip

🔒 Sous licence · cœur du SDK · service/API · MCP · admin

Le moteur lui-même est un produit commercial sous licence — auto-hébergé ou en marque blanche. Ce n’est pas un téléchargement public — demandez un accès développeur et nous vous configurerons.

Honnête par conceptionSeuls les éléments gratuits ci-dessus sont téléchargeables ici. Rien sur cette page ne livre le moteur sous licence — la demande d’accès est le seul moyen de l’obtenir.
À regarder

L’intégration, de bout en bout.

Un passage sur les surfaces qu’un développeur touche réellement : où se règlent l’origine et le fournisseur SERP, quels chercheurs s’exécutent, l’application GitHub qui permet à Umbodi d’ouvrir une pull request, et la liste de travail où un changement vous est rendu sous forme de texte à coller plutôt qu’écrit sur votre site à votre insu.

The configuration screen showing the site origin, the SERP provider, the researchers that run, fleet learning, and the GitHub repository pull requests are opened against, followed by the apply worklist handing back a page to paste.
La configuration, l’application GitHub et la liste de travail — enregistré sur l’application en direct, en lecture seule.

D’autres démonstrations, une par surface, à mesure que la surface d’intégration s’étoffe.

Réponses directes

Les questions que l'on pose.

Comment appeler Umbodi depuis mon code ?

Appelez l'API hébergée sur umbodi.ai/v1 avec votre clé de licence. Elle exécute les mêmes routes que l'app, aux mêmes prix, décomptés sur les crédits de votre compte. Ou exécutez le moteur sous licence sur votre propre infrastructure, avec vos propres clés de fournisseur.

Mon propre agent peut-il piloter Umbodi ?

Oui. Le serveur MCP d'Umbodi donne à un agent sept outils : auditer une page, construire le profil du site, vérifier les classements, trouver les concurrents, rédiger du contenu, indiquer l'état, et ouvrir une pull request avec les changements que vous avez approuvés. Il ne peut jamais en fusionner une, et la boucle planifiée reste sur le calendrier d'Umbodi.

Puis-je auto-héberger Umbodi ?

Oui. Une version sous licence tourne sur votre propre infrastructure avec vos clés fournisseurs et une clé de licence signée hors ligne, et peut être déclinée en marque blanche sous votre nom. Rien ne nous rappelle pour autoriser une exécution.

Umbodi agit selon votre mandat — un agent autonome pour la visibilité dans la recherche et les réponses IA. Il trouve le travail, le livre, et mesure ce qui s'est passé.
Umbodi™ est une marque d’I-Novanet Software Ltd. Demande acceptée à Maurice (MU/M/2026/44210).