For AI agents
A content backend your agent can use, and your team can trust.
Every Moteur operation is a tool your agent can call, signed in as a person and limited to the projects they choose. What it writes waits, marked, until someone reads it.
terminal
# Hosted: sign in in the browser, choose the projects
claude mcp add --transport http moteur https://api.moteur.io/mcp
# Or local, through the CLI's sign-in
npm install -g @moteurio/cli && moteur auth login
claude mcp add moteur -- npx -y @moteurio/mcpTry it
Every tool, searchable
Search the tools an agent gets: “translate”, “publish”, “alt text”. See which only read, which are left out until someone allows them, and what compact mode offers instead.
Tools: 184
auth_whoamiWho you are signed in as, and wherereads onlyauth_providersThe sign-in options the server offersreads onlystatusThe default project, the API, and the models in itprojects_listYour projectsreads onlyprojects_getShow a project and its settingsreads onlyprojects_describeA project’s shape in one answer: languages, how content goes live, your roles, every model’s fieldsreads onlyprojects_createCreate a project (JSON, or an id and a label)projects_updateChange a project’s settings (JSON with the fields to change, or a new label)projects_deleteDelete a projectcan’t be undone: off unless allowedprojects_usageThis month’s use: entries, storage, requests, AIreads onlyprojects_limitsWhat the project’s plan allowsreads onlyentries_listList a model’s entries: search, filter, sort, pagereads onlyentries_getShow one entryreads onlyentries_createCreate an entry from its JSON ({ id, data, … }) and/or fields to setentries_updateChange fields of an entry: fields to set (title.en=…), or JSON { data: {…} }entries_deleteDelete an entrycan’t be undone: off unless allowedentries_publishPublish an entry: what is saved now goes liveentries_statusSet an entry’s state (draft, in_review, published, unpublished)entries_unpublishTake an entry offline (it stays as it is)can’t be undone: off unless allowedentries_reviewAsk for a review of an entryentries_historyThe saved versions of an entry, newest firstreads onlyentries_versionAn entry as one saved version had itreads onlyentries_restoreBring a saved version of an entry backcan’t be undone: off unless allowedmodels_listList the modelsreads onlymodels_getShow one modelreads onlymodels_createCreate a model from its JSONmodels_updateChange part of a model (JSON with the fields to change)models_deleteDelete a modelcan’t be undone: off unless allowedmodels_historyThe saved versions of a model, newest firstreads onlymodels_versionA model as one saved version had itreads onlymodels_restoreBring a saved version of a model backcan’t be undone: off unless allowedreviews_listReviews: waiting, approved, sent backreads onlyreviews_getShow one reviewreads onlyreviews_approveApprove a review: the entry is publishedreviews_rejectSend it back with a note for the askerschedules_listPublishing and unpublishing to come (and past)reads onlyschedules_getShow one schedulereads onlyschedules_createPublish or unpublish an entry or a page at a given timeschedules_cancelCancel a schedule that hasn’t runschedules_deleteDelete a schedule from the listcan’t be undone: off unless allowedcomments_listNotes on an entry or a pagereads onlycomments_addLeave a note on an entry, a page, or one of their fieldscomments_editChange a note’s textcomments_resolveMark a note donecomments_deleteDelete a notecan’t be undone: off unless allowednotifications_listYour notifications (unread first)reads onlynotifications_readMark one readnotifications_read_allMark them all readactivity_listWhat happened in a project, newest firstreads onlyactivity_ofWhat happened to one thing: an entry (entry article__glace), a page, a model…reads onlypages_listList the pagesreads onlypages_getShow one pagereads onlypages_createCreate a page from its JSONpages_updateChange part of a page (JSON with the fields to change)pages_replaceReplace a page with the JSON givencan’t be undone: off unless allowedpages_deleteDelete a pagecan’t be undone: off unless allowedpages_by_slugFind a page by its slugreads onlypages_referrersWhat links to a page: entries and other pages (check before deleting it)reads onlypages_statusSet a page’s state (draft, published…)pages_reviewAsk for a review of a pagepages_reorderMove pages in the tree (JSON: [{ id, parentId, order }…])pages_validateCheck a page for problemsreads onlypages_validate_allCheck every pagereads onlypages_historyThe saved versions of a page, newest firstreads onlypages_versionA page as one saved version had itreads onlypages_restoreBring a saved version of a page backcan’t be undone: off unless allowedsite_urlsEvery published address of the site, in every languagereads onlysite_sitemapThe sitemap, as XML (default) or JSONreads onlysite_navigationThe page tree as the site navigates itreads onlysite_breadcrumbThe trail to a page (and an entry shown on it)reads onlysite_resolveWhat lives at an address: a page or entry (and its language), or a redirectreads onlysite_redirectsOld addresses and where they goreads onlysite_redirect_addSend an old address somewhere elsesite_redirect_updateChange where a redirect goessite_redirect_deleteRemove a redirectcan’t be undone: off unless allowedmenus_listList the menusreads onlymenus_getShow one menureads onlymenus_createCreate a menu from its JSONmenus_updateChange part of a menu (JSON with the fields to change)menus_deleteDelete a menucan’t be undone: off unless allowedmedia_listFiles in the library, newest firstreads onlymedia_getShow one filereads onlymedia_uploadAdd files to the librarymedia_updateChange a file’s alt text, title, caption, credit or focal pointmedia_movePut a file in a folder ("" for none)media_replaceSwap a file for another of the same kind, keeping its id and usesmedia_deletePut a file in the bin (it can come back)media_binFiles in the binreads onlymedia_restoreTake a file out of the binmedia_purgeDelete a binned file for good (content leads and admins)can’t be undone: off unless allowedmedia_empty_binDelete everything in the bin for good (content leads and admins)can’t be undone: off unless allowedmedia_usageWhere a file is used (or, without an id, how many places use each file)reads onlymedia_batchChange several files at once (JSON: { action: bin|restore|move|update, ids, folder, changes })media_regenerateRemake the sizes of some files (or all)media_video_checkAsk the video host where a video standsmedia_video_retrySend a refused video to its host againmedia_settings_getStorage, sizes and video hostsreads onlymedia_settings_updateChange media settings (JSON: { assetConfig, videoProviders })media_settings_check_storageTry storage settings before saving them (JSON: { adapter, adapterConfig })reads onlymedia_settings_move_storageMove every file to another storage and switch to it (JSON: { adapter, adapterConfig })can’t be undone: off unless allowedmedia_settings_move_videosMove the videos to where new ones gocan’t be undone: off unless allowedmedia_settings_forget_hostForget a video host’s keyscan’t be undone: off unless allowedmedia_settings_asset_configImage sizes and formatsreads onlymedia_settings_set_asset_configChange image sizes and formats (JSON)templates_listList the templatesreads onlytemplates_getShow one templatereads onlytemplates_createCreate a template from its JSONtemplates_updateChange part of a template (JSON with the fields to change)templates_replaceReplace a template with the JSON givencan’t be undone: off unless allowedtemplates_deleteDelete a templatecan’t be undone: off unless allowedtemplates_validateCheck a template for problemsreads onlytemplates_historyThe saved versions of a template, newest firstreads onlytemplates_versionA template as one saved version had itreads onlytemplates_restoreBring a saved version of a template backcan’t be undone: off unless allowedlayouts_listList the layoutsreads onlylayouts_getShow one layoutreads onlylayouts_createCreate a layout from its JSONlayouts_updateChange part of a layout (JSON with the fields to change)layouts_deleteDelete a layoutcan’t be undone: off unless allowedlayouts_historyThe saved versions of a layout, newest firstreads onlylayouts_versionA layout as one saved version had itreads onlylayouts_restoreBring a saved version of a layout backcan’t be undone: off unless allowedstructures_listList the structuresreads onlystructures_getShow one structurereads onlystructures_createCreate a structure from its JSONstructures_updateChange part of a structure (JSON with the fields to change)structures_deleteDelete a structurecan’t be undone: off unless allowedstructures_historyThe saved versions of a structure, newest firstreads onlystructures_versionA structure as one saved version had itreads onlystructures_restoreBring a saved version of a structure backcan’t be undone: off unless allowedblocks_listList the blocksreads onlyblocks_getShow one blockreads onlyblocks_createCreate a block from its JSONblocks_updateChange part of a block (JSON with the fields to change)blocks_replaceReplace a block with the JSON givencan’t be undone: off unless allowedblocks_deleteDelete a blockcan’t be undone: off unless allowedblocks_historyThe saved versions of a block, newest firstreads onlyblocks_versionA block as one saved version had itreads onlyblocks_restoreBring a saved version of a block backcan’t be undone: off unless allowedblocks_coreThe server’s own block typesreads onlyforms_listList the formsreads onlyforms_getShow one formreads onlyforms_createCreate a form from its JSONforms_updateChange part of a form (JSON with the fields to change)forms_deleteDelete a formcan’t be undone: off unless allowedforms_historyThe saved versions of a form, newest firstreads onlyforms_versionA form as one saved version had itreads onlyforms_restoreBring a saved version of a form backcan’t be undone: off unless allowedsubmissions_listWhat people sent through a formreads onlysubmissions_getShow one submissionreads onlysubmissions_markMark a submission read or unread, spam or notsubmissions_deleteDelete a submissioncan’t be undone: off unless allowedsubmissions_exportEvery submission of a form, as CSV or JSON (or written to a file)reads onlyfield_types_listEvery field type the server knows, with its optionsreads onlymembers_listPeople in the project, their roles, when they were last herereads onlymembers_updateChange someone’s roles in the project, or turn their access offinvites_listInvites not answered yetreads onlyinvites_sendInvite someone to the projectinvites_resendSend an invite againinvites_withdrawWithdraw an invitecan’t be undone: off unless allowedinvites_showWhat an invite link is forreads onlyinvites_acceptJoin a project with an invite (signed in)invites_registerCreate your account from an invitekeys_listAPI keys (never their secrets)reads onlykeys_createMake an API key (its secret is shown once)keys_updateChange a key’s name, expiry or what it may readkeys_rotateReplace a key’s secret (the old one stops working)can’t be undone: off unless allowedkeys_revokeTurn a key off for goodcan’t be undone: off unless allowedchannels_listList the channelsreads onlychannels_getShow one channelreads onlychannels_createCreate a channel from its JSONchannels_updateChange part of a channel (JSON with the fields to change)channels_deleteDelete a channelcan’t be undone: off unless allowedchannels_openapiThe OpenAPI document a frontend reads this channel withreads onlychannels_schemaWhat this channel delivers, described: models, templates, blocks, structuresreads onlywebhooks_listList the webhooksreads onlywebhooks_getShow one webhookreads onlywebhooks_updateChange part of a webhook (JSON with the fields to change)webhooks_deleteDelete a webhookcan’t be undone: off unless allowedwebhooks_createCall an address when content changes: a build hook, or any servicewebhooks_testSend a test callwebhooks_logRecent deliveries and their answersreads onlywebhooks_retrySend a failed delivery againwebhooks_rotate_secretReplace the signing secretcan’t be undone: off unless allowedbranches_listContent branches, and the current onereads onlybranches_createStart a branchbranches_switchWork on another branchbranches_mergeBring a branch into the current onecan’t be undone: off unless allowedbranches_logThe content’s git historyreads onlybranches_statusWhere the history stands: branch, last commit, and what the Git address lacksreads onlybranches_pushPush the history to the project’s Git address nowtypesTypeScript types of the content (models, templates, blocks, structures)reads onlyimports_runImport a bundle: schemas, files, pages, entries, menus, redirects (all or nothing)imports_listRecent importsreads onlyimports_getAn import and how far it has comereads onlyimports_approvePut a waiting import live (a person who can publish)exportThe project as an import bundlereads onlyai_statusWhether AI is on, and with which providerreads onlyai_settingsThe project’s AI: provider and creditsreads onlyai_helpersThe helpers you may use here, with creditsreads onlyai_writeSuggest text for a field: draft, rewrite, shorten, expand, change the toneai_translateTranslate a field’s text from one language to anotherai_altSuggest alt text and a caption for a pictureai_imageMake pictures from a descriptionai_audioMake speech from textai_model3dMake a 3D model from a descriptionai_keep_modelKeep a generated 3D model in the media libraryai_entryDraft a whole entry for a model (shown, not saved)ai_auditWhat AI was asked in the project (prompts for operators)reads onlyai_audit_eventOne AI event in fullreads onlyradar_reportProblems found in the content (missing translations, broken links…)reads onlyradar_entryProblems in one entryreads onlysearch_querySearch entries in the project’s search enginereads onlyshopify_statusThe Shopify connectionreads onlyshopify_connectSet the shop, its token and the product modelshopify_syncPull products from Shopify into entriescommands_listCommands plugins added on this APIreads onlyplay_pollA poll’s resultsreads onlyplay_qrA QR code as SVGreads onlyplay_oembedThe embed for a link (YouTube, Vimeo…)reads onlyblueprints_listBlueprints of a kindreads onlyblueprints_getShow a blueprintreads onlybilling_showThe project’s plan and subscriptionreads onlyoff unless asked forbilling_plansPlans the project can be on, with pricesreads onlyoff unless asked forbilling_checkoutMove the project to a plan (gives the payment link)off unless asked forbilling_addonsSet how many packs of an extra the project hasoff unless asked forbilling_portalA link to the Stripe customer portaloff unless asked forapi_requestCall any API route, signed in (for what has no command yet, and plugins)off unless asked for- No tool matches.
moteur_findFind Moteur commands. Lists the commands available (all, or those matching words), with what each does. Then describe one with moteur_describe and run it with moteur_run.moteur_describeDescribe a Moteur command. The arguments a command takes (as JSON Schema), and the call it makes.moteur_runRun a Moteur command. Runs a command with its arguments (see moteur_describe).
The list is the engine’s own: the same commands as the CLI. A tool for a plugin shows up only where the plugin runs.
For agent builders
Built for agents
The things that make an agent useful in a real project, and the ones that make the team let it in.
Start
One call to understand a project
projects_describe returns the languages, how content goes live, and every model’s fields, so an agent knows the shape before it writes.
- No guessing field names
- Then entries_list for a model
Size
Many tools, or three
Clients that handle many tools get one per command. The rest get compact mode: find, describe, run.
- 170 by default
- Three in compact mode
Sign-in
Signed in as a person
An agent connects through the Studio, as someone, to the projects they pick, at the level they choose.
- No token to paste
- Disconnect at once
Reviews
Changes wait for a person
What an agent writes is marked until read, and goes live only after a person approves it.
- It can’t approve itself
- Two names on every change
Safety
Nothing it can’t undo
Tools that delete, purge or merge stay out unless allowed. Every save is a commit with a way back.
- Billing tools are opt-in
- Server operations never are tools
AI
Helpers it can call too
An agent can ask the project’s own AI helpers to translate or write alt text, for the same credits as a person.
- ai_translate
- When an admin turns them on
Questions agent builders ask
A developer asksWhich clients work?
MoteurClaude Code, Claude, ChatGPT and other MCP clients, through the hosted server. Locally, any client that runs an MCP server over stdio.
A developer asksCan my agent publish?
MoteurConnected through Moteur Cloud, no: a person approves what it writes. Run locally by a developer, it can be allowed to publish their own work.
An agency owner asksDoes it need its own account?
MoteurNo. It works as the person who connected it, with their roles, and its changes say so: “Louise Gagnon via Claude Code”.
A developer asksHow does it know what’s in a project?
MoteurIt asks. projects_describe returns the languages, the workflow and every model’s fields in one answer.
Give your agent a project.
Start a free project, connect your assistant, and ask it to describe what’s there.