MCP→CLI parity: 9 new smoo command groups + files/heypage/o11y extensions - #488
Merged
Conversation
…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
enabled auto-merge (squash)
August 20, 2026 15:50
🦋 Changeset detectedLatest commit: 1485971 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the CLI side of the hosted-MCP parity gap — the ~35 mcp.smoo.ai tools that had no
smooverb 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 validatedquery(positional SQL / --file / --preset), GA4report(properties/overview/top-pages/traffic)smoo campaigns— list / analytics / preview-first send: no flag ⇒ server-sidedryRun:true;--confirm⇒ real send; suppression is never re-implemented client-side (smooai#4221) and skipped recipients are always reportedsmoo drip— sequences / show / enrollments / enroll (25-cap mirrored) / cancel / test-sendsmoo audiences— list / create (zero-filter segment refused) / members / add-members / resolve (preview by default,--materializeto 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-vitalsHow 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 workforcelive-verified post-integration.🤖 Generated with Claude Code