Skip to main content
Glama

Server Details

Business-ops MCP for FreedomOS — finance, OKRs, customer scoring, AI agents, content. 250+ tools.

Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
15.2% over 59 days
Last Tested
Transport
Streamable HTTP
URL

TDQS

A3.6/5.0

Scored across 350 tools

Disambiguation4/5

Descriptions are exceptionally thorough with routing notes that explicitly disambiguate near-pairs (e.g., get_ads_performance vs get_x_ads_performance, publish_pipeline_item vs publish_hub vs publish_site, send_email vs send_lead_draft). At this scale some ambiguity is inherent — the multiple 'publish_*' and 'create_*' verbs across domains require careful reading — but the routing guidance largely prevents misselection.

Naming Consistency4/5

The dominant pattern is verb_noun snake_case with strong domain prefixes (get_/list_/create_/update_/delete_/set_/publish_/posthog_*/shopify_*/xero_*). There are a few outliers like before_inventing_check_fo, hold_post, deliberate, and the dual-use resolve_ prefix (resolve_work vs resolve_brand_guide), but these are minor deviations from an otherwise highly consistent scheme.

Tool Count1/5

350 tools is extreme by any measure — 7x the calibration threshold of 50+. While the server covers an unusually broad domain (CRM, finance, ads, e-commerce, analytics, knowledge, team management, content, product requests, image/video generation), this many tools exceeds what any agent can realistically discover, navigate, or keep coherent, and likely blows context budgets. The scope may justify the breadth, but the count is an extreme mismatch.

Completeness4/5

Within each sub-domain the lifecycle coverage is remarkably complete: CRM has add/list/update/segment/enroll/synthesize/send; Shopify covers create/update/publish/unpublish/inventory/discounts/themes/tax; Xero covers accounts/reports/posting/reconciliation; OKRs have full create/read/update/delete. Minor gaps exist (e.g., no permanent page deletion, no direct LinkedIn post door), but no domain has a dead end that would cause agent failures.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Addeddeactivate_person
    • Addedlist_deactivated_people
    • Addedreactivate_person
  2. 4 tool updates
    • Changedcreate_signing_request3 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"Optional boxes on the pages for each signer: signature, name and date fill in automatically when they sign; text is a custom field they type. Positions are fractions of the page from its top-left (0..1). Fixed once sent."New value: +"Optional boxes on the pages for each signer: signature, name and date fill in automatically when they sign; text is a custom field they type. Positions are fractions of the page from its top-left (0..1). Fixed once sent. With record_id, leaving fields out keeps the boxes already saved on the draft; [] clears them."
      • addedInput schema / properties / send
        Added value: +{
        +  "description": "false: keep it a draft even with signers named, so its boxes can be checked on the record page first. Nobody is asked to sign. Default: naming signers sends it.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / signers / description
        Previous value: -"Who signs. Leave empty to file the document as a draft."New value: +"Who signs. Leave empty to file the document as a draft (or pass send: false to keep a draft with boxes)."
    • Addedget_brand
    • Changedhire_agent_with_context1 field changed
      • addedInput schema / properties / generate_avatar
        Added value: +{
        +  "description": "Whether to generate an optional AI avatar image (default true). False creates the role without image generation.",
        +  "type": "boolean"
        +}
    • Addedlist_brands
  3. 1 tool update
    • Changedcreate_signing_request1 field changed
      • addedInput schema / properties / fields
        Added value: +{
        +  "description": "Optional boxes on the pages for each signer: signature, name and date fill in automatically when they sign; text is a custom field they type. Positions are fractions of the page from its top-left (0..1). Fixed once sent.",
        +  "items": {
        +    "properties": {
        +      "h": {
        +        "type": "number"
        +      },
        +      "label": {
        +        "description": "For text fields: what to fill in, e.g. \"Title\".",
        +        "type": "string"
        +      },
        +      "page": {
        +        "description": "1 = first page.",
        +        "type": "number"
        +      },
        +      "required": {
        +        "description": "For text fields (default true).",
        +        "type": "boolean"
        +      },
        +      "signer_index": {
        +        "description": "Which signer fills it: 0 = the first in signers.",
        +        "type": "number"
        +      },
        +      "type": {
        +        "enum": [
        +          "signature",
        +          "name",
        +          "date",
        +          "text"
        +        ],
        +        "type": "string"
        +      },
        +      "w": {
        +        "type": "number"
        +      },
        +      "x": {
        +        "type": "number"
        +      },
        +      "y": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "signer_index",
        +      "page",
        +      "x",
        +      "y",
        +      "w",
        +      "h"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  4. 4 tool updates
    • Changedcreate_signing_request1 field changed
      • addedInput schema / properties / executed_outside
        Added value: +{
        +  "description": "true: this PDF was already signed outside FreedomOS (wet ink, another e-sign service). Files it straight as signed, with the uploaded PDF as the signed copy. Needs pdf_base64 and a title; no record_id, no signers.",
        +  "type": "boolean"
        +}
    • Addedget_executive_record_file
    • Addedlist_executive_record_signers
    • Addedsupersede_executive_record
  5. 3 tool updates
    • Addedcreate_signing_request
    • Addedget_executive_record
    • Addedlist_executive_records
  6. 1 tool update
    • Changedget_agent_login1 field changed
      • addedInput schema / properties / reveal
        Added value: +{
        +  "description": "true returns the raw password and one-time code. Omit to get them masked (the default).",
        +  "type": "boolean"
        +}
  7. 1 tool update
    • Changedgrant_agent_tool2 fields changed
      • addedInput schema / properties / tool_names
        Added value: +{
        +  "description": "Instead of tool_name: up to 25 exact tool names, granted together behind one approval.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "agent_id",
        -  "tool_name",
        -  "companyId"
        -]New value: +[
        +  "agent_id",
        +  "companyId"
        +]
  8. 1 tool update
    • Changedlist_operator_x_posts1 field changed
      • addedInput schema / properties / days
        Added value: +{
        +  "description": "Lookback in whole days (1–14, default 1).",
        +  "type": "number"
        +}
  9. 3 tool updates
    • Changedaudit_brand_visibility1 field changed
      • addedInput schema / properties / brand_terms
        Added value: +{
        +  "description": "Optional extra names that count as this company (product or old names). The company's name and website are always checked.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedget_shopify_tax_summary
    • Addedreject_pipeline_item
  10. 1 tool update
    • Addedget_agent_login
  11. 1 tool update
    • Changedget_transactions1 field changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter by category"New value: +"Filter by category: matches the FreedomOS cash category (e.g. 'Loan payment'), ignoring case, spaces and underscores. The bank subcategory (e.g. LOAN_PAYMENTS) is used only for rows with no FreedomOS category. An empty result lists available_categories."
  12. 1 tool update
    • Changeddecide_command_center_item1 field changed
      • addedInput schema / properties / person_clicked
        Added value: +{
        +  "description": "true ONLY when a person pressed the button in a review page or app widget to make this decision. Never set it on your own initiative.",
        +  "type": "boolean"
        +}
  13. 124 tool updates
    • Changedadd_agent_activity5 fields changed
      • changedInput schema / properties / activity / properties / frequency / description
        Previous value: -"How often it runs."New value: +"How often it runs — daily/weekdays/weekly/biweekly/monthly/quarterly auto-run on a cadence (weekdays = once each Mon–Fri in America/Los_Angeles; weekends skip); once/as_needed/on_demand are manual-only (run via trigger_agent_activity). Any other value is rejected so the scheduler can never silently drop the activity."
      • changedInput schema / properties / activity / properties / frequency / enum
        Previous value: -[
        -  "daily",
        -  "weekly",
        -  "biweekly",
        -  "monthly",
        -  "quarterly",
        -  "once",
        -  "as_needed",
        -  "on_demand"
        -]New value: +[
        +  "daily",
        +  "weekdays",
        +  "weekly",
        +  "biweekly",
        +  "monthly",
        +  "quarterly",
        +  "once",
        +  "as_needed",
        +  "on_demand"
        +]
      • changedInput schema / properties / activity / properties / linked_kr_id / description
        Previous value: -"Required. The Key Result this loop moves. This work needs a goal. Pick the Key Result this loop moves."New value: +"Required. The Key Result this loop moves. This work needs a goal. Pick the Key Result this loop moves. If none exists, create the Key Result first."
      • changedInput schema / properties / activity / properties / name / description
        Previous value: -"Short, unique activity name — the stable key the scheduler uses."New value: +"Short, unique activity name — the stable key the scheduler uses. Rejected if a name already exists on this agent (use update_agent_activity to change one)."
      • changedInput schema / properties / linked_kr_id / description
        Previous value: -"Required when activity is supplied flat. This work needs a goal. Pick the Key Result this loop moves."New value: +"Required when activity is supplied flat. This work needs a goal. Pick the Key Result this loop moves. If none exists, create the Key Result first."
    • Changedadd_commitment3 fields changed
      • changedInput schema / properties / consequence / description
        Previous value: -"What happens if this slips? (optional)"New value: +"What happens if this slips? (optional; infer if obvious, e.g. \"late filing penalty\")"
      • changedInput schema / properties / description / description
        Previous value: -"Additional details or notes (optional)"New value: +"Additional details or notes (optional). For event reframes, record the actual event date here (e.g. \"Event date: Mar 29\"). If the commitment recurs (explicit cue like \"every year\", or inherently recurring — birthdays, tax deadlines, renewals, licenses, insurance, enrollment), prepend \"Recurring: annual|monthly|weekly|quarterly\" as the first line — complete_commitment reads this tag to auto-roll the next occurrence forward."
      • changedInput schema / properties / due_date / description
        Previous value: -"Due date in YYYY-MM-DD format (optional)"New value: +"Due date in YYYY-MM-DD format (optional). Accept approximate phrasing (e.g. \"end of month\" = last day). For EVENTS (birthday, anniversary, party, graduation, wedding, holiday gathering) this is the PREP deadline, not the event date — default to ~7 days before the event (confirm with the user) unless they say to use the actual date; store the actual event date in description."
    • Changedadd_customer_evidence1 field changed
      • changedInput schema / properties / class / description
        Previous value: -"Evidence class (determines rank weight)."New value: +"Evidence class (determines rank weight): paying_customer (highest — words/behavior from someone who pays), product_telemetry (provenanced revenue-linked usage), public_review (real public review), operator_relayed (founder pastes a real quote/note), agent_as_user (coding agent/host pain with a wallet), prospect (non-paying signal, lowest)."
    • Changedagree_playbook4 fields changed
      • addedInput schema / properties / playbook_id
        Added value: +{
        +  "description": "UUID of the Playbook (use this or playbook_title).",
        +  "type": "string"
        +}
      • addedInput schema / properties / playbook_title
        Added value: +{
        +  "description": "Title (or fragment) of the Playbook (use this or playbook_id).",
        +  "type": "string"
        +}
      • removedInput schema / properties / tactic_id
        Removed value: -{
        -  "description": "UUID of the Playbook (use this or tactic_title).",
        -  "type": "string"
        -}
      • removedInput schema / properties / tactic_title
        Removed value: -{
        -  "description": "Title (or fragment) of the Playbook (use this or tactic_id).",
        -  "type": "string"
        -}
    • Removedanalyze_team_needs
    • Changedarchive_playbook4 fields changed
      • addedInput schema / properties / playbook_id
        Added value: +{
        +  "description": "UUID of the Playbook (use this or playbook_title).",
        +  "type": "string"
        +}
      • addedInput schema / properties / playbook_title
        Added value: +{
        +  "description": "Title (or fragment) of the Playbook (use this or playbook_id).",
        +  "type": "string"
        +}
      • removedInput schema / properties / tactic_id
        Removed value: -{
        -  "description": "ID of the Playbook to archive (optional if using tactic_title)",
        -  "type": "string"
        -}
      • removedInput schema / properties / tactic_title
        Removed value: -{
        -  "description": "Title of the Playbook to archive (use this or tactic_id)",
        -  "type": "string"
        -}
    • Addedattach_agent_key
    • Changedaudit_brand_visibility1 field changed
      • changedInput schema / properties / providers / description
        Previous value: -"Which AI search engines to audit. Options: anthropic (Claude), xai (Grok), google (Gemini), perplexity (Sonar Pro with live search)"New value: +"Which AI search engines to audit. Options: anthropic (Claude), xai (Grok), google (Gemini), perplexity (Sonar Pro, live web search — best for real-time visibility checks)"
    • Addedbefore_inventing_check_fo
    • Addedbind_hub_newsletter
    • Changedcancel_commitment1 field changed
      • changedInput schema / properties / title_search / description
        Previous value: -"Search by title if ID not known (fuzzy match)."New value: +"Search by title if ID not known (fuzzy match against ACTIVE commitments)."
    • Addedcomplete_my_activity
    • Addedconnect_remote_mcp
    • Addedcreate_company
    • Changedcreate_google_doc1 field changed
      • changedInput schema / properties / format_for_humans / description
        Previous value: -"If true (default), converts markdown to rich formatting. Set false for agent-to-agent docs."New value: +"If true (default), converts markdown to rich formatting. Set false for raw markdown / agent-to-agent docs."
    • Changedcreate_icp1 field changed
      • changedInput schema / properties / channels / description
        Previous value: -"Where they spend attention."New value: +"Where they spend attention (communities, publications, events)."
    • Changedcreate_key_result3 fields changed
      • changedInput schema / properties / current_value / description
        Previous value: -"THIS calendar month's actual (default: 0). Not YTD, not a future projection. For FCF use get_financial_summary displayed_net_cash_flow; for Amazon deposits use get_monthly_trends Amazon Sales. Do not invent Amazon GMV. Bind measure_source, or leave 0."New value: +"Manual KRs only — omit when measure_source is set: the source owns current and the daily OKR health sweep fills it (a typed value on a bound KR is refused). For a manual KR: THIS calendar month's actual, not YTD, not a projection. Cash-flow and Amazon-deposit KRs should bind fcf_last_closed_month / amazon_deposits_last_closed_month instead of typing a number."
      • addedInput schema / properties / direction
        Added value: +{
        +  "description": "Goal direction. \"at_least\" (default): reach the target. \"at_most\": stay UNDER the target — a ceiling (e.g. founder decisions per 28 days). A ceiling KR is on-track only while current ≤ target.",
        +  "enum": [
        +    "at_least",
        +    "at_most"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / measure_source / description
        Previous value: -"Bind current progress to a live data source so it auto-updates daily instead of relying on manual edits. One of: stripe_active_subscribers (active paying Stripe subscriptions), stripe_mrr ($ MRR), crm_active_leads (active CRM leads). Use when the KR measures exactly what a source provides."New value: +"Bind current progress to a live data source so it auto-updates daily instead of relying on manual edits. One of: stripe_active_subscribers, stripe_mrr, crm_active_leads, crm_webhook_leads_month, customer_evidence_count, product_telemetry_count, fcf_last_closed_month, amazon_deposits_last_closed_month, human_door_decisions_28d, factory_landings_aligned_pct_28d. Use when the KR measures exactly what a source provides. Do not bind finance/P&L here."
    • Removedcreate_master_plan
    • Changedcreate_meta_ad_draft2 fields changed
      • addedInput schema / properties / conversion_event
        Added value: +{
        +  "description": "Website event to optimize: OUTCOME_LEADS supports LEAD (default) or COMPLETE_REGISTRATION (completed signup); OUTCOME_SALES supports PURCHASE (default). Omit for other objectives. Use COMPLETE_REGISTRATION when browser/CAPI sends CompleteRegistration.",
        +  "enum": [
        +    "LEAD",
        +    "COMPLETE_REGISTRATION",
        +    "PURCHASE"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / objective / description
        Previous value: -"OUTCOME_TRAFFIC (default) | OUTCOME_AWARENESS | OUTCOME_ENGAGEMENT"New value: +"OUTCOME_TRAFFIC (default) | OUTCOME_AWARENESS | OUTCOME_ENGAGEMENT | OUTCOME_LEADS (needs firing pixel) | OUTCOME_SALES (needs firing pixel)"
    • Changedcreate_objective1 field changed
      • changedInput schema / properties / title / description
        Previous value: -"Objective title - a clear, aspirational goal (e.g., \"Build & Dogfood Freedom OS\")"New value: +"Objective title - a clear, aspirational goal (e.g., \"Build & Dogfood FreedomOS\")"
    • Changedcreate_play_from_activity5 fields changed
      • addedInput schema / properties / draft_category / description
        Added value: +"Optional: pre-fills from the recovery stamp; when omitted, proposed from the activity."
      • addedInput schema / properties / draft_custom_instructions / description
        Added value: +"Optional: pre-fills from the recovery stamp; when omitted, proposed from the activity."
      • addedInput schema / properties / draft_goal_impact / description
        Added value: +"Optional: pre-fills from the recovery stamp; when omitted, proposed from the activity."
      • addedInput schema / properties / draft_steps / description
        Added value: +"Optional: pre-fills from the recovery stamp; when omitted, steps are proposed from the activity."
      • addedInput schema / properties / draft_title / description
        Added value: +"Optional: pre-fills from the recovery stamp; when omitted, proposed from the activity."
    • Changedcreate_playbook1 field changed
      • changedInput schema / properties / category / description
        Previous value: -"Growth category: Leads (lead acquisition), Conversion (leads to customers), Customer Lifetime Value (retention), Time (automation)"New value: +"Growth category (4-F spine): flow=Leads, funnel=Conversion, flourish=LTV/retention, freedom=time/automation. Pass flow|funnel|flourish|freedom, not Leads/Conversion/CLV/Time."
    • Changedcreate_x_ad_draft2 fields changed
      • addedInput schema / properties / ad_text
        Added value: +{
        +  "description": "Ad copy (≤280 chars) — mints a nullcast ad post and attaches it to the paused line item. Mutually exclusive with post_id.",
        +  "type": "string"
        +}
      • addedInput schema / properties / post_id
        Added value: +{
        +  "description": "Existing X post id to promote on the paused line item instead of minting new copy.",
        +  "type": "string"
        +}
    • Changeddecide_command_center_item8 fields changed
      • addedInput schema / properties / connection_scope
        Added value: +{
        +  "description": "Connector cards that start a rented (Composio) sign-in only: 'personal' = \"Just me\" — the connection is usable only by the approving person (their chats, MCP key and bots they host); 'company' = everyone in this company. Omit to keep the requester's pick (default company). Ignored on every other card type.",
        +  "enum": [
        +    "company",
        +    "personal"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / constraint_action
        Added value: +{
        +  "description": "OKR-health constraint cards only (a pinned constraint claim that expired or was disproved): \"release\" with decision approved releases the pin through the same owner the Command Center lever uses. A person decides these cards — attended chat or the Command Center; never a session on the operator's MCP token. Re-pinning (a new date and threshold) is done with pin_constraint, not here.",
        +  "enum": [
        +    "release"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / decision / description
        Previous value: -"The decision: approved, denied, snoozed, or dismissed (dismissed = honest acknowledgment of a blocked_on_you card — never resolves it)"New value: +"The decision: approved, denied, snoozed, dismissed (honest ack of a blocked_on_you card), acknowledged (factory FYI Got it — card stays pending, factory continues), or cancelled (factory Cancel build). Pass the decision from available_actions — do not send dismissed when the label is Got it."
      • changedInput schema / properties / decision / enum
        Previous value: -[
        -  "approved",
        -  "denied",
        -  "snoozed",
        -  "dismissed"
        -]New value: +[
        +  "approved",
        +  "denied",
        +  "snoozed",
        +  "dismissed",
        +  "acknowledged",
        +  "cancelled"
        +]
      • changedInput schema / properties / feedback / description
        Previous value: -"What to change when revise:true — preferred plain string telling the producing agent what to fix. Also accepted under aliases: reason, revision_feedback, user_feedback, comment, notes (and shallow nested {text}/{content}). Optional: blank revise feedback defaults to \"Please revise\" (same as the browser card). Optional on plain deny/approve."New value: +"What to change when revise:true — preferred plain string telling the producing agent what to fix. Also accepted under aliases: reason, revision_feedback, user_feedback, comment, notes (and shallow nested {text}/{content}). Optional: blank revise feedback defaults to \"Please revise\" (same as the browser card). Optional on plain deny/approve — but give specific, actionable feedback on a plain deny too."
      • changedInput schema / properties / hired_job_action / description
        Previous value: -"Unclosed hired-job cards only: retry the first job once. Required with decision approved on that class. Dismiss is not legal. Accepted briefs are not graduation."New value: +"Unclosed hired-job cards only. FO: retry the first job once. HOST: host_complete (Day 1–3 done on the host) or retire the hire — never retry (that dispatches FreedomOS). Required with decision approved. Dismiss is not legal. Remind-on-a-date is a hold, not a close."
      • changedInput schema / properties / hired_job_action / enum
        Previous value: -[
        -  "retry"
        -]New value: +[
        +  "retry",
        +  "host_complete",
        +  "retire"
        +]
      • changedInput schema / properties / hold_until / description
        Previous value: -"Loop-health, once-play timeout, hired-job, or quiet-alarm hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes."New value: +"Loop-health, once-play timeout, hired-job, quiet-alarm, or compute-band hold: future ISO date or YYYY-MM-DD that would prove the card wrong. Required with decision snoozed on those classes (compute_band / compute_band_no_instrument: a dated hold is the experiment that excuses spend for that long; a bare snooze is not)."
    • Changeddelete_key_result2 fields changed
      • addedInput schema / properties / reason
        Added value: +{
        +  "description": "Why it is archived (≤300 chars) — recorded on the archived entry and in the audit trail.",
        +  "type": "string"
        +}
      • addedInput schema / properties / superseded_by
        Added value: +{
        +  "description": "ID of the LIVE key result that replaces this one (same company). Recorded on the archived entry; any agent that later looks the old id up is redirected to it. Use when a KR is being swapped for a better-measured one rather than dropped.",
        +  "type": "string"
        +}
    • Addeddetach_agent_key
    • Addeddraft_ad_variants
    • Changedenroll_by_segment2 fields changed
      • changedInput schema / properties / exclude_active / description
        Previous value: -"Optional — skip leads that already have a queued/active enrollment in ANOTHER sequence, so a segment blast does not double-touch them. Default true."New value: +"Optional — skip leads that already have a queued/active enrollment in ANOTHER sequence, so a segment blast does not double-touch them. Default true; only set false when the operator explicitly accepts double-touch."
      • changedInput schema / properties / segment_tag / description
        Previous value: -"Exact segment tag token from crm_leads.source, e.g. 'csv:free-trial'. No substring matching — must match a live tag exactly (see list_segments)."New value: +"Exact segment tag token from crm_leads.source, e.g. 'csv:free-trial' (see list_segments). No substring matching — must match a live tag exactly. Tags in tool output are wrapped in <user_field> markers — pass the inner text verbatim."
    • Addedensure_meta_pixel
    • Addedfind_tool
    • Changedgenerate_image_xai6 fields changed
      • changedInput schema / properties / artifact_ids / description
        Previous value: -"Multiple artifact IDs for multi-ref edit/composite (max 3)."New value: +"Multiple artifact IDs for multi-ref edit/composite (max 5)."
      • changedInput schema / properties / aspect_ratio / enum
        Previous value: -[
        -  "1:1",
        -  "16:9",
        -  "9:16",
        -  "4:3",
        -  "3:4",
        -  "3:2",
        -  "2:3",
        -  "2:1",
        -  "1:2",
        -  "19.5:9",
        -  "9:19.5",
        -  "20:9",
        -  "9:20",
        -  "auto"
        -]New value: +[
        +  "1:1",
        +  "16:9",
        +  "9:16",
        +  "4:3",
        +  "3:4",
        +  "3:2",
        +  "2:3",
        +  "2:1",
        +  "1:2",
        +  "19.5:9",
        +  "9:19.5",
        +  "20:9",
        +  "9:20",
        +  "21:9",
        +  "5:2",
        +  "auto"
        +]
      • changedInput schema / properties / model_tier / description
        Previous value: -"quality (default, best fidelity) or standard (cheaper draft). Prefer quality for customer-facing work."New value: +"quality (default, grok-imagine-image-2.0), auto (2.0 quality:auto), or standard (cheaper draft). Prefer quality for customer-facing work."
      • changedInput schema / properties / model_tier / enum
        Previous value: -[
        -  "quality",
        -  "standard"
        -]New value: +[
        +  "quality",
        +  "standard",
        +  "auto"
        +]
      • changedInput schema / properties / reference_image_url / description
        Previous value: -"URL of an existing image to EDIT. Prefer artifact_id when possible."New value: +"Chat door only. MCP/autonomous must pass artifact_id — a URL is refused and never queued as an Allow card."
      • changedInput schema / properties / reference_image_urls / description
        Previous value: -"Multiple source image URLs for multi-ref edit/composite (max 3). Prefer artifact_ids."New value: +"Chat door only (max 5). MCP/autonomous: artifact_ids."
    • Changedgenerate_video6 fields changed
      • changedInput schema / properties / aspect_ratio / description
        Previous value: -"Aspect ratio. Default: 16:9. For image-to-video, defaults to the input image ratio. Not supported for video editing."New value: +"Aspect ratio. Default: 16:9 (YouTube/hero/landscape); 9:16 (Reels/Shorts/Stories); 1:1 (feed square). For image-to-video, defaults to the input image ratio. Not supported for video editing."
      • changedInput schema / properties / image_url / description
        Previous value: -"URL of a single still image to animate (image-to-video mode). Use image_url from a previous generate_image result. For multiple images, use image_urls instead."New value: +"Chat door only. MCP/autonomous must pass artifact_id — a URL is refused and never queued as an Allow card."
      • changedInput schema / properties / image_urls / description
        Previous value: -"Array of image URLs (up to 7, primitive max) for reference-to-video. Combine mascot, person, product, brand assets. Use signed URLs from MEDIA IN THIS CONVERSATION. For a single image, use image_url instead."New value: +"Chat door only (up to 7). MCP/autonomous: artifact_ids."
      • changedInput schema / properties / prompt / description
        Previous value: -"Detailed description of the video to generate. Include visual scene, audio/voice direction, mood, and brand elements. For multi-image: describe how the subjects from each image interact. For video editing: describe the changes to make."New value: +"Detailed description of the video to generate. Include visual scene, audio/voice direction, mood, and brand elements. For multi-image: describe how the subjects from each image interact. For video editing: describe the changes to make. Avoid precise on-screen text animation (prefer burned-in design tools) and many incompatible camera cuts without clear staging — both are still hard for short-form video models."
      • changedInput schema / properties / resolution / description
        Previous value: -"Video resolution. 480p (fast draft), 720p (HD), 1080p (full HD on text-to-video and image-to-video). Reference-to-video is automatically clamped to 720p (primitive). Not supported for video editing."New value: +"Video resolution. 480p (fast draft, API default when omitted), 720p (HD), 1080p (full HD on text-to-video and image-to-video) — prefer the highest resolution that fits the deliverable, not a permanent draft default. Reference-to-video is automatically clamped to 720p (primitive). Not supported for video editing."
      • changedInput schema / properties / video_url / description
        Previous value: -"URL of an existing video to edit (video editing mode). Describe the edits in the prompt. Input capped at 8.7 seconds (primitive)."New value: +"Chat door only. MCP/autonomous must pass artifact_id of the video to edit (input capped at 8.7s)."
    • Changedget_attention_quest2 fields changed
      • changedInput schema / properties / companyId / description
        Previous value: -"Optional active company for featured card pick. Omit for host-only board (still returns needs_you + running)."New value: +"Optional active company for featured card pick + revenue constraint + ranked Playbooks. Omit for host-only board (still returns needs_you + running)."
      • addedInput schema / properties / focus_area
        Added value: +{
        +  "description": "Optional: focus on a specific Playbook category",
        +  "enum": [
        +    "flow",
        +    "funnel",
        +    "flourish",
        +    "freedom"
        +  ],
        +  "type": "string"
        +}
    • Addedget_checkout_link
    • Changedget_command_center_items1 field changed
      • addedInput schema / properties / holdco_class
        Added value: +{
        +  "description": "When true, only cards flagged as holdco-visible class evidence (this is a class, these are its instance ids). The holdco chair sweep uses this so class evidence is not read as one dead run.",
        +  "type": "boolean"
        +}
    • Addedget_company_birth_play
    • Changedget_credit_usage1 field changed
      • changedInput schema / properties / period / description
        Previous value: -"Time period for usage breakdown. Default: \"month\""New value: +"Time period for FOS credit/usage breakdown only. Does not change hosting (always this calendar month). Default: \"month\""
    • Addedget_factory_census
    • Removedget_my_channel_partner_link
    • Addedget_my_role
    • Removedget_next_priority
    • Removedget_page_performance
    • Changedget_playbook4 fields changed
      • addedInput schema / properties / playbook_id
        Added value: +{
        +  "description": "UUID of the Playbook (use this or playbook_title).",
        +  "type": "string"
        +}
      • addedInput schema / properties / playbook_title
        Added value: +{
        +  "description": "Title (or fragment) of the Playbook (use this or playbook_id).",
        +  "type": "string"
        +}
      • removedInput schema / properties / tactic_id
        Removed value: -{
        -  "description": "UUID of the Playbook (use this or tactic_title).",
        -  "type": "string"
        -}
      • removedInput schema / properties / tactic_title
        Removed value: -{
        -  "description": "Title (or fragment) of the Playbook (use this or tactic_id).",
        -  "type": "string"
        -}
    • Changedget_search_performance1 field changed
      • changedInput schema / properties / dimensions / description
        Previous value: -"Dimensions to group by. Options: \"query\", \"page\", \"country\", \"device\", \"date\". Defaults to [\"query\"]."New value: +"Dimensions to group by, combinable: [\"query\"] for keywords, [\"page\"] for pages, [\"query\",\"page\"] for both. Defaults to [\"query\"]."
    • Addedget_spend_envelope
    • Addedget_xero_books_health
    • Addedgrant_spend_envelope
    • Changedhire_agent_with_context5 fields changed
      • changedInput schema / properties / domain_expertise / description
        Previous value: -"Role-specific domain knowledge that makes this agent an expert (frameworks, ratios, best practices specific to this role and industry)"New value: +"Role-specific domain knowledge that makes this agent an expert (frameworks, ratios, best practices specific to this role and industry). Include when available — sharpens the agent's expertise."
      • changedInput schema / properties / first_72_hours / description
        Previous value: -"3 demand-bound first actions (leads/enroll/outbound/content-to-market/cash/fulfillment). FORBIDDEN: placement audits, governance of inactive agents, fleet ownership maps, agent scoreboards. These become Day 1-3 tasks; hygiene shapes are stripped at write time."New value: +"3 demand-bound first actions (leads/enroll/outbound/content-to-market/cash/fulfillment). FORBIDDEN: placement audits, governance of inactive agents, fleet ownership maps, agent scoreboards. These become Day 1-3 tasks; hygiene shapes are stripped at write time. Always include — core to a complete JD."
      • changedInput schema / properties / guardrails / description
        Previous value: -"What this agent should NEVER do (e.g., \"Never recommend cutting product investment\", \"Never ignore cash runway below 3 months\")"New value: +"What this agent should NEVER do (e.g., \"Never recommend cutting product investment\", \"Never ignore cash runway below 3 months\"). Always include — core to a complete JD."
      • changedInput schema / properties / obsession / description
        Previous value: -"The ONE demand-path KPI this agent lives or dies by (leads, enrolls, revenue, cash, customers). Not \"agents activated\" or team-hygiene metrics. Specific with numbers when possible (e.g., \"Close the $4,200/mo freedom gap\")."New value: +"The ONE demand-path KPI this agent lives or dies by (leads, enrolls, revenue, cash, customers). Not \"agents activated\" or team-hygiene metrics. Specific with numbers when possible (e.g., \"Close the $4,200/mo freedom gap\"). Always include — core to a complete JD."
      • addedInput schema / properties / preflight
        Added value: +{
        +  "description": "OPTIONAL. What the operator must hand over BEFORE this role can start (kind \"input\": a brand voice doc, a target list, a login the operator shares in Knowledge; each with why it is needed, who grants it, the tool that checks for it — default read_knowledge — and what that tool shows when it is there). Integration access (\"access\") is derived from the activity plan automatically; list it only for something the plan cannot see. A missing item becomes ONE blocked_on_you card from the role, never a guess.",
        +  "items": {
        +    "properties": {
        +      "check_tool": {
        +        "type": "string"
        +      },
        +      "granted_by": {
        +        "type": "string"
        +      },
        +      "kind": {
        +        "enum": [
        +          "input",
        +          "access"
        +        ],
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "output": {
        +        "type": "string"
        +      },
        +      "why": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Addedhold_post
    • Changedingest_voice_corpus2 fields changed
      • changedInput schema / properties / subject_kind / description
        Previous value: -"Whose voice — 'person' (personal brand) or 'brand'."New value: +"Whose voice — 'person' (personal brand) or 'brand'. Defaults to the existing profile's subject if omitted."
      • changedInput schema / properties / urls / description
        Previous value: -"Public URLs to learn the voice from (SSRF-guarded fetch)."New value: +"Public URLs to learn the voice from — the operator's own writing, or admired creators' pages. Fetched HTTPS-only, SSRF-guarded, no crawling."
    • Changedlink_agent_okrs1 field changed
      • changedInput schema / properties / okr_ids / description
        Previous value: -"Array of OKR UUIDs to link to this agent"New value: +"Array of OKR UUIDs to link to this agent. Call get_okrs first to list available objective IDs."
    • Changedlist_ad_campaigns1 field changed
      • changedInput schema / properties / ad_account_id / description
        Previous value: -"Ad account id from list_ad_accounts (act_<digits> or bare digits). Optional when the connection has exactly one ad account."New value: +"Ad account id from list_ad_accounts (act_<digits> or bare digits). Optional when the connection has exactly one ad account; if several exist and none is given, the call refuses and lists them to choose from."
    • Changedlist_knowledge2 fields changed
      • changedInput schema / properties / folder / description
        Previous value: -"Optional folder to list contents of (e.g., \"canon\", \"partners\"). Omit to list the root level. Always-on docs live in canon/."New value: +"Optional folder to list contents of (e.g., \"canon\", \"partners\"). Omit to list the root level. Combined with search, starts the nested name search at that folder. Always-on docs live in canon/."
      • changedInput schema / properties / search / description
        Previous value: -"Optional name-only filter (filename/slug). Does not search file bodies — use read_knowledge by slug for content."New value: +"Optional name-only filter (filename and folder-qualified slug, including nested folders). Does not search file bodies — use read_knowledge by slug for content."
    • Changedlist_leads1 field changed
      • changedInput schema / properties / segment_tag / description
        Previous value: -"Optional — exact segment tag token from crm_leads.source, e.g. 'csv:free-trial'. Omit to list across all segments. No substring matching."New value: +"Optional — exact segment tag token from crm_leads.source, e.g. 'csv:free-trial' (from list_segments; unwrap any <user_field> markers). Omit to list across all segments. No substring matching."
    • Removedlist_scheduled_reports
    • Addedlist_x_chat_conversations
    • Addedlist_xero_accounts
    • Addedlist_xero_unreconciled
    • Changedmanage_responsibilities2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Action to perform"New value: +"assign = give primary ownership of domains; delegate = temporarily route domains from one user to another (supports valid_until for auto-expiry); revoke = remove a domain assignment. To see current routing, call get_routing_overview."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "assign",
        -  "delegate",
        -  "revoke",
        -  "list"
        -]New value: +[
        +  "assign",
        +  "delegate",
        +  "revoke"
        +]
    • Addedpin_constraint
    • Addedpost_to_x
    • Addedpost_xero_transaction
    • Changedposthog_create_vision_scanner1 field changed
      • changedInput schema / properties / prompt / description
        Previous value: -"Natural-language watch prompt (stored on scanner_config.prompt)"New value: +"Natural-language watch prompt (stored on scanner_config.prompt); can be passed here or directly on scanner_config.prompt"
    • Changedposthog_hogql1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"HogQL query string"New value: +"HogQL query string. HogQL is ClickHouse-compatible SQL; common tables: events, persons, sessions. Example: \"SELECT count() FROM events WHERE event = '$pageview' AND timestamp > now() - interval 7 day\""
    • Changedposthog_list_vision_observations2 fields changed
      • changedInput schema / properties / scanner_id / description
        Previous value: -"Limit to one scanner UUID"New value: +"Limit to one scanner UUID — use to see one scanner's findings across sessions"
      • changedInput schema / properties / session_id / description
        Previous value: -"Limit to one session recording id"New value: +"Limit to one session recording id — use to see every scanner that ran on this recording"
    • Changedposthog_query_funnel1 field changed
      • changedInput schema / properties / events / description
        Previous value: -"Funnel steps (minimum 2). Each: { id: \"event_name\", name: \"Display Name\" }"New value: +"Funnel steps (minimum 2). Each: { id: \"event_name\", name: \"Display Name\" }. Example: [{id:\"$pageview\"},{id:\"sign_up_completed\"},{id:\"subscription_created\"}]."
    • Changedposthog_query_trends1 field changed
      • changedInput schema / properties / events / items / properties / id / description
        Previous value: -"Event name (e.g., \"$pageview\", \"sign_up_completed\")"New value: +"Event name (e.g., \"$pageview\", \"sign_up_completed\", \"$autocapture\")"
    • Addedpreview_my_business
    • Changedpromote_corpus_to_content1 field changed
      • changedInput schema / properties / count / description
        Previous value: -"How many angles (1-3, default 1). Prefer 1."New value: +"How many angles (1-3, default 1). Prefer 1 — one next post, not a flood of cards."
    • Changedpropose_work1 field changed
      • changedInput schema / properties / payload / description
        Previous value: -"Optional structured detail for the item."New value: +"Optional structured detail for the item. For kind=builder_fix the payload MUST name the Key Result the unit moves (payload.linked_kr_id, a live KR of this company) or carry payload.factory_self=true with payload.birth_reason; otherwise the proposal is refused with the live KR list. Server-owned keys (play_cascade, consult_kind, product_status, merge and deploy stamps, watch, card_id, spawn_session_id and its aliases session_id / session / spawn_session) are dropped and named in the result."
    • Addedpublish_hub
    • Addedpublish_site
    • Addedreactivate_agent
    • Changedread_knowledge1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "slug"
        -]New value: +[
        +  "slug",
        +  "companyId"
        +]
    • Changedread_web_page1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"The full URL to read (must include https:// or http://)"New value: +"The full URL to read (must include https:// or http://) — must be a URL the user provided; never guess one."
    • Removedreassign_reports
    • Changedredraft_playbook_contract4 fields changed
      • addedInput schema / properties / playbook_id
        Added value: +{
        +  "description": "UUID of the Playbook (use this or playbook_title).",
        +  "type": "string"
        +}
      • addedInput schema / properties / playbook_title
        Added value: +{
        +  "description": "Title (or fragment) of the Playbook (use this or playbook_id).",
        +  "type": "string"
        +}
      • removedInput schema / properties / tactic_id
        Removed value: -{
        -  "description": "UUID of the Playbook (use this or tactic_title).",
        -  "type": "string"
        -}
      • removedInput schema / properties / tactic_title
        Removed value: -{
        -  "description": "Title (or fragment) of the Playbook.",
        -  "type": "string"
        -}
    • Addedreopen_product_request
    • Changedrequest_attention_spawn1 field changed
      • changedInput schema / properties / host / description
        Previous value: -"Which builder to open: grok (Terminal) | claude-desktop (Claude.app Code — preferred) | claude-code (Terminal CLI)"New value: +"Which builder to open: grok (Grok Build Terminal; factory/CASCADE/freedom-ai labs refuse Terminal) | claude-desktop (Claude.app Code) | claude-code (Terminal CLI; factory goals refuse)"
    • Changedrequest_attention_transfer1 field changed
      • changedInput schema / properties / spawn_host / description
        Previous value: -"If no to_session_id: open new tab with this host (grok | claude-desktop | claude-code)."New value: +"If no to_session_id: open new tab with this host (grok | claude-desktop | claude-code). Factory/freedom-ai lab goals: grok/claude-code refuse Terminal (Code Factory ACP)."
    • Changedrequest_connector1 field changed
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Who may use the connection once it is live. \"company\" (default) = everyone in this company. \"personal\" = \"Just me\": only the person who signs in (their chats, MCP key and bots they host) — e.g. a personal inbox. The approver can still change it on the card.",
        +  "enum": [
        +    "company",
        +    "personal"
        +  ],
        +  "type": "string"
        +}
    • Changedrequest_content_revision1 field changed
      • addedInput schema / properties / as_final_draft
        Added value: +{
        +  "description": "When true, feedback IS the replacement post — save it without re-running the persona transform. Use when the operator already wrote the caption.",
        +  "type": "boolean"
        +}
    • Addedrestore_agent_activity
    • Addedrestore_knowledge
    • Changedrun_playbook4 fields changed
      • addedInput schema / properties / playbook_id
        Added value: +{
        +  "description": "UUID of the Playbook (use this or playbook_title).",
        +  "type": "string"
        +}
      • addedInput schema / properties / playbook_title
        Added value: +{
        +  "description": "Title (or fragment) of the Playbook (use this or playbook_id).",
        +  "type": "string"
        +}
      • removedInput schema / properties / tactic_id
        Removed value: -{
        -  "description": "UUID of the Playbook to run (use this or tactic_title).",
        -  "type": "string"
        -}
      • removedInput schema / properties / tactic_title
        Removed value: -{
        -  "description": "Title (or fragment) of the Playbook to run (use this or tactic_id).",
        -  "type": "string"
        -}
    • Changedrun_quality_check2 fields changed
      • changedInput schema / properties / artifact_id / description
        Previous value: -"ID of a specific artifact to evaluate (from generate_image or generate_video result). If omitted, auto-finds the most recent media artifact."New value: +"ID of a specific artifact to evaluate (from generate_image_xai or generate_video result). If omitted, auto-finds the most recent media artifact generated in the last 10 minutes."
      • changedInput schema / properties / task / description
        Previous value: -"What this deliverable is for (e.g. \"X post about Freedom OS launch\"). Gives the ICP evaluator context."New value: +"What this deliverable is for (e.g. \"X post about FreedomOS launch\"). Gives the ICP evaluator context."
    • Changedsave_knowledge2 fields changed
      • changedInput schema / properties / content / description
        Previous value: -"The knowledge content in Markdown format. FORMATTING RULES: Use ## headers for sections (NOT **bold**). Put a blank line between every paragraph and before/after lists. Use - for list items. Structure: ## Section > ### Sub-section > paragraph > - list items. Without blank lines, content renders as a wall of text."New value: +"The knowledge content in Markdown format. FORMATTING RULES: Use ## headers for sections (NOT **bold**). Put a blank line between every paragraph and before/after lists. Use - for list items. Use > for callouts or important notes. Structure: ## Section > ### Sub-section > paragraph > - list items. Without blank lines, content renders as a wall of text."
      • changedInput schema / required
        Previous value: -[
        -  "title",
        -  "content"
        -]New value: +[
        +  "title",
        +  "content",
        +  "companyId"
        +]
    • Changedsearch_conversations1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Search terms — keywords, topics, or phrases from the conversation the user is referencing"New value: +"Search terms — the most specific keywords, topics, or phrases from the conversation the user is referencing"
    • Changedsegment_leads1 field changed
      • changedInput schema / properties / segment_tag / description
        Previous value: -"Exact segment tag token from crm_leads.source, e.g. 'csv:apc-cch-2024'. No substring matching — must match a live tag exactly."New value: +"Exact segment tag token from crm_leads.source, e.g. 'csv:apc-cch-2024' (from list_segments). No substring matching — must match a live tag exactly. Tags in tool output are wrapped in <user_field> markers — use the inner text verbatim."
    • Changedsend_email2 fields changed
      • addedInput schema / properties / in_reply_to
        Added value: +{
        +  "description": "Optional RFC In-Reply-To header. Honored ONLY on executionSource=inbound_info (company-mail threaded reply). Ignored on every other path so callers cannot inject headers.",
        +  "type": "string"
        +}
      • addedInput schema / properties / references
        Added value: +{
        +  "description": "Optional RFC References header. Honored ONLY on executionSource=inbound_info. Ignored otherwise.",
        +  "type": "string"
        +}
    • Changedsend_lead_draft1 field changed
      • changedInput schema / properties / draft_id / description
        Previous value: -"UUID of the lead_drafts row to send."New value: +"UUID of the lead_drafts row to send (must be pending_review or approved)."
    • Changedsend_slack_message1 field changed
      • changedInput schema / properties / recipient_name / description
        Previous value: -"Name of the person to DM (e.g., \"Alex\", \"Jordan\"). Will be looked up via linked accounts or Slack directory."New value: +"Name of the person to DM (e.g., \"Alex\", \"Jordan\") — provide the FULL name when possible. Looked up via linked accounts first, then exact Slack directory match; ambiguous first-name-only matches fail closed and list candidates instead of guessing."
    • Addedsend_to_user
    • Changedset_cac_strategy2 fields changed
      • addedInput schema / properties / ads_account_id
        Added value: +{
        +  "description": "Optional Meta ad account the budget measures (act_<digits>, from list_ad_accounts) — required once when the Meta connection carries several accounts. Omit to leave unchanged.",
        +  "type": "string"
        +}
      • addedInput schema / properties / monthly_ads_budget
        Added value: +{
        +  "description": "Optional monthly ads budget in USD (major units, e.g. 500 = $500/month). Pass 0 to clear. Advisory envelope shown on the dashboard beside live MTD ad spend. Omit to leave unchanged.",
        +  "type": "number"
        +}
    • Addedset_xero_account_map
    • Changedshare_commitment1 field changed
      • changedInput schema / properties / commitment_id / description
        Previous value: -"The UUID of the commitment to share"New value: +"The UUID of the commitment to share (must belong to the caller)."
    • Changedshare_knowledge1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"The file or folder path to share. Use trailing \"/\" for folders (e.g., \"acme-deal/\"). Use no trailing \"/\" for files (e.g., \"acme-deal/term-sheet\")."New value: +"The file or folder path to share. Use trailing \"/\" for folders (e.g., \"acme-deal/\") — nested folders work too (e.g., \"partners/acme/\" shares the whole subtree). Use no trailing \"/\" for files (e.g., \"acme-deal/term-sheet\")."
    • Changedshare_playbook3 fields changed
      • addedInput schema / properties / playbook_id
        Added value: +{
        +  "description": "UUID of the Playbook to send.",
        +  "type": "string"
        +}
      • removedInput schema / properties / tactic_id
        Removed value: -{
        -  "description": "UUID of the Playbook to send.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "tactic_id",
        -  "companyId"
        -]New value: +[
        +  "companyId"
        +]
    • Changedsplit_agent_activity1 field changed
      • changedInput schema / properties / pieces / description
        Previous value: -"Optional precomputed replacement activities (name, frequency, description, …). When omitted, derived from the source."New value: +"Optional precomputed replacement activities (name, frequency, description, …) — exhaustion-recovery stamps typically supply these. When omitted, derived from the source."
    • Addedstamp_external_builder_bind
    • Addedstart_oauth
    • Changedsubmit_content_to_pipeline1 field changed
      • addedInput schema / properties / as_final_draft
        Added value: +{
        +  "description": "When true, this IS the post — queue it for human Approve without running the persona transform (Alex). Use for operator-curated copy, especially sourced faith. Auto-queue stays off for held grains. Default false.",
        +  "type": "boolean"
        +}
    • Changedsubmit_product_request1 field changed
      • addedInput schema / properties / linked_kr_id
        Added value: +{
        +  "description": "Optional: the FreedomOS Key Result this request moves (a kr-… id from FreedomOS's own OKRs — the unit is FreedomOS work). Validated at filing; a KR that is not live is refused with the live list. Bugs/upgrades default to factory-self (product_defect); a feature approved without one is built as factory-self and counted as unaligned.",
        +  "type": "string"
        +}
    • Changedsuggest_collaboration1 field changed
      • addedInput schema / properties / instance_card_ids
        Added value: +{
        +  "description": "Optional card ids that are instances of this class. When the target is a holdco chair, these are flagged on the company rail for the holdco sweep.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Removedsuggest_next_hire
    • Addedsuggest_xero_post
    • Addedsync_faith_content_hash
    • Changedtriage_idea2 fields changed
      • changedInput schema / properties / workspace_id / description
        Previous value: -"Single workspace/company ID (use workspace_ids for multiple)"New value: +"Single company ID (use workspace_ids for multiple)"
      • changedInput schema / properties / workspace_ids / description
        Previous value: -"Array of workspace/company IDs to assign the idea to"New value: +"Array of company IDs to assign the idea to"
    • Changedupdate_agent1 field changed
      • changedInput schema / properties / name / description
        Previous value: -"New display name — a single first name (e.g. \"Garth\"). Omit to leave the name unchanged."New value: +"New display name — a single first name (e.g. \"Garth\"). Do not include a title. Omit to leave the name unchanged. Renaming carries the agent's memory file across automatically."
    • Changedupdate_agent_activity3 fields changed
      • changedInput schema / properties / patch / properties / frequency / description
        Previous value: -"New frequency."New value: +"New frequency. weekdays = once each Mon–Fri in America/Los_Angeles; weekends do not run."
      • changedInput schema / properties / patch / properties / frequency / enum
        Previous value: -[
        -  "daily",
        -  "weekly",
        -  "biweekly",
        -  "monthly",
        -  "quarterly",
        -  "once",
        -  "as_needed",
        -  "on_demand"
        -]New value: +[
        +  "daily",
        +  "weekdays",
        +  "weekly",
        +  "biweekly",
        +  "monthly",
        +  "quarterly",
        +  "once",
        +  "as_needed",
        +  "on_demand"
        +]
      • changedInput schema / properties / patch / properties / name / description
        Previous value: -"New activity name (re-keys the scheduler — see usage)."New value: +"New activity name — re-keys the scheduler (run-history/cadence is keyed on name, so a rename makes the activity eligible to run again under the new name and resets its history). The matching deliverable-queue entry is renamed in the same write; the tool returns a note when this happens."
    • Changedupdate_agent_skill1 field changed
      • changedInput schema / properties / agent_name / description
        Previous value: -"Name of the agent (e.g., \"Marcus\"). Used to look up agent_id if not provided."New value: +"Name of the agent (e.g., \"Marcus\"). Used to look up agent_id if not provided — prefer this when the user @mentions an agent by name."
    • Changedupdate_brand_guidelines1 field changed
      • changedInput schema / properties / updates / description
        Previous value: -"Only the fields to update. Other fields are preserved automatically."New value: +"Only the fields to update; others are preserved automatically. Supported: name, tagline, colors {primary, accent, background}, typography {headings, body}, tone[], dos[], donts[], naming_rules (customer-facing naming authority — canonical product name, banned names/codenames, casing, CTA phrasing; follow it verbatim), logo_url. Nested objects (colors, typography) merge by key — e.g. { colors: { primary: \"#1E3A8A\" } } only changes primary, keeping siblings."
    • Changedupdate_commitment1 field changed
      • changedInput schema / properties / title_search / description
        Previous value: -"Search by title if ID not known (fuzzy match)."New value: +"Search by title if ID not known (fuzzy match against ACTIVE commitments)."
    • Changedupdate_company3 fields changed
      • changedInput schema / properties / logo_url / description
        Previous value: -"URL to company logo image"New value: +"Durable public https URL for the company HUD logo. HUD chrome circle-masks with object-contain — pass a normal logo file, not a pre-cropped circle. Signed storage URLs expire — for a file (chat attachment, FO Media, or base64) use upload_company_logo instead."
      • addedInput schema / properties / pledge_public
        Added value: +{
        +  "description": "The founder's own yes to being celebrated. true = the Freedom Pledge page goes live at getfreedomos.com/freedom/<slug>, the company may appear on the FreedomOS front page, and a welcome post is drafted for the FreedomOS founder to approve. false = all of that stops. Only a person sets this (chat, MCP as the operator, or an approved card) — never from an activity on a founder's behalf.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / runtime_mode
        Added value: +{
        +  "description": "Who runs this company's roles. \"host\": the operator's own bots wear them — they read each brief with get_my_role and do the work on their own turn, and FreedomOS starts nothing. \"fo\": FreedomOS runs them on its own schedule and pays the compute, so switching to it always needs the operator's yes.",
        +  "enum": [
        +    "host",
        +    "fo"
        +  ],
        +  "type": "string"
        +}
    • Changedupdate_icp1 field changed
      • changedInput schema / properties / updates / description
        Previous value: -"Only the fields to update. Other fields are preserved automatically."New value: +"Only the fields to update. Other fields are preserved automatically. Special fields: class — 'customer' (default) or 'partner', tags partner/affiliate ICPs so they never masquerade as end-buyers (invalid values rejected); agentProfile — how this customer's own AI agent participates in buying: { tier: 'ambient' | 'assisted' | 'delegated' | 'builder', agents: string[], surfacesRead: string[], purchasePath: string, autonomyNotes: string } — tier must be one of the four values (rejected otherwise), nested updates merge, and updatedAt is stamped automatically."
    • Changedupdate_key_result4 fields changed
      • changedInput schema / properties / current_value / description
        Previous value: -"THIS calendar month's actual unless month is set. Not YTD, not a future projection. FCF: get_financial_summary displayed_net_cash_flow. Amazon deposits: get_monthly_trends Amazon Sales."New value: +"Manual KRs only — refused on a KR bound to a measure_source (the sweep owns current; pass measure_source \"none\" first to make it manual). THIS calendar month's actual unless month is set. Not YTD, not a projection."
      • addedInput schema / properties / direction
        Added value: +{
        +  "description": "Goal direction. \"at_least\" (default): reach the target. \"at_most\": stay UNDER the target — a ceiling. A ceiling KR is on-track only while current ≤ target.",
        +  "enum": [
        +    "at_least",
        +    "at_most"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / measure_source / description
        Previous value: -"Bind current progress to a live data source (auto-updated daily by the OKR health sweep). One of: stripe_active_subscribers, stripe_mrr, crm_active_leads. Pass \"none\" to unbind and return the KR to manual updates."New value: +"Bind current progress to a live data source (auto-updated daily by the OKR health sweep). One of: stripe_active_subscribers, stripe_mrr, crm_active_leads, crm_webhook_leads_month, customer_evidence_count, product_telemetry_count, fcf_last_closed_month, amazon_deposits_last_closed_month, human_door_decisions_28d, factory_landings_aligned_pct_28d. Pass \"none\" to unbind and return the KR to manual updates. Do not bind finance/P&L here."
      • addedInput schema / properties / unit
        Added value: +{
        +  "description": "Unit label for the number (e.g. \"$\", \"%\", \"leads\"). A label fix, allowed on a bound KR too — the source owns the number, the unit names it. Before this, a wrong unit could only be fixed by recreate-and-rebind, losing history.",
        +  "type": "string"
        +}
    • Changedupdate_pipeline1 field changed
      • changedInput schema / properties / destination / description
        Previous value: -"Where to publish: freedom_os (auto-publish to platform), manual (copy/paste). Social platforms (x/linkedin/instagram/facebook/threads) publish via the gated owner after human approval — instagram items REQUIRE media. Meta platforms need the company's Facebook & Instagram (or Threads) connection in Smart Tools."New value: +"Where to publish: freedom_os (auto-publish to platform), manual (copy/paste). Social platforms (x/linkedin/instagram/facebook/threads) publish via the gated owner after human approval — instagram items REQUIRE media. Meta platforms need the company's Facebook & Instagram (or Threads) connection in Connections."
    • Changedupdate_playbook4 fields changed
      • addedInput schema / properties / playbook_id
        Added value: +{
        +  "description": "UUID of the Playbook (use this or playbook_title).",
        +  "type": "string"
        +}
      • addedInput schema / properties / playbook_title
        Added value: +{
        +  "description": "Title (or fragment) of the Playbook (use this or playbook_id).",
        +  "type": "string"
        +}
      • removedInput schema / properties / tactic_id
        Removed value: -{
        -  "description": "ID of the Playbook to update (optional if using tactic_title)",
        -  "type": "string"
        -}
      • removedInput schema / properties / tactic_title
        Removed value: -{
        -  "description": "Title of the Playbook to update (use this or tactic_id)",
        -  "type": "string"
        -}
    • Changedupdate_projection3 fields changed
      • changedInput schema / properties / mode / description
        Previous value: -"How to apply the value. \"set\" = replace existing value (default). \"add\" = add on top of existing value."New value: +"How to apply the value. \"set\" = replace existing value (default) — pair with force=true to skip the overwrite confirmation. \"add\" = add on top of the existing value — use when the user says add/include/put in/layer on top."
      • changedInput schema / properties / updates / description
        Previous value: -"Array of month+value pairs"New value: +"Array of month+value pairs — supports multiple months in one call, e.g. [{ month: \"apr\", value: 15000 }, { month: \"may\", value: 16000 }]."
      • changedInput schema / properties / updates / items / properties / value / description
        Previous value: -"Dollar value (positive number)"New value: +"Dollar value (positive number — expenses are stored as positive in the CASH OUT section)."
    • Changedupdate_reader_profile2 fields changed
      • addedInput schema / properties / glossary_seen / description
        Added value: +"Glossary terms already introduced to this person (full replace, not merged)."
      • changedInput schema / properties / member_id / description
        Previous value: -"Optional target UUID. Defaults to you."New value: +"Optional target UUID. Defaults to you. Updating another member requires admin in this company."
    • Addedupdate_transaction_account
    • Changedupdate_voice_profile1 field changed
      • changedInput schema / properties / updates / description
        Previous value: -"Only the fields to update. Others are preserved."New value: +"Only the fields to update; others are preserved. Supported keys: subject {kind:'person'|'brand', name}, style_descriptor (string), dos (string array — REPLACES the list; read first, merge, then send to add), donts (string array — REPLACES the list), exemplars (array of {excerpt, source?, why?}), reading_level ({target_grade:number, note?:string}). faith_substance is a fixed invariant ('human_authored_only') and cannot be changed here."
    • Addedupload_company_logo
    • Changedupsert_attention_session2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"running | blocked_on_operator | done | parked | unknown (blocked_on_tim accepted as alias)"New value: +"running | blocked_on_operator | done | parked | unknown"
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "running",
        -  "blocked_on_operator",
        -  "done",
        -  "parked",
        -  "unknown",
        -  "blocked_on_tim"
        -]New value: +[
        +  "running",
        +  "blocked_on_operator",
        +  "done",
        +  "parked",
        +  "unknown"
        +]
  14. 7 tool updates
    • Addedclaim_cloudflare_preview
    • Addedcreate_payment_link
    • Addedget_cloudflare_hosting_status
    • Addedget_receive_status
    • Changedlist_knowledge2 fields changed
      • changedInput schema / properties / folder / description
        Previous value: -"Optional folder to list contents of (e.g., \"acme-deal\", \"partners\"). Omit to list the root level."New value: +"Optional folder to list contents of (e.g., \"canon\", \"partners\"). Omit to list the root level. Always-on docs live in canon/."
      • changedInput schema / properties / search / description
        Previous value: -"Optional search term to filter files by name"New value: +"Optional name-only filter (filename/slug). Does not search file bodies — use read_knowledge by slug for content."
    • Addedset_company_lifecycle
    • Addedstart_company_receive
  15. 1 tool update
    • Addedshare_playbook
  16. 1 tool update
    • Changedupdate_projection1 field changed
      • changedInput schema / properties / account_name / description
        Previous value: -"Account name to update (must match closely, e.g., \"Software Revenue\", \"AWS Hosting\"). Use get_projections to see exact names first."New value: +"Account name to update. Matches an existing line, or creates it on first write (CASH OUT unless the name is clearly revenue)."

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    End-to-end agent-managed company brain. Humans and any MCP agent co-author living docs (Markdown + extensions), 40+ visual diagrams (Mermaid, BPMN, D2, PlantUML, ELK, Excalidraw), plans, and a self-learning Knowledge Graph. 163 tools across 16 categories. Auth: OAuth 2.1 or API key. Lean, secure, affordable — from individuals to enterprise.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    AI Agent Mission Control — 200+ MCP tools across 31 domains. Manage agents, experiments, workflows, crews, skills, tools, credentials, approvals, signals, budgets, marketplace, knowledge bases, chatbots, and more. Self-hosted, open-source (AGPL-3.0). Supports stdio + Streamable HTTP/SSE with OAuth 2.0 auth.
    34
    73
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Open-source MCP hub providing a single endpoint for AI agents to access dozens of business integrations (CRMs, spreadsheets, telephony, ads) with multi-tenancy, OAuth, and context-efficient tool discovery.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    AI-native productivity backend that gives your AI assistant persistent memory, pattern awareness, and computed intelligence about your work. 14 MCP tools for task management, daily planning, weekly review, and personal context.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources