Skip to content

Tool Catalog

Every MCP tool the Vivreal server exposes, its scope, and its read-only / destructive classification

intermediate8 min readFor developers

Tool Catalog

The Vivreal MCP server exposes 69 tools across 11 modules. Every tool declares either readOnlyHint: true (safe to call without confirmation) or destructiveHint: true (mutation — your MCP client should render a confirmation prompt) so agents and human reviewers always know what a call will do.

Channel setup lives in the portal, not here

The MCP exposes tools for posting on, reading from, and syncing connected channels. It deliberately does not expose tools for activating/deactivating channels or connecting/disconnecting individual social accounts — those flows belong in the portal Integrations page, where the OAuth UX is consistent and the redirect_uri allowlist is owned. If list-channel-accounts returns an empty list, tell the user to connect the account in the portal first.

Counts

Total tools69
Read-only (readOnlyHint: true)34
Destructive (destructiveHint: true)35
Modules11

Scope Reference

Every tool requires one of three OAuth scopes. The hierarchy is read → write → admin.

ScopeWhat it lets you do
vivreal/cms.readList, get, search anything inside the active group
vivreal/cms.writePlus: create, update, archive, delete content / channels / sites
vivreal/cms.adminPlus: invite/remove members, update group billing, manage CORS origins

Pure-read tools accept any of the three. Write tools require cms.write or cms.admin. Admin tools require cms.admin.


Session (3 tools)

ToolScopeClassificationWhat it does
get-session-contextcms.readRead-onlyReturns the authenticated user, their groups, and the currently active group
set-active-groupcms.readDestructive (session)Sets the active group for the session — required before any CMS call. Auto-refreshes the cached group list once on cache miss so newly-created groups become usable without reconnecting.
refresh-session-contextcms.readRead-onlyRe-fetches the user's group list from Vivreal. Use after creating, deleting, or changing group membership in the portal during the same MCP session. Returns the same shape as get-session-context.

Collections (9 tools)

Content types and their schemas. "Collections" in the Vivreal vocabulary are user-defined content schemas.

ToolScopeClassification
list-content-typescms.readRead-only
get-content-typecms.readRead-only
create-content-typecms.writeDestructive
update-content-typecms.writeDestructive
delete-content-typecms.writeDestructive
list-content-schemascms.readRead-only
list-content-tagscms.readRead-only
duplicate-content-typecms.writeDestructive
get-content-field-typescms.readRead-only

Content Objects (12 tools)

Instances of content types — blog posts, products, events, etc.

ToolScopeClassification
list-contentcms.readRead-only
create-contentcms.writeDestructive
bulk-create-content (pro+)cms.writeDestructive
update-contentcms.writeDestructive
delete-contentcms.writeDestructive
update-content-publish-datecms.writeDestructive
bulk-update-content-publish-date (pro+)cms.writeDestructive
archive-contentcms.writeDestructive
unarchive-contentcms.writeDestructive
duplicate-contentcms.writeDestructive
bulk-delete-contentcms.writeDestructive
bulk-archive-contentcms.writeDestructive

Media (5 tools)

Uploads + attachment management for collection objects.

ToolScopeClassification
get-upload-urlcms.writeDestructive
list-content-mediacms.readRead-only
add-content-mediacms.writeDestructive
delete-content-mediacms.writeDestructive
reorder-content-mediacms.writeDestructive

Calendar (1 tool)

ToolScopeClassification
list-eventscms.readRead-only

Dashboard (1 tool)

ToolScopeClassification
get-dashboardcms.readRead-only

Sites (14 tools)

Vivreal-deployed websites — full lifecycle including deploys, versions, and DNS.

For hosted-by-us sites, deployment is triggered automatically by create-site via the EventHandler Step Function pipeline (GitHub branch → Amplify app → seed collections → build → domain associate → mark live). There is no separate "deploy" tool — poll get-site to watch the pipeline progress.

`pipelineStatus` is the source of truth for deploy progress

Use get-site-deployment-status to track a hosted-by-us deploy. It returns BOTH answers in one call:

  • Primary — pipelineStatus (and pipelineMessage, pipelineUpdatedAt, liveUrl): the authoritative end-to-end pipeline state, written by the EventHandler Step Function at every step. Same field the portal's deployment status badge reads. Always trust this first.
  • Secondary — amplifyStatus, deploys[], previewUrl: best-effort detail from AWS Amplify's ListJobs API for the build job itself. Can return amplifyStatus: null with deploys: [] even on a healthy, completed deploy (job-history propagation lag, IAM/branch-resolution gaps). An empty deploys: [] does NOT mean the pipeline failed.

get-site exposes the same primary fields under deployment.status / deployment.message if you want them as part of the broader site doc, but for poll-the-deploy use cases get-site-deployment-status is the right tool.

Poll every 30 seconds. A typical hosted-by-us deploy with a *.vivreal.io subdomain reaches pipelineStatus === "live" in 5–10 minutes; flag as stuck only past 15 minutes or when pipelineStatus lands in a failure state.

pipelineStatus enum

16 states emitted by the Step Function pipeline. Each in-progress state has its own user-facing label (the portal's deployment badge uses these verbatim).

pipelineStatusUser-facing labelMeaning
queuedWaiting to startSite created, Step Function not yet picked it up.
seedingPreparing contentTenant DB being seeded with template collections + objects.
creating_branchSetting up your siteForking the template GitHub branch.
creating_appSetting up hostingAmplify app being provisioned.
app_createdConfiguring your siteAmplify app created, environment being configured.
deployingPublishing your siteAmplify build job running (longest step — 2–4 min).
getting_urlGetting your web addressResolving Amplify default URL after build.
associating_domainConnecting your domainSubmitting domain association to Amplify.
checking_domainVerifying your domainPolling Amplify for domain verification.
domain_connectingAwaiting domain verificationCert verification + DNS propagation in progress (custom domains).
subdomain_updatingUpdating addressRenaming the site's *.vivreal.io subdomain.
liveLiveSite is reachable at liveUrl. Terminal-success state.
failedSomething went wrongGeneric pipeline failure. Terminal.
app_creation_failedHosting setup failedAmplify app provisioning failed. Terminal.
domain_failedDomain setup failedCustom-domain association failed. Terminal.
sync_conflictNeeds your attentionSync state needs user intervention.

Source of enum + labels: Vivreal_Portal_Mobile/src/components/Sites/Client/DeploymentStatusBadge.tsx. Source of pipeline state writes: Vivreal_EventHandler/src/shared/* Step Function steps.

ToolScopeClassification
list-sitescms.readRead-only
get-sitecms.readRead-only — full site doc. deployment.status mirrors pipelineStatus from get-site-deployment-status. For poll-the-deploy use cases, prefer get-site-deployment-status (it returns the same pipeline state plus Amplify build detail).
create-sitecms.writeDestructive (external — auto-triggers Step Function deploy for hosted-by-us mode)
update-sitecms.writeDestructive
delete-sitecms.writeDestructive (external — tears down Amplify branch + seeded collections). Never call to "clean up" a deploy that appears stuck until pipelineStatus lands in a failure state — empty deploys: [] from the Amplify side does not mean failed.
check-domaincms.readRead-only — Route53 apex-domain purchase availability + Stripe pricing. Not for Vivreal subdomain checks — use check-subdomain for that.
check-subdomaincms.readRead-only — Vivreal subdomain availability for the active group
get-site-deployment-statuscms.readRead-only — returns BOTH the authoritative pipelineStatus (from Mongo, written by the Step Function — see callout above for the 16-state enum) AND best-effort amplifyStatus + deploys[] from Amplify ListJobs. Use this to poll deploy progress after create-site.
connect-custom-domaincms.writeDestructive (external — attaches a user-owned domain to a deployed site's Amplify app; returns DNS records for the registrar)
check-custom-domain-statuscms.readRead-only — poll Amplify domain-association status (cert verification + DNS propagation)
remove-custom-domaincms.writeDestructive (external — detaches custom domain, reverts to *.vivreal.io subdomain)
list-site-versionscms.readRead-only
get-site-versioncms.readRead-only
revert-site-versioncms.writeDestructive (content rollback only — does not redeploy)

Channels / Integrations (10 tools)

External platforms — X, LinkedIn, Instagram, Facebook, TikTok, Mailchimp, Stripe.

Channels in Vivreal are multi-account: a single LinkedIn integration on one group can hold several connected LinkedIn accounts (e.g. one personal account that admins three Company Pages). Posting tools accept an optional accountId (from list-channel-accounts) so agents can pick which account a post goes from. Omitting it falls back to the integration's default group account.

ToolScopeClassification
list-channel-postscms.readRead-only
list-channel-accountscms.readRead-only — connected accounts on a channel for the active group. For LinkedIn, exposes organizations[] (Company Pages the user admins) per account; for Facebook, exposes pages[]. Sensitive credentials stripped server-side.
get-channel-infocms.readRead-only
get-channel-statuscms.readRead-only — for a focused account view, prefer list-channel-accounts.
list-available-channelscms.readRead-only
get-channel-post-analyticscms.readRead-only — analytics are scoped to the post's bound accountId (the account that created it). Posts predating per-account binding fall back to the integration's default token.
create-channel-postcms.writeDestructive (external — live post). Accepts optional accountId and (LinkedIn-only) targetOrgUrn for Company Page publishing. Pass publishDate (ISO 8601) to schedule.
update-channel-postcms.writeDestructive (external — live edit). The accountId binding is immutable — to rebind to a different account, delete and recreate.
delete-channel-postcms.writeDestructive (external — live delete)
sync-channel (pro+)cms.writeDestructive (external — rebuild from upstream). Sync is per-integration; all connected accounts on the channel are refreshed in one call.

No channel-setup tools

The MCP no longer exposes activate-channel, deactivate-channel, connect-channel-account, or disconnect-channel-account. Those endpoints either didn't exist upstream (they 404'd in production) or stepped on the portal's OAuth flow. Channel setup belongs in the portal Integrations page.

Stripe (4 tools)

Read-only Stripe surface. Users initiate payouts, checkouts, and order fulfillment through the Vivreal portal UI where they're fully authenticated — those operations are not exposed to AI agents.

ToolScopeClassification
get-customer-portalcms.readRead-only (URL only)
get-subscription-infocms.readRead-only
list-stripe-orderscms.readRead-only
get-stripe-balancecms.readRead-only

Group Management (7 tools)

ToolScopeClassification
get-group-infocms.readRead-only
get-group-usagecms.readRead-only — current group usage against tier caps, with per-resource progress bars, over-cap callouts, and estimated overage charges for eligible tiers. Free-tier zero-cap resources (e.g. AI agent actions) render as "Not in this tier" rather than unlimited.
update-groupcms.adminDestructive
list-group-memberscms.readRead-only
invite-membercms.adminDestructive (sends email)
remove-membercms.adminDestructive
update-member-rolecms.adminDestructive

Docs (3 tools)

The MCP server can search and read this very documentation site, so agents can self-orient before calling tools.

ToolScopeClassification
search-vivreal-docscms.readRead-only
read-vivreal-doccms.readRead-only
list-related-vivreal-docscms.readRead-only

Tier Gating

A few advanced tools are gated to higher tiers and only appear in tools/list for users whose active group qualifies:

  • bulk-create-content — pro and above
  • bulk-update-content-publish-date — pro and above
  • sync-channel — pro and above

Calling a gated tool from a lower tier returns a clean MCP error explaining the upgrade requirement.

Workflow Prompts

In addition to tools, the server ships 8 guided prompts that orchestrate multi-step workflows:

  • audit-group-setup
  • create-content-plan
  • diagnose-failed-post
  • import-data-wizard
  • launch-content-everywhere
  • post-to-all-socials
  • setup-integration-checklist
  • site-builder-guide

Run them via your MCP client's prompts/list and prompts/get methods.

Resources

The server exposes 16 MCP resources — 3 static and 13 templated — for structured reads. Resources are pre-formatted views of group state that often bundle data which would otherwise require multiple tool calls to assemble. Discoverable via resources/list (static) and resources/templates/list (templated).

Static (3)

URIReturns
vivreal://field-typesAll supported schema field types with their constraints
vivreal://content-typesActive group's content types
vivreal://channelsChannel manifests for all platforms Vivreal supports

Templated (13)

Substitute {placeholders} with real IDs:

URI TemplateReturns
vivreal://groups/{groupId}Group settings + metadata
vivreal://groups/{groupId}/dashboardUsage, quotas, recent activity
vivreal://groups/{groupId}/audit?start=&end=Audit log (ISO date params; retention varies by tier)
vivreal://groups/{groupId}/content-typesAll schemas in this group
vivreal://groups/{groupId}/content-types/{contentTypeId}One schema in detail
vivreal://groups/{groupId}/content-types/{contentTypeId}/items?search=&page=&limit=&sort=Paginated content items
vivreal://groups/{groupId}/content-types/{contentTypeId}/items/{itemId}One content item
vivreal://groups/{groupId}/content-types/{contentTypeId}/items/{itemId}/versionsVersion history (count limited by tier)
vivreal://groups/{groupId}/sitesAll sites in this group
vivreal://groups/{groupId}/sites/{siteId}One site
vivreal://groups/{groupId}/channelsGroup's connected channels with status
vivreal://groups/{groupId}/channels/{channelType}/postsChannel post history
vivreal://channels/{channelType}Channel manifest (capabilities, auth requirements)

Prefer resources over the equivalent list tools when you want pre-formatted, structured data for display or analysis. Use tools when you need to mutate state or apply filtering not exposed by the resource URI.