
Revdoku
Create account-free website previews and publish durable sites from AI agents with Revdoku.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data
What it can do
What data it sees
Do you need an account
No: the server works without sign-in
Create account-free website previews and publish durable sites from AI agents with Revdoku.
Server tool list (40)
Raw names from tools/list. Only developers need these.
| client_account_create | Create a separate client account sharing the Pro Agency plan. name is the account name; optional client_name identifies the client person or business separately. Requires the Agency owner's explicitly authorized connection. Pass the Agency account_id when needed; this does not change the credential's default account. |
| revdoku_status | Read account.account_kind (standard, agency, or client), the separate client_name, and the granted accounts list with accessible agency_account parents. default_account_id stays fixed; pass account_id on each tool call to select another granted account. Check remote MCP capabilities, including onboarding state, features.github_sync eligibility, publishing.free_plan_available, the versioned publishing.free_plan.contract for current Free limits and indexing rules, and account.restriction. When account.restriction reports a suspension, relay only its common message and AUP/support links, remind the user they can still download bucket files, and do not retry or evade the hold. Do not infer reasons or disclose review details. When onboarding.state is empty_account, offer onboarding.suggested_projects instead of only asking a broad question; follow the selected storage or publishing goal. Private storage ends after saving/reading files, without a preview or website; publishing needs explicit authorization. When it is no_visible_buckets, follow onboarding.recommended_next_step instead of suggesting a bucket this connection cannot create. publishing.static_site describes local Node.js frontend builds, Astro/Next.js static exports, and the website root setting. publishing.preview_recommended explains the preview-first workflow. Returns mcp.server_version (the connected Revdoku version), mcp.latest_source (https://github.com/revdoku/revdoku — the public skill, CLI, connector setup, API documentation, and agent instructions), and an mcp.update_hint. Reconnect or restart the connector if a documented tool is missing so the client refreshes tools/list. |
| revdoku_dashboard_link | Return a stable Revdoku dashboard link for buckets, websites, or connector access. The link never signs a browser in; the user authenticates normally if needed. |
| bucket_list | List visible Revdoku buckets with website state, GitHub sync status/setup links, and archive/delete guidance. Use this before follow-up bucket actions. Pass query to filter by title. |
| bucket_get | Get one bucket, its files/current revision, website state, GitHub sync status/setup link, and archive/delete guidance. Pass file_limit and file_offset to page bucket.files. Set include_form_submissions=true to read visitor feedback with submitter identity, document selections, and a fixed 3x3 minimap; this requires write-capable bucket access. The minimap includes a 0/1 cells matrix and exactly three ASCII rows. Share bucket.website.submissions_review.url for visual submission review or bucket.github_sync_setup.settings_url to connect/manage GitHub; both are stable login-required deep links. |
| bucket_create | Create a private Revdoku bucket for agent-generated files, reports, or websites. Public websites allow search indexing by default; set allow_search_indexing=false only when the owner asks. Built-in forms can be configured through metadata.publication_forms, including the resource form and a system or website-file success response; writing files saves private storage without creating or updating a live website. Private storage follows the Terms of Use; the Website Publishing Policy applies to publications, previews, and visitor-facing shares. |
| bucket_template_list | List trusted static-file templates that can be imported into a new private bucket. Each template contains ready-to-serve files. |
| bucket_create_from_template | Create a private Revdoku bucket by importing ready-to-serve static files from a trusted Revdoku template manifest. The bucket is not published. |
| bucket_update | Update bucket title, description, metadata, or the affirmative allow_search_indexing setting. Public permanent websites default to searchable; protected and preview websites are locked off. Generated Auto-Index sites open supported direct file links in the viewer; metadata.publication_show_download_button controls its Download action. Configure form instances through metadata.publication_forms: Free plans use unchanged templates and paid plans may customize fields/copy. Render forms inline with {{REVDOKU_FORM:name}} or {{REVDOKU_FORM}}, or in a popup from a native button with data-revdoku-form-popup="name". Form changes are drafts until publish/republish. |
| bucket_archive | Archive one bucket. Active websites must be unpublished first. |
| bucket_unarchive | Restore one archived bucket back to the active bucket list. |
| bucket_delete_permanently | Permanently delete an archived, unpublished normal bucket after confirmation. Get bucket_id and delete.confirmation from bucket_list or bucket_get. |
| bucket_file_list | List files in a Revdoku bucket. Pass limit and offset for paginated results; omit them to return all files for compatibility. Pass query to search by name/path, or folder to list one folder's files. |
| bucket_file_read | Read one text bucket file (HTML/CSS/JS/JSON/Markdown/etc.) already stored in Revdoku. Not for binary files (images, fonts, PDFs). |
| bucket_file_get | Get full metadata for one bucket file by file_id (preferred) or path, without downloading its content. Use this to expand the lean file_id/version_id returned by bucket_file_write and bucket_file_write_many into complete file details when needed. |
| bucket_file_write | Write or replace one private UTF-8 file in Revdoku (documents, notes, CSV, JSON, source code, HTML/CSS/JS/etc.). This does not publish or update a live website. For website publishing, use ready-to-serve static files; Revdoku does not install dependencies or compile project source. Pass expected_bucket_revision_id from bucket_get when practical to avoid overwriting concurrent edits. Binary assets and whole local folders use the CLI or REST direct-upload API. The response's bucket carries dashboard_url (and public_url when published); show that link to the user instead of the raw bucket id. |
| bucket_file_append_text | Append UTF-8 text to an existing private Revdoku bucket file without publishing, such as txt, md, csv, jsonl, js/code files, and similar text formats. This is not a binary-file API and it does not parse CSV or JSON; for ordinary .json, raw append can make invalid JSON. If the file or bucket is locked, retry briefly; if it remains locked, report error.details including the lock owner and message. |
| bucket_file_write_many | Write multiple private UTF-8 files (documents, CSV, JSON, source code, HTML/CSS/JS/etc.) in one Revdoku bucket edit. This does not publish or update a live website. For website publishing, prepare ready-to-serve static files; Revdoku does not install dependencies or compile project source. Pass expected_bucket_revision_id from bucket_get to avoid overwriting concurrent edits. Binary assets and whole local folders use the CLI or REST direct-upload API. When delete_missing is true, omitted editable files are soft-deleted, but managed/generated files are preserved. The response's bucket carries dashboard_url (and public_url when published); show that link to the user instead of the raw bucket id. |
| bucket_file_rename | Rename or move one same-bucket file path by blob reference, creating a rename revision without reuploading bytes. |
| bucket_file_copy | Copy one existing file to another path or bucket by storage reference, including archived sources. The target bucket must be writable; bytes are never downloaded or reuploaded. |
| bucket_file_move | Move one file by storage reference. Same-bucket moves create a rename revision; cross-bucket moves copy then soft-delete the source without reuploading bytes. |
| bucket_file_reorganize | Batch rename, move, or copy files using server-side path/blob references. Use for folder cleanup or reorganization without reading or reuploading bytes. |
| bucket_lock | Lock a whole bucket before broad edits or uploads so other agents can see this connector is working. |
| bucket_unlock | Unlock a bucket locked by this MCP connector. |
| bucket_lock_visibility_changes | Lock a bucket's visibility so it cannot be published, unpublished, switched between public/password access, or have its public URL changed by API or agents — use this to protect a bucket holding private data from accidental publishing. Locking is idempotent. There is deliberately no unlock tool: unlocking is web-UI-only and requires the user to type "confirm" in the Revdoku app, so if a bucket is visibility-locked you must ask the user to unlock it themselves. |
| bucket_lock_files | Lock one or more bucket files before editing so other agents can see this connector is working. |
| bucket_unlock_file | Unlock a bucket file locked by this MCP connector. |
| bucket_publish | Queue an async publish or republish of the bucket's saved draft as a live public website. Read the current Free website allowance from revdoku_status publishing.free_plan.contract.limits.max_live_publications. Unless the user has already reviewed the site or explicitly asks to publish immediately, use bucket_publish_preview first and share that temporary URL for review. For protected/password/private websites, use bucket_publish_password_protected instead. Pass description when the user wants Revdoku to save explanatory bucket text before publishing. Check bucket_publication_get separately for publish_state ready/failed before telling the user the site is live. Fails with BUCKET_VISIBILITY_CHANGE_LOCKED if the bucket's visibility is locked (first publish or an access-mode change); a same-access-mode republish is allowed. Unlocking is web-UI-only — ask the user to unlock it in the Revdoku app. Publishing requires Website Publishing Policy (AUP) approval; private file storage follows the Terms of Use. Political and election-related content is prohibited, including neutral or educational versions, on every plan and in previews. See https://revdoku.com/acceptable-use/. |
| bucket_publish_password_protected | Queue an async publish or republish of the bucket's saved draft with Password or Require Email access. New accounts start on the permanent Free plan, which includes one Password website; Require Email requires payment for a permanent main site but can be evaluated with bucket_publish_preview on Free. Preview with the requested protected access first; if this tool returns PUBLICATION_UPGRADE_REQUIRED, share the protected preview and error.details.upgrade_url as the upgrade link, not the API documentation, then retry only after the user upgrades. Never silently fall back to Public. Require Email verifies visitors by OTP with no shared password and supports an optional email/domain allowlist. Password mode generates a password when needed and returns copyable password/share text to authorized owner publish keys after publish_state is ready. Never put passwords in URLs. Fails with BUCKET_VISIBILITY_CHANGE_LOCKED if the bucket's visibility is locked; unlocking is web-UI-only. After publishing sensitive data, consider offering to lock visibility with bucket_lock_visibility_changes. Publishing requires Website Publishing Policy (AUP) approval; private file storage follows the Terms of Use. Political and election-related content is prohibited, including neutral or educational versions, on every plan and in previews. See https://revdoku.com/acceptable-use/. |
| bucket_publish_preview | Queue an async PREVIEW publish of the current saved draft to a temporary 'preview-<slug>' URL. Every preview expires after 24 hours. Previews may use eligible paid access and presentation settings (including Require Email) on Free so the user can evaluate them before upgrading; form customization still follows the account plan. Previews stay noindex, do not affect the main website, and do not count against live/private-site limits. Re-running republishes to the same preview slug with a new 24-hour window. Check bucket_publication_get for ready/failed, then share the preview URL, any protected-site password/share text, and its expiry. Publishing requires Website Publishing Policy (AUP) approval; private file storage follows the Terms of Use. Political and election-related content is prohibited, including neutral or educational versions, on every plan and in previews. See https://revdoku.com/acceptable-use/. |
| bucket_set_public_slug | Rename an existing website publication's managed URL slug on any signed-in plan. If the site is live, files are republished under the new prefix; if it is unpublished, only the saved URL is changed for the next publish. Slugs are at least 3 characters, use only lowercase letters, numbers, or hyphens, and cannot use reserved or prohibited words. Fails with BUCKET_VISIBILITY_CHANGE_LOCKED if visibility is locked. |
| bucket_update_publication_access | Change an already-published website's access settings WITHOUT republishing its files or URL. Use this to switch a live site between public, password, and Require Email, or rotate the password. Same-storage-class changes (e.g. password <-> Require Email, rotate password) are instant settings updates; switching public <-> protected re-keys the files and may take longer but keeps the site live. To publish a NEW VERSION of the files, use bucket_publish / bucket_publish_password_protected instead. Never put passwords in URLs. An access-mode change fails with BUCKET_VISIBILITY_CHANGE_LOCKED if the bucket's visibility is locked (unlocking is web-UI-only — ask the user); rotating the password or other same-access-mode settings stay allowed while locked. |
| bucket_unpublish | Queue an async unpublish of a bucket website while keeping the reserved URL. Use before archive/delete when bucket_list says required_action is unpublish_first, then check bucket_publication_get separately until status is unpublished before archiving or deleting. Fails with BUCKET_VISIBILITY_CHANGE_LOCKED if the bucket's visibility is locked; unlocking is web-UI-only, so ask the user to unlock it in the Revdoku app first. |
| bucket_publication_list | List active and historical bucket website publications visible to this MCP connector. |
| bucket_publication_get | Get one bucket website publication. |
| bucket_publication_analytics | For a quick overview, use scope account without website ids: this returns the dashboard summary for all accessible main websites in the selected account, excluding previews. It defaults to current_week (Monday through now in the account time zone) compared with the same elapsed part of last week. Summary includes totals, absolute/percentage changes, the top three websites, freshness and availability, without chart data. Summary supports calendar ranges and 7d/30d/90d/all; no 24h or custom dates. Otherwise get a bucket website's analytics with bucket_id, or pass publication_id from bucket_get, bucket_publish, or bucket_publication_list. Event instants are UTC; calendar boundaries use the returned account time_zone. 24h is live/hourly; 7d/30d/90d are daily. Exact inclusive windows use both from and to. The returned from/to are the effective retained window; retention_limited is true when a preset was shortened. totals.views excludes bots, totals.hits includes them, and totals.views_all_time is the durable lifetime human-view count even after detailed daily rows expire. Use totals.public_visitor_days for daily public estimates and totals.identified_visitors for protected identities. Public visitor-days are not unique people across days. measurement explains sampling, freshness, method and unavailable reasons; legacy visitors remains for compatibility. sources/referrers and manual_refs are separate overlapping reports. Downloads mean downloads started. usage contains coarse device/browser/OS and aggregate active time/scroll when available. UTMs are not collected. previous_period is null, and comparison values are null, unless the complete preceding window is retained; never treat null as zero. Free returns Basic analytics for 30 days with totals plus up to three paths and sources; paths_truncated or sources_truncated indicates more results exist. Detailed analytics uses the current plan retention. Detailed analytics activity is the newest outcome timeline; paths contain |
| bucket_publication_leads | List visitor leads for one publication: verified Require Email visitors and unverified emails collected by a Password Gate, including first/last visit, visit count, and per-path activity, plus recent access sessions. Use this to follow up without opening the Revdoku dashboard. Emails are sensitive, so this requires an account-owner connector with publish permission and write access to the bucket. |
| bucket_publication_recipient_links | Create personal links for a Require Email website: each tracked URL admits one recipient without the emailed OTP step and appears in Tracking Links with its engagement analytics. Recreating a recipient's link replaces its expiry and invalidates the previous URL. Defaults to allowlisted addresses; bare domains are skipped because links are per person. Pass `emails` for a subset. Removing an address from the allowlist or deleting its Tracking Link revokes access. Personal and ordinary tracking links share the account's recipient-link quota. Requires an account-owner connector with publish and bucket-write permission. Never share these links publicly. |
| bucket_env_get | Read a bucket's integration variables and secrets. `variables` are PUBLIC config embedded into the published website and are returned in full. `secrets` are SERVER-only (for example RESEND_API_KEY) — encrypted and never returned; only each secret's name and last 4 characters are shown. Names are ENV-style (UPPER_SNAKE). |
| bucket_env_set | Set a bucket's integration variables and/or secrets (requires write access to the bucket). `variables` (PUBLIC — embedded into the published site and visible to every visitor) REPLACES the entire public set, so call bucket_env_get first and include the entries you want to keep. `secrets` (SERVER-only, encrypted, never returned) is a PATCH: a non-empty value sets/replaces it, an empty string deletes it, and omitted secrets are left unchanged. Names must be UPPER_SNAKE_CASE. Never put a secret value in `variables`. |