accueil / serveurs / Dev & Code / be.vibedeploy/vibedeploy
be.vibedeploy/vibedeploy
serveur MCP (Model Context Protocol) · vibedeploy 1.1.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que be.vibedeploy/vibedeploy est sûr ?
Au dernier audit MCP Hub, le serveur MCP « be.vibedeploy/vibedeploy » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 43 outils
- abort_deploy≈ 200 tokens
Discard a begin_deploy session and its staged files; the live site is untouched. Cleanup is best effort and retried later if it fails.
Paramètres, retour & exemple (1)
ParamètresdeployId· string · requis
Session id returned by begin_deploy.
Exemple d'appel{"name": "abort_deploy", "arguments": {"deployId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "texte", "deployId": "texte"}} - add_custom_domain≈ 695 tokens
Start attaching a user-owned domain to an existing site: returns the TXT record the user adds at their DNS provider. Idempotent: the same siteName and domain return the existing record. Once the TXT is published (usually minutes, up to 24h), call verify_custom_domain with the returned recordId. The site must already exist; call deploy_site first if it does not.
Paramètres, retour & exemple (2)
Paramètresdomain· string · requis
The user-owned hostname to attach, e.g. 'shop.example.com'. Must be a valid FQDN.siteName· string · requis
The VibeDeploy site name to attach the domain to (e.g. 'tester').
Exemple d'appel{"name": "add_custom_domain", "arguments": {"domain": "texte", "siteName": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"domain": "texte", "status": "pending_verification", "nextCall": {}, "recordId": "texte", "instructions": "texte", "alreadyAttached": true, "dnsAutoConfigured": true, "verificationRecord": {}}} - add_file_chunk≈ 802 tokens
Send one file in several calls when it is too big for a single tool call. Last resort: first try add_files with encoding:'gzip+base64' (about 250 KB of text in one call), begin_deploy's uploadUrl (one 100 MB tar POST) or deploy_from_url (public archive URL). When chunking, gzip+base64 each chunk too, mark the first with isFirst and the last with isLast, and send chunks of one file one after another: parallel chunks corrupt it. After a transport error, do not resend the chunk blindly: restart the file from its first chunk (isFirst truncates it).
Paramètres, retour & exemple (7)
Paramètrespath· string · requis
Path relative to the site root, e.g. 'portaal-admin.html'. Same rules as add_files.isLast· boolean · requis
True on the final chunk: returns the assembled file size and refreshes the session file count.content· string · requis
This chunk's bytes, as UTF-8 text or encoded per encoding. Chunk size is limited by your client's tool-output budget, not by the server: about 80 KB of base64 (60 KB raw) per chunk is a safe upper bound.isFirst· boolean · requis
True on the first chunk of a file: truncates any staged file at this path and creates parent directories.deployId· string · requis
Session id returned by begin_deploy.encoding· string · optionnel · utf8 | base64 | gzip+base64
utf8 (default), base64 (binary), or gzip+base64 (gzip this chunk locally; the server gunzips before appending). Set per chunk.expectedByteOffset· integer · optionnel
Optional check: where this chunk starts in the assembled file (0 for the first chunk, else the decoded bytes sent so far). A mismatch fails with MISALIGNED_CHUNK before writing, which catches base64 split mid-byte.
Exemple d'appel{"name": "add_file_chunk", "arguments": {"path": "texte", "isLast": true, "content": "texte", "isFirst": true, "deployId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"path": "texte", "isLast": true, "deployId": "texte", "fileSize": 1, "totalBytes": 1, "totalFiles": 1, "bytesWritten": 1, "remainingBudget": 1}} - add_files≈ 665 tokens
Add files to an open begin_deploy session; call it as often as needed, then commit_deploy publishes them together. Paths, extensions and encodings are checked on every call. A 100-250 KB text file usually fits in one call with encoding:'gzip+base64' (gzip locally, then base64); prefer that over add_file_chunk. If your shell can reach mcp.vibedeploy.be, one tar(.gz) POST to begin_deploy's uploadUrl is faster still.
Paramètres, retour & exemple (2)
Paramètresfiles· ? · requis
Files to stage, same shape as in deploy_site. Re-adding a path overwrites the staged version. 500 MB per session in total.deployId· string · requis
Session id returned by begin_deploy.
Exemple d'appel{"name": "add_files", "arguments": {"files": "texte", "deployId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"deployId": "texte", "warnings": [], "filesAdded": 1, "totalBytes": 1, "totalFiles": 1, "remainingBudget": 1}} - apply_edits≈ 801 tokens
Apply literal find/replace edits to several files in one call, in the served files (target 'dist', live at once) or the editable source (target 'source', shipped by build_and_deploy). Same edit rules as update_file_content. All or nothing: if any edit's match count differs from its expected count, no file is written.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
Site name as shown by list_sites, e.g. my-portfolio.files· array · requis
Files + edits to apply. Up to 25 files / 200 total edits per call. All-or-nothing: if any edit's match count differs from its expected count, NOTHING is written.target· string · optionnel · dist | source
Tree to edit, dist (default) or source. Same tree applies to every file in this call.
Exemple d'appel{"name": "apply_edits", "arguments": {"name": "texte", "files": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "files": [], "siteId": "texte", "target": "dist", "warnings": [], "totalEdits": 1}} - begin_deploy≈ 615 tokens
Open a staging session for a deploy that is too large for one call: stage files with add_files (repeatable), add_file_chunk, or one tar(.gz) POST to the returned uploadUrl, then publish with commit_deploy. Use begin_deploy only when the files do not fit in one deploy_site or update_site call. Up to 5 open sessions per token; a session expires after 1 hour.
Paramètres, retour & exemple (2)
Paramètresmode· string · requis · replace | patch
How commit_deploy will apply the staged files. 'replace' wipes the live site and atomic-renames the staged set into place. 'patch' layers staged files on top of the live site (kept files = live + staged; deletes via commit_deploy's `delete` array).name· string · requis
Name of an existing site (see list_sites). Sessions do not create sites; deploy_site does.
Exemple d'appel{"name": "begin_deploy", "arguments": {"mode": "replace", "name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"mode": "replace", "siteId": "texte", "status": "texte", "deployId": "texte", "siteName": "texte", "expiresAt": "texte", "uploadUrl": "texte", "uploadToken": "texte"}} - build_and_deploy≈ 665 tokens
Build the site's stored editable source in an isolated one-shot build pod and atomically publish the output as the live site, replacing the served files (a restore point is normally taken first). Use build_and_deploy after changing stored source (write_source_files, apply_edits with target 'source'); use update_site instead to upload files that are already built. The first build saves buildCommand, outputDir and rootPath on the site, so later calls can omit them. A failed build returns its log in the error details.
Paramètres, retour & exemple (6)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.rootPath· string · optionnel
Subdirectory of the source tree that holds package.json (monorepos). Empty string = source root.outputDir· string · optionnel
Directory to publish. Default: the saved manifest, then auto-detect (dist > build > out > public).buildCommand· string · optionnel
Build command override, e.g. 'npm run build:prod' or 'pnpm vite build'. Default: the saved manifest, then 'npm run build'.saveManifest· boolean · optionnel
Default true: save these settings on the site for later builds. false = one-off build.
Exemple d'appel{"name": "build_and_deploy", "arguments": {"name": "texte", "siteId": "texte", "rootPath": "texte", "outputDir": "texte", "buildCommand": "texte", "saveManifest": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "name": "texte", "siteId": "texte", "buildLog": "texte", "manifest": {}, "manageUrl": "texte", "outputDir": "texte", "totalBytes": 1, "filesDeployed": 1}} - check_domain_availability≈ 578 tokens
Check whether a domain can be registered and get an indicative price (VAT included where it applies). Read-only: it never buys, registers or reserves a domain. alternatives:true also checks the same name on be, com, net, eu, nl, io, dev and app. Not tied to a site.
Paramètres, retour & exemple (2)
Paramètresdomain· string · requis
The domain to check, e.g. "example.com".alternatives· boolean · optionnel
When true, also check the same second-level name across a canonical TLD set (be, com, net, eu, nl, io, dev, app) and return each one's availability + indicative price.
Exemple d'appel{"name": "check_domain_availability", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "domain": "texte", "currency": "texte", "available": true, "priceCents": "texte", "alternatives": []}} - commit_deploy≈ 762 tokens
Publish a begin_deploy session's staged files to the live site in one atomic step, after a secret and malware scan of the complete set (on failure the session stays open to retry or abort). Replace mode on a site that has files needs confirm:"I-want-to-replace-all-files". After a timeout or dropped connection, call it again with the same deployId: it returns the running or finished commit instead of starting a second one. Use commit_deploy only to finish a begin_deploy session; deploy_site and update_site publish in one call.
Paramètres, retour & exemple (4)
Paramètresdelete· array · optionnel
Patch mode only: site-relative paths to remove from the live site in this commit (e.g. the old path of a renamed file).dryRun· boolean · optionnel
Preview the commit (filesDeployed, deletedFiles, confirm and plan checks) without touching the live site. Skips the secret and malware scan, which the real commit still runs.confirm· string · optionnel
Required only for replace-mode commits against a site that already has files. Pass exactly "I-want-to-replace-all-files" to acknowledge that the live files will be deleted and replaced with the staged set.deployId· string · requis
Session id returned by begin_deploy.
Exemple d'appel{"name": "commit_deploy", "arguments": {"deployId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "mode": "replace", "dryRun": true, "siteId": "texte", "deployId": "texte", "warnings": [], "manageUrl": "texte", "deletedFiles": [], "customHeaders": "texte", "filesDeployed": 1}} - create_snapshot≈ 336 tokens
Take a point-in-time snapshot of a site's served files, a restore point the user can restore in the VibeDeploy dashboard within the plan's restore window. Served content does not change, but retention cleanup may remove older snapshots. Container data is not included. Requires an owner or admin team role. NO_VOLUME means the site was never deployed.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.label· string · optionnel
Optional human-readable label for this snapshot.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "create_snapshot", "arguments": {"name": "texte", "label": "texte", "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"created": true, "snapshotName": "texte"}} - delete_site≈ 379 tokens
Soft-delete a site (confirm:true required). It stops serving at once and is purged after the plan's restore window (purgesAt in the result); until then the user can restore it in the VibeDeploy dashboard. Use delete_site to remove the whole site; use remove_app instead to stop only its container services.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.confirm· boolean · requis
Must be exactly true to actually delete the site.
Exemple d'appel{"name": "delete_site", "arguments": {"confirm": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "siteId": "texte", "status": "texte", "accepted": true, "purgesAt": "texte"}} - delete_source_file≈ 296 tokens
Remove one file from the site's editable source tree. The served files do not change until build_and_deploy runs.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.path· string · requis
Path inside the source tree to delete, e.g. 'src/old.css'.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "delete_source_file", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "path": "texte", "siteId": "texte", "existed": true}} - deploy_app≈ 618 tokens
Run container services next to a site, from any public image: the user's own server (running code from the site's source tree), a database such as Postgres or MySQL, Redis, or workers, each in a gVisor sandbox. The call applies the whole config: services missing from it are stopped (their volumes are kept) and the others restart, picking up new source files. It waits until every service is ready and returns per-service status; if one is not ready, call get_app_status with logs. One service may be public: it serves the site's HTTP traffic on its port. Use "${generated:NAME}" for database passwords. API keys and other outside secrets never go in the config, the source or the chat: the user adds them in the VibeDeploy dashboard (site Settings, Secrets) and every service receives them as environment variables. Per site: up to 6 services, 2048Mi memory and 2000m CPU in total, 4 volumes, 3Gi storage. Container volumes are not included in snapshots yet.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.config· object · optionnel
The app config; omit it to use vibedeploy.json from the site's source tree. Shape: {"services":{"<name>":{"image":"postgres:16-alpine","port":5432,"public":false,"env":{"KEY":"value"},"volumes":{"/var/lib/postgresql/data":"1Gi"},"command":[],"args":[],"workingDir":"/app","source":false,"sourcePath":"/app","memory":"256Mi","cpu":"500m"}}}. Services reach each other by name (host "db"). "source":true copies the source tree into sourcePath on every start, e.g. {"image":"node:22-alpine","source":true,"command":["sh","-c","npm ci && node server.js"],"port":3000,"public":true}. "$(OTHER)" embeds an earlier env var of the same service, e.g. "DATABASE_URL":"postgres://app:$(DB_PASSWORD)@db:5432/app". For Postgres set PGDATA to a subdirectory of the volume.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "deploy_app", "arguments": {"name": "texte", "config": {}, "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - deploy_from_url≈ 829 tokens
Fetch a public tar(.gz) archive over HTTPS and deploy its files to an existing site in one call (begin_deploy, upload and commit_deploy combined). Use deploy_from_url when the files are already published at a public URL, such as a repository archive that holds only the built site (no dotfiles), or when your sandbox reaches the allowed hosts (listed under archiveUrl) but not mcp.vibedeploy.be; otherwise use deploy_site or update_site. In replace mode one top-level folder that wraps every file (as in repository archives) is removed, and a site that already has files needs confirm:"I-want-to-replace-all-files". A failed call never leaves a staging session open.
Paramètres, retour & exemple (4)
Paramètresmode· string · requis · replace | patch
replace: the archive becomes the whole site (other files are removed). patch: the archive's files are added or overwritten, the rest stays.name· string · requis
Name of an existing site (see list_sites). This tool does not create sites.confirm· string · optionnel
Required only for mode "replace" on a site that already has files. Pass exactly "I-want-to-replace-all-files" to acknowledge that the live files will be deleted and replaced with the archive's files.archiveUrl· string · requis
Public HTTPS URL of a tar or tar.gz archive (max 100 MB, 60 s). Allowed hosts, also for every redirect: github.com, codeload.github.com, *.githubusercontent.com, gist.github.com, gitlab.com, bitbucket.org, codeberg.org, *.amazonaws.com, *.r2.cloudflarestorage.com, *.backblazeb2.com, *.workers.dev, *.pages.dev, transfer.sh, 0x0.st, mcp.vibedeploy.be. GitHub, GitLab and Codeberg archive links (e.g. https://github.com/<owner>/<repo>/archive/refs/heads/main.tar.gz) are accepted, but the normal file rules apply: any dotfile except .well-known/ (such as .gitignore, .github/, .gitlab-ci.yml) or any file type outside the allowlist (such as .ts, .tsx, .yml) rejects the whole archive with INVALID_FILE_TYPE. Replace mode removes only the one wrapping folder, so the built site must sit at the repository root.
Exemple d'appel{"name": "deploy_from_url", "arguments": {"mode": "replace", "name": "texte", "archiveUrl": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "mode": "replace", "name": "texte", "siteId": "texte", "manageUrl": "texte", "archiveUrl": "texte", "bytesFetched": 1, "filesDeployed": 1, "strippedPrefix": "texte"}} - deploy_site≈ 1042 tokens
Publish a static site or single-page app to a live HTTPS URL on the account's platform subdomain (e.g. {name}.vibedeploy.be). A new name creates the site. An existing name REPLACES EVERY FILE (files not in this call are deleted) and needs confirm:"I-want-to-replace-all-files"; preview with dryRun:true. Use update_site instead to change some files of an existing site. A 100-250 KB text file fits in this call with encoding:'gzip+base64' (gzip locally, then base64); use begin_deploy only when the files do not fit in one call. Ship a top-level 404.html for multi-page sites (otherwise unknown paths serve index.html) and use plain ASCII file names. Afterwards add_custom_domain can serve the site on the user's own domain.
Paramètres, retour & exemple (4)
Paramètresname· string · requis
Site subdomain. Lowercase, 3-63 chars, alphanumeric + hyphens. Must not start or end with a hyphen.files· ? · requis
Either an array of {path, content, encoding?} entries OR a path->content map. Total payload <= 500 MB.dryRun· boolean · optionnel
Validate and preview without writing; deletedFiles lists what would be removed. Recommended before replacing an existing site.confirm· string · optionnel
Required when the site already exists: exactly "I-want-to-replace-all-files", confirming that every existing file is deleted and replaced. Omit for a new site.
Exemple d'appel{"name": "deploy_site", "arguments": {"name": "texte", "files": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "dryRun": true, "siteId": "texte", "created": true, "warnings": [], "manageUrl": "texte", "deletedFiles": [], "customHeaders": "texte", "filesDeployed": 1}} - get_account≈ 1031 tokens
Return the team's plan, its limits, current usage, the trial end date and the per-token MCP rate limit. Call it before deploy_site or add_custom_domain to check a plan limit instead of running into PLAN_LIMIT_EXCEEDED.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_account", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"plan": "texte", "team": {}, "usage": {}, "limits": {}, "trialEndsAt": "texte", "planExpiresAt": "texte"}} - get_app_status≈ 288 tokens
Show the site's container services: per-service status (ready, restarts, waiting or crash reasons, volumes), the stored config, the names of the site secrets that are set (never values) with the dashboard link where the user adds them, and optionally the recent logs of one service. Use get_app_status instead of get_site for anything about containers.
Paramètres, retour & exemple (4)
Paramètreslogs· string · optionnel
Service name to include recent logs for (includes the previous crashed container if it restarted).name· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.tail· integer · optionnel
Log lines to return. Default 200.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "get_app_status", "arguments": {"logs": "texte", "name": "texte", "tail": 1, "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_forms_config≈ 442 tokens
Read the form-to-email relay config of a site, plus the resolved delivery mode, the active From address, and (for a custom sender domain) the DNS records to publish and their verification status. The submission format for the site's form is described under set_forms_config.
Paramètres, retour & exemple (1)
ParamètressiteName· string · requis
The site whose forms-relay config to read.
Exemple d'appel{"name": "get_forms_config", "arguments": {"siteName": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"notes": [], "enabled": true, "delivery": "texte", "endpoint": "texte", "siteName": "texte", "formsConfig": "texte", "activeSender": "texte", "senderDomain": {}}} - get_site≈ 814 tokens
Return one site's details: live URL, status, plan, served file paths, whether editable source is stored (and its build settings), bandwidth and the last 10 deploys. Use get_site to inspect a site before editing it; use list_sites to find site names, and get_app_status for container services.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "get_site", "arguments": {"name": "texte", "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "name": "texte", "plan": "texte", "files": 1, "siteId": "texte", "status": "provisioning", "history": [], "bandwidth": {}, "filePaths": [], "lastDeployAt": "texte", "sourceStored": true, "sourceManifest": "texte"}} - get_site_analytics≈ 846 tokens
Return a privacy-safe traffic summary for a site over the last `period` days (default 7): total page views, distinct-visitor count, top pages, daily counts, device/browser breakdowns, and Web Vitals averages. Never exposes raw visitor IPs or user-agents.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.period· integer · optionnel
Number of days to aggregate over (1-90). Defaults to 7.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "get_site_analytics", "arguments": {"name": "texte", "period": 1, "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"devices": [], "browsers": [], "topPages": [], "pageViews": 1, "webVitals": {}, "dailyCounts": [], "uniqueVisitors": 1}} - list_custom_domains≈ 338 tokens
Return all custom domains attached to a site. Each entry has a recordId you can pass to verify_custom_domain or remove_custom_domain.
Paramètres, retour & exemple (1)
ParamètressiteName· string · requis
The site whose custom domains to list.
Exemple d'appel{"name": "list_custom_domains", "arguments": {"siteName": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"domains": [], "siteName": "texte"}} - list_deploys≈ 382 tokens
List the team's begin_deploy staging sessions, by default the active ones (open and committing), up to 50. Useful after a crash or restart to commit or abort leftovers.
Paramètres, retour & exemple (1)
Paramètresstatus· string · optionnel · open | committing | committed | aborted | expired
Filter by status. Default lists 'open' and 'committing' (the actionable ones). Pass an explicit status to inspect history.
Exemple d'appel{"name": "list_deploys", "arguments": {"status": "open"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"sessions": []}} - list_dns_records≈ 400 tokens
Read the DNS records VibeDeploy tracks for a site (host, type, value), oldest first, including custom-domain verification records. Read-only: it never creates, changes or deletes a DNS record.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "list_dns_records", "arguments": {"name": "texte", "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "siteId": "texte", "records": []}} - list_file_hashes≈ 358 tokens
Return SHA-256 and size of every served file. Before a redeploy, hash your local files, compare, and upload only the changed ones with update_site mode:'patch' or begin_deploy plus add_files.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "list_file_hashes", "arguments": {"name": "texte", "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "files": [], "siteId": "texte", "totalBytes": 1, "totalFiles": 1}} - list_history≈ 556 tokens
Return the site's last 50 deploy and snapshot entries, newest first: how each was triggered, label, snapshot name, file count and secrets detected. Each entry's snapshot holds the content from BEFORE that entry. Restoring is done by the user in the VibeDeploy dashboard within the plan's restore window; there is no restore tool.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "list_history", "arguments": {"name": "texte", "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"entries": []}} - list_sites≈ 482 tokens
List the team's sites (name, URL, status, last deploy), most recently updated first, up to 100. Use list_sites to find a site name; use get_site for one site's files, source status and history.
Paramètres, retour & exemple (1)
ParamètresincludeDeleted· boolean · optionnel
If true, also list soft-deleted sites still inside their plan's restore window (status 'deleted'). Default false.
Exemple d'appel{"name": "list_sites", "arguments": {"includeDeleted": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"sites": []}} - list_snapshots≈ 287 tokens
List the snapshots of a site's served files (point-in-time restore points). NO_VOLUME means the site was never deployed. Restoring a snapshot is done by the user in the VibeDeploy dashboard within the plan's restore window.
Paramètres, retour & exemple (2)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "list_snapshots", "arguments": {"name": "texte", "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"snapshots": []}} - list_source_files≈ 443 tokens
List path, SHA-256 and size of every file in the site's editable source tree (the stored pre-build code, not the served files). Read-only. A site without a source tree returns SOURCE_NOT_STORED: write the source with write_source_files, or copy plain static served files with promote_dist_to_source.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.autoPromote· boolean · optionnel
Deprecated and ignored. Use promote_dist_to_source with mode 'auto'.forcePromote· boolean · optionnel
Deprecated and ignored. Use promote_dist_to_source with mode 'force'.
Exemple d'appel{"name": "list_source_files", "arguments": {"name": "texte", "siteId": "texte", "autoPromote": true, "forcePromote": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"hint": "texte", "name": "texte", "files": [], "siteId": "texte", "totalBytes": 1, "totalFiles": 1}} - promote_dist_to_source≈ 483 tokens
Create the editable source tree of a site that has none by copying the files it serves, so later changes can use write_source_files, apply_edits(target:'source') and build_and_deploy. The served files do not change, and a site that already has source is left as is. Use mode 'force' only after telling the user that build output (minified bundles) is not original source.
Paramètres, retour & exemple (3)
Paramètresmode· string · optionnel · auto | force
auto (default): copy plain static files only and refuse build output such as hashed bundles. force: copy build output too.name· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "promote_dist_to_source", "arguments": {"mode": "auto", "name": "texte", "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"hint": "texte", "mode": "auto", "name": "texte", "reason": "already-stored", "siteId": "texte", "noBuild": true, "promoted": true}} - read_file≈ 490 tokens
Return one file the site serves now, as text (utf8) or base64 for binary files, e.g. to edit it and send it back with update_site mode:'patch'. Use read_file for the served files; use read_source_file instead for the editable source tree (get_site.sourceStored). Max 5242880 bytes; get_site.filePaths lists the paths.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.path· string · requis
Site-relative path of the file to read (e.g. 'index.html', 'assets/main.css'). No leading slash, no '..'.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.maxBytes· integer · optionnel
Per-file size cap in bytes. Default 1048576, max 5242880. A larger file fails with FILE_TOO_LARGE instead of returning truncated bytes.
Exemple d'appel{"name": "read_file", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "path": "texte", "size": 1, "siteId": "texte", "content": "texte", "encoding": "utf8"}} - read_files≈ 680 tokens
Read up to 50 served files in one call, with the same per-file rules as read_file and 8388608 bytes in total; paths past the budget fail with BATCH_BUDGET_EXCEEDED, so request them again in another call. Use read_source_files instead for the editable source tree.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.paths· array · requis
Site-relative paths to read (1..50). Order is preserved in the response.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.maxBytesPerFile· integer · optionnel
Per-file size cap in bytes. Default 1048576, max 5242880.
Exemple d'appel{"name": "read_files", "arguments": {"paths": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "files": [], "siteId": "texte", "totalBytes": 1, "budgetExceededAt": "texte"}} - read_source_file≈ 374 tokens
Return one file from the site's editable source tree (the stored pre-build code), so any chat can edit the site without the original local files. list_source_files shows the paths. Use read_source_file for source; use read_file instead for the files the site serves.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.path· string · requis
Path inside the source tree, e.g. 'src/App.tsx'.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.maxBytes· integer · optionnel
Per-file size cap in bytes. Default 1048576, max 5242880.
Exemple d'appel{"name": "read_source_file", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "path": "texte", "size": 1, "siteId": "texte", "content": "texte", "encoding": "utf8"}} - read_source_files≈ 592 tokens
Read up to 50 files from the editable source tree in one call (8388608 bytes in total). Each path succeeds or fails on its own; paths past the budget fail with BATCH_BUDGET_EXCEEDED. Use read_source_files for source; use read_files instead for the files the site serves.
Paramètres, retour & exemple (4)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.paths· array · requis
Paths inside the source tree, e.g. 'src/App.tsx' (1 to 50). Results keep this order.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.maxBytesPerFile· integer · optionnel
Per-file size cap in bytes. Default 1048576, max 5242880.
Exemple d'appel{"name": "read_source_files", "arguments": {"paths": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "files": [], "siteId": "texte", "totalBytes": 1, "budgetExceededAt": "texte"}} - rehost_images≈ 467 tokens
Download the external images a site references (e.g. from the old site it was rebuilt from), store them on this VibeDeploy site under assets/img/, and rewrite the HTML <img> references to local paths so the site no longer depends on the original. Call this once AFTER deploying a site rebuilt with the Website Converter. Auto-detects the external image URLs from the site's own HTML; downloads are SSRF-guarded, size/count/time capped, and applied atomically (patch mode). Images already on a VibeDeploy platform domain are skipped.
Paramètres, retour & exemple (1)
Paramètresname· string · requis
Site name as shown by list_sites, whose external images are downloaded and stored on the site.
Exemple d'appel{"name": "rehost_images", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "siteId": "texte", "failures": [], "bytesHosted": 1, "imagesHosted": 1, "htmlFilesUpdated": 1}} - remove_app≈ 235 tokens
Stop every container service of the site; the site serves its static files again. Volumes (database data) are kept unless deleteData is true, which deletes them for good. Use remove_app to stop only the containers; use delete_site to remove the whole site.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.deleteData· boolean · optionnel
Also delete every volume (database files) and generated secret. Irreversible. Default false.
Exemple d'appel{"name": "remove_app", "arguments": {"name": "texte", "siteId": "texte", "deleteData": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - remove_custom_domain≈ 264 tokens
Detach a custom domain from a site. The site itself is unaffected and keeps serving on its platform subdomain (e.g. {name}.vibedeploy.be).
Paramètres, retour & exemple (3)
Paramètresdomain· string · optionnel
The custom domain to remove, e.g. 'shop.example.com'. Provide this or recordId.recordId· string · optionnel
The recordId returned by add_custom_domain or list_custom_domains. Provide this or domain.siteName· string · requis
The site to detach the domain from.
Exemple d'appel{"name": "remove_custom_domain", "arguments": {"siteName": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"domain": "texte", "removed": true}} - search_files≈ 613 tokens
Search every file of a site for a literal string or a regular expression: the served files by default, or the editable source tree with target 'source'. Use it before reading files in bulk, to find the ones that matter.
Paramètres, retour & exemple (8)
Paramètresglob· string · optionnel
File name filter, e.g. '*.js' or '*.{js,html}'.name· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.regex· boolean · optionnel
When true, pattern is an extended regular expression (BusyBox grep -E, no PCRE). Default false: literal match.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.target· string · optionnel · dist | source
'dist' (default) searches the served files; 'source' searches the editable source tree (get_site.sourceStored).pattern· string · requis
Text to find (ASCII, max 500 chars). Literal unless regex is true.maxMatches· integer · optionnel
Cap on returned matches. Default 200, hard max 1000. Truncation is reported via budgetExceeded.caseInsensitive· boolean · optionnel
Ignore upper/lower case. Default false.
Exemple d'appel{"name": "search_files", "arguments": {"pattern": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "siteId": "texte", "target": "dist", "matches": [], "totalMatches": 1, "budgetExceeded": true}} - set_forms_config≈ 1727 tokens
Configure the built-in form-to-email relay, fully self-service. Supports a custom From (via a verified sender domain or your own SMTP relay), an explicit Reply-To, and full email branding (subject template, field labels/order, logo, accent color, or a custom HTML body). Requires team role owner or admin. Pass config:null to switch the relay off. If you set a custom `sender` without an `smtpRelay`, the response returns the DNS records to publish; then call verify_forms_sender_domain. Submissions: POST JSON to the returned `endpoint` with Content-Type: application/json (UTF-8). Flat object of form fields (strings/numbers/booleans; checkbox groups may be arrays of strings, joined with ', '). Max 30 fields, 5000 chars/field, 20000 total. Response: {success:true,data:{ok:true}} or {success:false,error:{code,message}}. Rate limit: 10 submits per IP per 10 minutes. Include a hidden honeypot input (default "_gotcha") and leave it empty.
Paramètres, retour & exemple (2)
Paramètresconfig· ? · requis
Full config to store (replaces existing). Pass null to disable and clear.siteName· string · requis
The site to configure.
Exemple d'appel{"name": "set_forms_config", "arguments": {"config": "texte", "siteName": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"notes": [], "enabled": true, "delivery": "texte", "endpoint": "texte", "siteName": "texte", "formsConfig": "texte", "activeSender": "texte", "senderDomain": {}}} - update_file_content≈ 770 tokens
Apply literal find/replace edits to one file in one call, for small changes where uploading the whole file is wasteful. Each edit states how many matches it expects; any mismatch aborts the call with no writes. Served-file (dist) edits go live at once; source edits ship with build_and_deploy. Use apply_edits for several files.
Paramètres, retour & exemple (4)
Paramètresname· string · requis
Site name as shown by list_sites, e.g. my-portfolio.path· string · requis
Path inside the chosen tree, e.g. index.html.edits· array · requis
Ordered edits `{find, replace, count?}`, applied together; if any match count differs, nothing is written.target· string · optionnel · dist | source
'dist' (default) edits the served file, live at once. 'source' edits the editable source tree; build_and_deploy ships it.
Exemple d'appel{"name": "update_file_content", "arguments": {"name": "texte", "path": "texte", "edits": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "path": "texte", "edits": [], "siteId": "texte", "target": "dist", "warnings": [], "afterBytes": 1, "beforeBytes": 1}} - update_site≈ 1058 tokens
Change files on an existing site. Default mode 'patch' writes only the listed files and keeps the rest; `delete: [paths]` removes files. mode:'replace' deletes every file not listed. Preview with dryRun:true. Use deploy_site instead to create a new site. A 100-250 KB text file fits in one call with encoding:'gzip+base64' (gzip locally, then base64); prefer that over begin_deploy plus add_file_chunk. Fails with SITE_NOT_FOUND when the site does not exist.
Paramètres, retour & exemple (6)
Paramètresmode· string · optionnel · patch | replace
patch (default): write only the listed files; everything else stays. replace: delete every existing file and write only the listed ones.name· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.files· ? · optionnel
Files to write: `[{path, content, encoding?}]` (preferred) or a `{path: content}` map. <= 500 MB total. May be omitted for a delete-only call in patch mode.delete· array · optionnel
Patch mode only: site-relative paths to remove; other files stay. Combine with `files` to rename in one call. Rejected in replace mode.dryRun· boolean · optionnel
Validate and preview without writing; deletedFiles lists what would be removed. Use it before replace mode or a patch with `delete`.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "update_site", "arguments": {"mode": "patch", "name": "texte", "files": "texte", "delete": [], "dryRun": true, "siteId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "mode": "patch", "dryRun": true, "siteId": "texte", "warnings": [], "manageUrl": "texte", "deletedFiles": [], "customHeaders": "texte", "filesDeployed": 1}} - verify_custom_domain≈ 264 tokens
Check the TXT record from add_custom_domain and, when it is found, start serving the site on that domain (HTTPS is issued automatically within about 30 s). If it fails, DNS has usually not propagated yet: wait a few minutes and call it again.
Paramètres, retour & exemple (2)
ParamètresrecordId· string · requis
The recordId returned by add_custom_domain.siteName· string · requis
The site the domain was attached to.
Exemple d'appel{"name": "verify_custom_domain", "arguments": {"recordId": "texte", "siteName": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"domain": "texte", "message": "texte", "verified": true}} - verify_forms_sender_domain≈ 358 tokens
Check the DNS records for a site's custom sender domain (DKIM TXT + SPF include). Once the DKIM record is observed, the sender domain is marked verified and the relay sends from the custom From (DKIM-signed). Until then it falls back to the platform address. DNS can take a few minutes to propagate; re-run if it fails the first time. Not needed when the site uses a custom smtpRelay.
Paramètres, retour & exemple (1)
ParamètressiteName· string · requis
The site whose custom sender domain to (re)check.
Exemple d'appel{"name": "verify_forms_sender_domain", "arguments": {"siteName": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"domain": "texte", "status": "texte", "lastError": "texte", "dnsRecords": [], "spfVerified": true, "dkimVerified": true}} - write_source_files≈ 678 tokens
Write or overwrite files in the site's editable source tree (the first write creates it). The served files do not change until build_and_deploy runs. Use list_source_files first to see what exists. A legacy site without source storage returns SOURCE_STORAGE_NOT_ENABLED; the user can ask VibeDeploy support to enable it.
Paramètres, retour & exemple (3)
Paramètresname· string · optionnel
Site name as shown by list_sites, e.g. my-portfolio. Provide name or siteId.files· array · requis
Files to write into the source tree. Same wire shape as add_files. Re-writing a path overwrites the previous source. Per-file cap 5 MB; per-call cap 50 MB; max 200 files per call.siteId· string · optionnel
Site id from list_sites or get_site. Use instead of name.
Exemple d'appel{"name": "write_source_files", "arguments": {"files": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "siteId": "texte", "written": [], "warnings": [], "totalBytes": 1, "totalFiles": 1}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».