Skip to content

MCP→CLI parity: 9 new smoo command groups + files/heypage/o11y extensions - #488

Merged
brentrager merged 3 commits into
mainfrom
th-mcp-cli-parity
Aug 20, 2026
Merged

MCP→CLI parity: 9 new smoo command groups + files/heypage/o11y extensions#488
brentrager merged 3 commits into
mainfrom
th-mcp-cli-parity

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Closes the CLI side of the hosted-MCP parity gap — the ~35 mcp.smoo.ai tools that had no smoo verb now all do (pearls th-739bb1 / th-b1f09c / th-088c93 / th-a5d991).

New command groups

  • smoo analytics — catalog (presets + data sources + per-source catalog), org-scoped validated query (positional SQL / --file / --preset), GA4 report (properties/overview/top-pages/traffic)
  • smoo campaigns — list / analytics / preview-first send: no flag ⇒ server-side dryRun:true; --confirm ⇒ real send; suppression is never re-implemented client-side (smooai#4221) and skipped recipients are always reported
  • smoo drip — sequences / show / enrollments / enroll (25-cap mirrored) / cancel / test-send
  • smoo audiences — list / create (zero-filter segment refused) / members / add-members / resolve (preview by default, --materialize to write)
  • smoo forms, smoo gbp reviews (account→location discovery ladder), smoo search-console queries, smoo sheets snapshots, smoo workforce (bare command = directory)

Extended

  • smoo files search|summarize · smoo heypage versions|rollback|source get|set|content get|set (site_list/get/publish already existed — mapped, not duplicated) · smoo api observability metrics list|query|attributes + web-vitals

How it was built

Four parallel lanes on pre-scaffolded module stubs, each mirroring the EXACT routes its MCP twins call (read from smooai rust/mcp/src/mcp.rs), each live-smoking every read verb against the real org (GA4 rows, percentile buckets, GBP discovery, form answers, 203KB site source…) with zero writes fired. House rules enforced by tests: empty results state the query ran; truncation always reported.

Verification

748 tests pass (95 new), clippy no errors, fmt clean, bare smoo workforce live-verified post-integration.

🤖 Generated with Claude Code

brentrager and others added 2 commits August 20, 2026 11:26
…n-out

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ions

Closes the CLI side of the hosted-MCP gap (pearls th-739bb1, th-b1f09c,
th-088c93, th-a5d991): every mcp.smoo.ai read tool now has a smoo verb,
mirroring the exact routes the MCP server calls (read from rust/mcp).
campaign send is preview-first (--confirm for a real send; suppression
server-side per smooai#4221). 748 tests pass (95 new across the 12
modules), clippy no errors, every read verb live-smoked against the real
org by the implementing lanes (zero writes fired).

Four-lane fan-out (w1 analytics+metrics, w2 campaigns/drip/audiences,
w3 files/sites, w4 one-offs) on pre-scaffolded module stubs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@brentrager
brentrager enabled auto-merge (squash) August 20, 2026 15:50
@changeset-bot

changeset-bot Bot commented Aug 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 1485971

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@smooai/smooth Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@brentrager
brentrager merged commit 190e054 into main Aug 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant