Business Manager¶
Cluster: Uncategorised | Type: component | MCP Tools: 132
Overview¶
GTM operations component for the G6 vibe-coder launch. It tracks launch phases, customer funnel state, design partners, marketing campaigns, revenue events, onboarding progress, triggers, workflows, and learning loops through a SQLite-backed store and an MCP tool surface.
When to use:
- Running the Phase 0-2 launch checklist as an operational tracker
- Monitoring guide downloads, trials, conversions, churn risk, and onboarding progress
- Tracking design partner applications, partner health, and weekly milestones
- Recording lightweight campaign, content, revenue, and target-comparison data
- Coordinating founder-approved GTM actions through graduated autonomy tiers
MVP operations caveat
This component is functional for MVP launch operations and has passing component and BDD coverage, but it is not a fully automated production GTM system. Launch milestones and business goals still need to be seeded or entered by an operator; email, social, and webhook actions default to no-op/logging unless real provider adapters and credentials are configured; and funnel/revenue analytics are intentionally lightweight. Use it as a founder operating console for early launch execution, not as a source of audited finance, CRM, or marketing-attribution truth.
Capabilities¶
- Launch tracking: phase status, milestone lifecycle, blockers, exit criteria, and phase-advance recommendations
- Customer funnel: event recording, current-stage counts, active trials, churn-risk signals, and conversion forecasting
- Design partners: partner registration, health filtering, milestone recording, and partner-status lookups
- Marketing: campaign creation, content calendar, metrics, CTR, CPC, and CPA reporting
- Revenue: MRR/ARR dashboard, subscription lifecycle events, financial projection, and target comparison
- Onboarding: domain-specific templates and next-step tracking for non-technical users
- Autonomy controls: tier-gated operations for read-only reports, draft creation, recorded events, and external side effects
- Capability discovery: runtime backend state, credential presence only, cost-gate limits, store schema, QA gates, coordinator boundaries, and degradation codes
- Finance/tax honesty: accounting and tax views are machine-labelled advisory-only, unaudited, and
qualified-draft
Quick Start¶
from mvp.business_manager import BusinessManagerBlock, BusinessManagerInput
block = BusinessManagerBlock()
result = block.infer(BusinessManagerInput(op="get_launch_status"))
For persistent local state, pass a SQLite path when creating the block:
Public API¶
BusinessManagerBlock(AIBlock[BusinessManagerInput, BusinessManagerOutput, dict])¶
| Field | Type | Default |
|---|---|---|
name | str | 'business_manager' |
state | dict | field(default_factory=dict) |
db_path | str | ':memory:' |
current_tier | AutonomyTier | AutonomyTier.T3 |
resource_bounds | ResourceBounds | field(default_factory=ResourceBounds) |
usage | ResourceUsage | field(default_factory=ResourceUsage) |
llm | object | None |
governor | object | None |
Methods:
infer(data: BusinessManagerInput) -> Result[BusinessManagerOutput]¶
LaunchPhase(str, Enum)¶
AutonomyTier(str, Enum)¶
FunnelStage(str, Enum)¶
MilestoneStatus(str, Enum)¶
PartnerHealth(str, Enum)¶
CampaignStatus(str, Enum)¶
ContentStatus(str, Enum)¶
RevenueEventType(str, Enum)¶
SDLCPhase(str, Enum)¶
CodingAgentType(str, Enum)¶
CodingSessionStatus(str, Enum)¶
BusinessManagerInput(BaseModel)¶
| Field | Type | Default |
|---|---|---|
op | str | required |
task | str | '' |
context | dict[str, Any] | Field(default_factory=dict) |
parameters | dict[str, Any] | Field(default_factory=dict) |
entity_id | str | '' |
query | str | '' |
production_mode | bool | False |
approval_artifact_id | str | '' |
reviewer_id | str | '' |
BusinessManagerOutput(BaseModel)¶
| Field | Type | Default |
|---|---|---|
op | str | '' |
result | dict[str, Any] | Field(default_factory=dict) |
records | list[dict[str, Any]] | Field(default_factory=list) |
message | str | '' |
count | int | 0 |
found | bool | False |
metadata | dict[str, Any] | Field(default_factory=dict) |
degraded | bool | False |
degradation_reason | str \| None | None |
BusinessManagerStore¶
SQLite-backed persistence for business manager state.
Constructor:
| Parameter | Type | Default |
|---|---|---|
db_path | str | ':memory:' |
Methods:
close() -> None¶
create_milestone(phase: str, title: str, description: str = '') -> str¶
get_milestone(milestone_id: str) -> dict | None¶
list_milestones(phase: str = '', status: str = '', limit: int = 50) -> list[dict]¶
update_milestone(milestone_id: str, **kwargs: object) -> bool¶
advance_milestone(milestone_id: str) -> dict | None¶
record_funnel_event(user_email: str, stage: str, previous_stage: str = '', metadata: dict | None = None) -> str¶
get_funnel_metrics(limit: int = 50) -> dict¶
get_active_trials(limit: int = 50) -> list[dict]¶
list_funnel_events(user_email: str = '', stage: str = '', limit: int = 50) -> list[dict]¶
create_design_partner(contact_name: str, contact_email: str, domain: str = '', company_name: str = '', tools_used: str = '', what_built: str = '', what_broken: str = '') -> str¶
get_partner(partner_id: str) -> dict | None¶
list_design_partners(health: str = '', limit: int = 50) -> list[dict]¶
update_partner(partner_id: str, **kwargs: object) -> bool¶
record_partner_milestone(partner_id: str, milestone: str) -> bool¶
create_campaign(name: str, channel: str, budget: float = 0.0) -> str¶
get_campaign(campaign_id: str) -> dict | None¶
list_campaigns(status: str = '', channel: str = '', limit: int = 50) -> list[dict]¶
update_campaign(campaign_id: str, **kwargs: object) -> bool¶
record_campaign_metric(campaign_id: str, impressions: int = 0, clicks: int = 0, conversions: int = 0, spend: float = 0.0) -> bool¶
create_content_item(campaign_id: str, title: str, content_type: str = '', body: str = '', scheduled_for: str = '') -> str¶
get_content_item(content_id: str) -> dict | None¶
list_content_items(campaign_id: str = '', status: str = '', limit: int = 50) -> list[dict]¶
update_content_item(content_id: str, **kwargs: object) -> bool¶
record_revenue_event(event_type: str, account_id: str, mrr_delta: float = 0.0, plan_tier: str = '') -> str¶
get_revenue_dashboard() -> dict¶
take_revenue_snapshot() -> str¶
list_revenue_snapshots(limit: int = 30) -> list[dict]¶
record_action(action_type: str, target: str, payload: dict | None = None, status: str = 'pending', gate_id: str = '') -> str¶
update_action(action_id: str, status: str, response: dict | None = None) -> bool¶
list_action_log(status: str = '', action_type: str = '', limit: int = 50) -> list[dict]¶
get_action(action_id: str) -> dict | None¶
create_goal(objective: str, target_metric: str, target_value: float, deadline: str = '', strategy: dict | None = None) -> str¶
get_goal(goal_id: str) -> dict | None¶
list_goals(status: str = 'active', limit: int = 20) -> list[dict]¶
update_goal(goal_id: str, **kwargs: object) -> bool¶
create_trigger(name: str, condition: dict, action_template: dict, cooldown_sec: int = 86400) -> str¶
list_triggers(enabled_only: bool = True, limit: int = 50) -> list[dict]¶
mark_trigger_fired(trigger_id: str) -> bool¶
disable_trigger(trigger_id: str) -> bool¶
create_monitor(metric_name: str, threshold: float, direction: str = 'above', check_interval_sec: int = 3600) -> str¶
list_monitors(limit: int = 50) -> list[dict]¶
update_monitor(monitor_id: str, last_value: float) -> bool¶
create_alert(message: str, severity: str = 'info', monitor_id: str = '', trigger_id: str = '') -> str¶
list_alerts(unacknowledged_only: bool = True, limit: int = 50) -> list[dict]¶
acknowledge_alert(alert_id: str) -> bool¶
create_workflow(name: str, steps: list[dict], trigger_id: str = '') -> str¶
get_workflow(workflow_id: str) -> dict | None¶
list_workflows(status: str = '', limit: int = 50) -> list[dict]¶
update_workflow(workflow_id: str, **kwargs: object) -> bool¶
update_workflow_steps(workflow_id: str, steps: list[dict]) -> bool¶
create_learning(pattern_type: str, insight: str, evidence: list[dict] | None = None, confidence: float = 0.5) -> str¶
list_learnings(pattern_type: str = '', min_confidence: float = 0.0, limit: int = 20) -> list[dict]¶
update_learning(learning_id: str, evidence: list[dict] | None = None, confidence: float | None = None, applied_count_delta: int = 0) -> bool¶
count_distinct_funnel_users(stage: str) -> int¶
create_coding_session(agent_type: str = 'auto', task_type: str = '', prompt: str = '', context_hash: str = '', budget_profile: str = 'standard', skills: list[str] | None = None, workflow_id: str = '', phase: str = '') -> str¶
get_coding_session(session_id: str) -> dict | None¶
update_coding_session(session_id: str, **kwargs: object) -> bool¶
list_coding_sessions(status: str = '', workflow_id: str = '', limit: int = 50) -> list[dict]¶
record_context_strategy(task_type: str, strategy: str, sources: list[str], outcome_score: float, tokens_used: int) -> int¶
get_context_strategy_stats(task_type: str = '', limit: int = 20) -> list[dict]¶
record_ledger_entry(account_code: str, debit: str = '0', credit: str = '0', currency: str = 'USD', memo: str = '', source: str = '', campaign_id: str = '', posted_at: str = '') -> str¶
list_ledger_entries(account_code: str = '', period_start: str = '', period_end: str = '', campaign_id: str = '', limit: int = 500) -> list[dict]¶
add_asset(name: str, acquisition_cost: str, currency: str = 'USD', category: str = '') -> str¶
list_assets(category: str = '', limit: int = 200) -> list[dict]¶
record_equity_movement(kind: str, amount: str, currency: str = 'USD', period: str = '', memo: str = '') -> str¶
list_equity_movements(kind: str = '', period: str = '', limit: int = 200) -> list[dict]¶
upsert_social_account(platform: str, account_id: str, display_name: str = '', adapter_kind: str = 'ayrshare', oauth_state: str = 'unauthorized') -> str¶
list_social_accounts(platform: str = '') -> list[dict]¶
create_social_post(account_row_id: str, content_id: str = '', scheduled_for: str = '', idempotency_key: str = '', status: str = 'draft') -> str¶
update_social_post(post_id: str, **kwargs: object) -> bool¶
get_social_post_by_idempotency(idempotency_key: str) -> dict | None¶
list_social_posts(account_row_id: str = '', status: str = '', limit: int = 100) -> list[dict]¶
record_social_metric(post_id: str, impressions: int = 0, engagements: int = 0, clicks: int = 0, conversions: int = 0) -> str¶
list_social_metrics(post_id: str = '', limit: int = 100) -> list[dict]¶
record_webhook_event(provider: str, signature_verified: bool, payload: dict, idempotency_key: str = '', status: str = 'received', error: str = '') -> str¶
mark_webhook_processed(event_id: str, status: str = 'processed', error: str = '') -> bool¶
get_webhook_by_idempotency(provider: str, idempotency_key: str) -> dict | None¶
list_webhook_events(provider: str = '', status: str = '', limit: int = 50) -> list[dict]¶
store_oauth_token(platform: str, account_id: str, vault_handle: str, expires_at: str = '', scopes: str = '') -> str¶
get_oauth_token(platform: str, account_id: str) -> dict | None¶
record_qa_report(content_id: str, passed: bool, gate_results: dict, advisories: list) -> str¶
get_qa_reports(content_id: str = '', limit: int = 50) -> list[dict]¶
create_autonomous_campaign(brand_kit_id: str, autonomy_tier: str, plan: dict) -> str¶
update_autonomous_campaign(campaign_id: str, status: str) -> bool¶
append_autonomous_step(campaign_id: str, step_index: int, step_type: str, status: str = 'pending', detail: dict | None = None, cost_advisory: dict | None = None) -> str¶
complete_autonomous_step(step_id: str, status: str, detail: dict | None = None) -> bool¶
list_autonomous_steps(campaign_id: str, limit: int = 200) -> list[dict]¶
BusinessManagerMCPBlock(AIBlock[MCPBusinessManagerInput, MCPBusinessManagerOutput, dict])¶
| Field | Type | Default |
|---|---|---|
name | str | 'business_manager_mcp' |
state | dict | field(default_factory=dict) |
db_path | str | ':memory:' |
resource_bounds | ResourceBounds | field(default_factory=ResourceBounds) |
usage | ResourceUsage | field(default_factory=ResourceUsage) |
llm | object | None |
governor | object | None |
Methods:
infer(data: MCPBusinessManagerInput) -> Result[MCPBusinessManagerOutput]¶
MCPBusinessManagerInput(BaseModel)¶
| Field | Type | Default |
|---|---|---|
op | _OP_LITERAL | required |
task | str | '' |
context | dict[str, Any] | Field(default_factory=dict) |
parameters | dict[str, Any] | Field(default_factory=dict) |
entity_id | str | '' |
query | str | '' |
production_mode | bool | False |
approval_artifact_id | str | '' |
reviewer_id | str | '' |
MCPBusinessManagerOutput(BaseModel)¶
| Field | Type | Default |
|---|---|---|
op | str | '' |
result | dict[str, Any] | Field(default_factory=dict) |
records | list[dict[str, Any]] | Field(default_factory=list) |
message | str | '' |
count | int | 0 |
found | bool | False |
metadata | dict[str, Any] | Field(default_factory=dict) |
degraded | bool | False |
degradation_reason | str \| None | None |
MCP Tools¶
| Operation | Source |
|---|---|
get_launch_status | business_manager_mcp |
advance_milestone | business_manager_mcp |
get_phase_checklist | business_manager_mcp |
propose_phase_advance | business_manager_mcp |
get_exit_criteria | business_manager_mcp |
record_blocker | business_manager_mcp |
record_funnel_event | business_manager_mcp |
get_funnel_metrics | business_manager_mcp |
get_active_trials | business_manager_mcp |
get_churn_risk | business_manager_mcp |
create_outreach | business_manager_mcp |
get_funnel_forecast | business_manager_mcp |
create_design_partner | business_manager_mcp |
get_partner_status | business_manager_mcp |
record_partner_milestone | business_manager_mcp |
list_design_partners | business_manager_mcp |
get_partner_health | business_manager_mcp |
create_campaign | business_manager_mcp |
create_content_item | business_manager_mcp |
get_content_calendar | business_manager_mcp |
record_campaign_metric | business_manager_mcp |
get_campaign_performance | business_manager_mcp |
record_revenue_event | business_manager_mcp |
get_revenue_dashboard | business_manager_mcp |
get_financial_projection | business_manager_mcp |
compare_to_target | business_manager_mcp |
start_onboarding | business_manager_mcp |
get_onboarding_status | business_manager_mcp |
complete_onboarding_step | business_manager_mcp |
get_domain_templates | business_manager_mcp |
analyze_situation | business_manager_mcp |
recommend_actions | business_manager_mcp |
evaluate_decision | business_manager_mcp |
explain_recommendation | business_manager_mcp |
generate_content | business_manager_mcp |
personalize_outreach | business_manager_mcp |
generate_campaign_plan | business_manager_mcp |
refine_content | business_manager_mcp |
set_business_goal | business_manager_mcp |
decompose_goal | business_manager_mcp |
assess_progress | business_manager_mcp |
replan | business_manager_mcp |
create_trigger | business_manager_mcp |
list_triggers | business_manager_mcp |
create_monitor | business_manager_mcp |
get_alerts | business_manager_mcp |
create_workflow | business_manager_mcp |
execute_workflow | business_manager_mcp |
evaluate_triggers | business_manager_mcp |
evaluate_monitors | business_manager_mcp |
execute_outreach | business_manager_mcp |
publish_content | business_manager_mcp |
trigger_webhook | business_manager_mcp |
schedule_action | business_manager_mcp |
analyze_outcomes | business_manager_mcp |
get_learnings | business_manager_mcp |
update_strategy | business_manager_mcp |
compare_approaches | business_manager_mcp |
create_coding_session | business_manager_mcp |
execute_coding_session | business_manager_mcp |
get_coding_session | business_manager_mcp |
list_coding_sessions | business_manager_mcp |
cancel_coding_session | business_manager_mcp |
resume_coding_session | business_manager_mcp |
create_sdlc_workflow | business_manager_mcp |
execute_sdlc_phase | business_manager_mcp |
advance_sdlc_workflow | business_manager_mcp |
get_sdlc_status | business_manager_mcp |
diagnose_sdlc_failure | business_manager_mcp |
apply_sdlc_learning | business_manager_mcp |
get_budget_profile | business_manager_mcp |
estimate_session_cost | business_manager_mcp |
get_context_strategy_stats | business_manager_mcp |
compress_output | business_manager_mcp |
get_tool_manifest | business_manager_mcp |
get_tool_summary | business_manager_mcp |
get_tool_detail | business_manager_mcp |
get_tools_for_phase | business_manager_mcp |
capabilities | business_manager_mcp |
list_backends | business_manager_mcp |
describe_backend | business_manager_mcp |
list_configured_social_adapters | business_manager_mcp |
describe_social_adapter | business_manager_mcp |
list_content_backends | business_manager_mcp |
describe_content_backend | business_manager_mcp |
list_webhook_providers | business_manager_mcp |
describe_webhook_provider | business_manager_mcp |
list_cost_gate_limits | business_manager_mcp |
get_daily_paid_backend_spend | business_manager_mcp |
list_store_tables | business_manager_mcp |
describe_store_schema | business_manager_mcp |
list_qa_gates | business_manager_mcp |
describe_autonomy_policy | business_manager_mcp |
list_patterns | business_manager_mcp |
content.brief_from_goal | business_manager_mcp |
content.generate_text | business_manager_mcp |
content.generate_image | business_manager_mcp |
content.generate_video | business_manager_mcp |
content.generate_voiceover | business_manager_mcp |
content.generate_music | business_manager_mcp |
content.assemble_post | business_manager_mcp |
content.run_qa | business_manager_mcp |
social.list_accounts | business_manager_mcp |
social.connect_account | business_manager_mcp |
social.publish_now | business_manager_mcp |
social.schedule_post | business_manager_mcp |
social.cancel_scheduled | business_manager_mcp |
social.get_post_analytics | business_manager_mcp |
social.suggest_best_time | business_manager_mcp |
monetisation.recommend_pricing | business_manager_mcp |
monetisation.detect_funnel_bottleneck | business_manager_mcp |
monetisation.attribute_revenue | business_manager_mcp |
monetisation.recommend_promo | business_manager_mcp |
monetisation.compute_ltv_cac | business_manager_mcp |
accounting.record_cash_in | business_manager_mcp |
accounting.record_cash_out | business_manager_mcp |
accounting.add_asset | business_manager_mcp |
accounting.record_equity_movement | business_manager_mcp |
accounting.get_pnl_cash | business_manager_mcp |
accounting.get_balance_sheet_cash | business_manager_mcp |
accounting.get_projections | business_manager_mcp |
accounting.get_roi_by_campaign | business_manager_mcp |
tax.estimate_payable | business_manager_mcp |
tax.get_summary | business_manager_mcp |
tax.set_jurisdiction | business_manager_mcp |
autonomous.plan_campaign | business_manager_mcp |
autonomous.run_campaign | business_manager_mcp |
autonomous.measure_campaign | business_manager_mcp |
autonomous.iterate_campaign | business_manager_mcp |
webhooks.list_recent | business_manager_mcp |
webhooks.replay | business_manager_mcp |
webhooks.get_processing_status | business_manager_mcp |