RolitRolit Docs
Rolit CLI

Marketing and sales tools

SEO, content, creative, social, email, ads, CRM, and Google tools, plus their safeguards.

These tools need a tool pack in tools.gtm.packs. Every one is also available as a rolit <area> <job> command (see Commands).

Drafting tools write files create-only under the brand's output directory, with lineage recording what each file came from. Nothing here contacts a social platform or sends an email on its own. Publishing, sending, and spending always go through an approval.

SEO and AEO

Packs: marketer, blogger. The SEO tools audit a website for search and AI-answer visibility, and help you fix what they find.

  • Audit a site. Point it at a build directory (such as dist/), a single page, or a live URL. It checks page metadata, structured data, robots.txt, the sitemap, broken links, internal linking, and whether AI crawlers can reach your content.
  • Find the file to fix. Each finding names the file in your project that causes it, for common frameworks such as Next.js, Astro, SvelteKit, Hugo, and plain HTML. When it can't tell, it says so rather than guessing.
  • Fix and re-check. With --fix, simple, safe fixes are applied through your approval mode and then re-checked. Edits to robots.txt and the sitemap refuse changes that would block your whole site.
  • Track changes. rolit seo monitor shows what is new, resolved, or unchanged since the last run.
  • Use Search Console. After /connect search-console, the agent can look at content that is losing clicks and pages competing for the same queries.
  • Paid data. Keyword rankings, backlinks, and AI-answer visibility are metered. They show the credit cost first and always ask.

Audits of a local directory are free and work offline. Live-site crawls obey robots.txt and are rate-limited.

rolit seo audit dist/ --fail-on fail   # exits 30 if a finding reaches that level
rolit seo all dist/                    # run every unattended check
rolit seo monitor                      # compare with the last run

In chat, /seo opens a panel to turn the tools on or off, run all checks, and review results. For CI use, see Automation.

Content and creative

Packs: marketer, blogger, creator (creative.* needs creator or marketer). The model writes, the tool validates the output and saves it. Deterministic tools never call a model.

ToolTierWhat it does
research.competitor, research.audience, research.trendWriteSaves a research brief. Every statement cites a source and fetch date, or is labeled as inference. At most 25 page fetches.
content.briefWriteBrief with persona, intent, outline, answer-first summary, and internal links.
content.draftWriteA draft of a given type (blog, landing page, newsletter, script, and more). Fabricated testimonials are refused.
content.repurposeWriteOne artifact per channel.
content.claims_checkReadMarks claims supported (by the claims register or a cited source) or unsupported, and checks sponsored-content disclosure.
content.brand_consistencyReadBanned terms, topics to avoid, product-name casing, and tone.
calendar.plan, calendar.exportWritePlans slots from a cadence; exports Markdown, CSV, or iCalendar.
creative.images, creative.thumbnailsGenerate1 to 8 variants using the brand style.
creative.audioGenerateSpeech, music, or sound, downloaded and indexed.
creative.transcribeGenerateTranscription.
creative.captionsWriteSRT and WebVTT with at most two lines per cue.
creative.clipsWriteAn edit decision list.
creative.renderCommandRenders with local ffmpeg.
creative.bio_page, creative.media_kitWriteStatic, script-free HTML. Audience statistics need a source and date.
social.adaptWritePer-platform variants checked against platform limits. Over-limit text is flagged, never truncated.
social.previewReadFeed preview with the fold position and hidden characters.
email.draftWriteHTML and plain text with subject alternatives and a preheader.
email.lintReadUnsubscribe and address placeholders, link and image checks, and spam phrases.
email.domain_checkReadSPF, DMARC, and (with a selector) DKIM.
analytics.utmReadUTM tagging under your naming conventions.

creative.render needs ffmpeg installed.

Google, ESP, and CMS handoff

Connect first with /connect or rolit connect google --scope <capability>. No command accepts a token or key.

ToolTierWhat it does
google.gmail_sendSendSends one email per recipient from your connected Gmail. Shows recipients, subject, and body.
google.docs_create, google.sheets_create, google.sheets_update, google.drive_uploadWriteCreates or updates Docs, Sheets, and Drive files. A Sheets update overwrites from range (default A1); the preview says so.
google.calendar_create_eventSendCreates an event and invites attendees.
google.calendar_events, google.gmail_search, google.drive_search, google.drive_read, google.docs_read, google.sheets_readExternal MCPReads. Results are marked untrusted.
google.calendar_free_busyReadBusy intervals only.
content.exportWriteExports a calendar to Sheets, text to Docs, or a file to Drive.
email.handoffExternal MCPLints, then creates a draft in Klaviyo, Mailchimp, Kit, or Beehiiv. Nothing is sent.
email.esp_sendSendSchedules or sends a draft. The preview shows the audience and the platform's recipient count.
content.cms_draftExternal MCPRuns pre-publish checks and creates a draft in WordPress, Ghost, Webflow, Contentful, or Sanity.
content.cms_publishPublishPublishes or schedules the draft.

Bulk marketing email never goes through a one-to-one channel. One approval covers at most tools.gtm.limits.sendBatchMax recipients (default 50, maximum 500).

Sales

Pack: sales. Works against Rolit CRM or a connected CRM (HubSpot, Salesforce, Pipedrive, Attio) through MCP. Contact emails and phone numbers are masked before the model sees them (for example j***@acme.com) and never written to workspace files.

ToolTierWhat it does
crm.search, crm.get, crm.timeline, crm.opportunities, crm.insights, crm.campaignsReadLook up contacts, history, and aggregates.
crm.create, crm.update, crm.capture, crm.opportunity_create, crm.stage, crm.campaign_createWriteChange CRM records. crm.update needs the current revision, and a stale one fails with conflict.
crm.campaign_membersWrite or Bulk writeMore than 25 contacts always asks.
research.accountWriteCited company dossier with masked CRM history.
meeting.brief, meeting.recapWriteInternal brief; summary, decisions, and a follow-up draft.
sales.battlecard, sales.proposalWriteClaims-checked from your latest research or opportunity.
outreach.designWriteDesigns a sequence with masked samples. Sends nothing.
outreach.send_stepSendSends one approved batch of one step. The preview lists recipients, suppression reasons, samples, claims, and the send window.
outreach.triageWriteClassifies replies and drafts responses. Never sends.
meeting.bookSendCreates a calendar event and invitations.

Importing contacts requires consent_source and consent_basis columns. Replies stop later sequence steps.

Social publishing

Packs: marketer, creator. Connect accounts with rolit connect social <platform> (YouTube, TikTok, Instagram, Facebook Pages, LinkedIn pages, X, Threads, Pinterest). Tokens stay on the backend.

ToolTierWhat it does
social.prepareReadValidates one post for one platform and checks the live quota, access state, and any fee.
social.publishPublish (Spend on X)Publishes one item to one destination. Content is re-hashed, so an edit after approval is refused.
social.metricsRead (Spend on X)Post and channel metrics, never summed across platforms.

Platforms in a private review state post privately, and the preview says so. Posts on X carry a fee, so they are Spend as well as Publish.

Pack: marketer, with Meta, Google, or LinkedIn Ads connected through MCP.

ToolTierWhat it does
ads.creative, ads.checkWrite, ReadVariant matrix for a format; text, image, and policy checks. Contacts no account.
ads.reportExternal MCPPer-platform performance, never summed across platforms.
ads.proposeWriteEvidence-backed proposal. Changes with too little data are insufficient_data.
ads.applySpendOne spend-raising change. Campaigns are created paused, and enabling is a separate approval. Enforces adDailyCap.
ads.pauseExternal MCPOne reduction or pause. Always asks.

Spend increases need a daily cap (tools.gtm.adDailyCap or per brand) and are refused past it. rolit ads revert <change-id> proposes the inverse of a logged change.

On this page