freedom-mcp
Server Details
Business-ops MCP for FreedomOS — finance, OKRs, customer scoring, AI agents, content. 250+ tools.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
233 toolsack_attention_directiveInspect
Mark a pending attention directive as acked after the host session has taken the instruction. Use when YOU are Grok/Claude/a host builder and you just executed (or deliberately skipped) a directive you polled — for the same operator who owns the queue. Idempotent on already-acked → not found.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Directive UUID from list_attention_directives or create response. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
add_agent_activityInspect
Add ONE activity to an agent's activity plan without regenerating the whole plan. Use to give an agent a new recurring or one-off deliverable. (To rebuild the entire plan, use recalibrate_agent_jd with regenerate_activities=true instead.)
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| activity | Yes | The activity to add. | |
| agent_id | No | UUID of the agent. Optional if agent_name is provided. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | No | Name of the agent (e.g. "Aiko"). Provide this or agent_id. |
add_commitmentInspect
Track a personal commitment, deadline, birthday, appointment, or obligation. ALWAYS use this (not save_knowledge) when the user mentions: birthdays, due dates, deadlines, tax filings, events to plan, gifts to send, things they need to do by a certain date, or anything they want reminded about. Works across all life domains (work, personal, family, home). For supporting context (e.g. gift ideas, who the person is), pair this with save_knowledge scope="personal".
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | What needs to happen | |
| domain | No | Life domain: personal, family, home, w2, or company:<name> | |
| due_date | No | Due date in YYYY-MM-DD format (optional) | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| consequence | No | What happens if this slips? (optional) | |
| description | No | Additional details or notes (optional) |
add_customer_evidenceInspect
Store one piece of REAL Customer Evidence for this company (paying-customer words/behavior, telemetry, review, operator-relayed quote, prospect signal, or agent-as-user). Evidence outranks generated ICP simulation. Use when the operator pastes a real customer quote, a call note, a review, or a provenanced usage signal — NOT for inventing personas (use Customer Hunter / create_icp for hypotheses).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | Short observation / takeaway (required, ≥8 chars). | |
| class | Yes | Evidence class (determines rank weight). | |
| quote | No | Optional verbatim quote. | |
| source | Yes | Provenance: "operator paste", "support ticket #…", "Amazon review", … | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| observed_at | No | Optional ISO timestamp when observed (default: now). | |
| may_open_loop | No | If true, may open a work loop from this signal. Default false. | |
| subject_label | No | Optional human label (e.g. Kendall) — not a global identity system. | |
| may_refine_icp | No | If true, may seed an ICP-delta offer later (never silent rewrite). Default false. | |
| may_steer_copy | No | If true, may inform copy/messaging. Default true. | |
| may_not_auto_act | No | If true (default), evidence must not auto-act without human/graduated path. |
add_leadInspect
Add a new lead to the Leads CRM (crm_leads) — the table the Leads tab, triage, and outreach all use. Idempotent on (company, email) when an email is given. Provide at least an email OR a name. The lead appears on the Leads tab and is auto-triaged.
Routing: CRM/sales → add a lead or prospect → use this
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Full name. Provide email or name. | |
| tags | No | Tags for filtering (optional) | |
| No | Lead email (unique within company). Provide email or name. | ||
| notes | No | Initial notes about the lead (optional) | |
| phone | No | Phone number (optional) | |
| title | No | Job title (optional) | |
| source | No | Where the lead came from (e.g. "linkedin", "referral", "website"). Defaults to "manual". | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_name | No | Company they work for (optional) |
analyze_team_needsInspect
Gather comprehensive team and company context for talent strategy analysis. Returns current team composition, growth signals, capability gaps, and integration status. Use when the user asks "what roles am I missing?", "who should I hire next?", "analyze my team", or "what gaps does my team have?". YOU are the strategist — this tool gathers the data, YOU provide the PhD-level talent recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
append_cos_preferenceInspect
Append one durable speech/taste preference for THIS operator only (re-injected on their next voice session mint). Use when they say something was hard to follow, how cards should sound, or "remember I prefer…". For this user_id only — does not edit the shared FreedomOS CoS template. Apply the note in the current call when you can.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | One short preference (≤500 chars), e.g. "When describing cards, paraphrase titles — do not read dashes or ids aloud." | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
append_to_sheetInspect
Append rows to a Google Spreadsheet.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Array of rows to append | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| spreadsheet_id | Yes | Spreadsheet ID |
approve_pipeline_itemInspect
Approve a content item for publishing. Use when user says "approve it", "looks good", "publish that", or explicitly approves content from the approval queue.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ID of the pipeline output to approve (get from get_pending_approvals) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
archive_pipelineInspect
Archive (or restore) a content pipeline — flips is_active off/on, mirroring the Content Pipeline UI's soft-delete/restore. No data is deleted or cascaded. Use when the user says "archive this pipeline", "pause my newsletter automation", "turn off this pipeline", or "bring back my archived pipeline" (pass restore:true).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. Why this pipeline is being archived or restored. | |
| restore | No | Set true to REACTIVATE an archived pipeline instead of archiving it. Default false (archive). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| pipeline_id | Yes | ID of the pipeline to archive/restore (get from list_pipelines) |
attach_product_request_prInspect
Attach an existing freedom-ai GitHub PR URL to a product request and resolve it by construction (card → approved, product_status=fixed, history comment, filer resolution notify). Use when you (or a coding agent) opened a real PR for the fix — no separate human close step.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| pr_url | Yes | https://github.com/linnetlegacies/freedom-ai/pull/NNNN | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| request_id | Yes | request_id UUID from submit_product_request |
audit_brand_visibilityInspect
Audit whether Freedom OS appears in AI-generated search results. Sends a search query to external LLMs (Claude, Grok, Gemini, Perplexity) and checks each response for brand mentions. This is a competitive SEO/GEO auditing tool — like a mystery shopper for AI search engines. It does NOT answer questions or delegate work.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | A search-style query to test (e.g., "What is the best AI operating system for solopreneurs?") | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| providers | Yes | Which AI search engines to audit. Options: anthropic (Claude), xai (Grok), google (Gemini), perplexity (Sonar Pro with live search) | |
| max_tokens | No | Maximum response length per provider (default: 1000) | |
| temperature | No | Response variability 0-1 (default: 0.7) |
batch_update_spreadsheetInspect
Perform batch operations on a Google Spreadsheet (formatting, merging, etc.).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| requests_json | Yes | JSON-encoded array of batch update request objects, e.g. "[{\"updateCells\":{...}}]". | |
| spreadsheet_id | Yes | Spreadsheet ID |
browse_urlInspect
Browse a web page in a real browser and take a screenshot. Returns page content and a screenshot image. Use when you need to SEE what a page looks like (visual audit, brand check), interact with JavaScript-heavy pages, or capture visual evidence. The screenshot is returned as an image you can analyze directly with your vision.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full URL to browse (must include https:// or http://) | |
| actions | No | Optional browser actions to perform before taking screenshot. Each action has a type and optional selector/value. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
cancel_attention_directiveInspect
Cancel a pending attention directive (operator changed mind / wrong target). Use when the operator says drop/cancel that instruction to Grok or Claude, or CoS realizes the target_session_id was wrong — for THIS operator only. Does not reverse work the host already did.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Directive UUID to cancel. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
cancel_commitmentInspect
Cancel a commitment without completing it — marks it cancelled. Use when the user says "cancel that", "never mind, drop it", or "that's not happening anymore" for something already tracked. For finished work, use complete_commitment instead.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. Why this is being cancelled. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| title_search | No | Search by title if ID not known (fuzzy match). | |
| commitment_id | No | The UUID of the commitment to cancel. |
capture_ideaInspect
Capture an idea into the user's Ideas. Use when user shares an idea they want to save for later.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The idea content to capture | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| source_url | No | Optional URL if the idea came from a link |
challenge_as_customerInspect
Run your deliverable past the company's customer truth: REAL Customer Evidence first (when stored), then generated ICP as labeled simulation. Returns honest feedback — what would make them engage, scroll past, or what's missing. Use on customer-impact deliverables before sending.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Optional additional context about what this deliverable is for, who will see it, or what outcome you want | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| target_icp | No | ICP ID to use (from get_icps), or "auto" to use the first available. Default: auto | |
| deliverable | Yes | The content/report/strategy you want the simulated customer to evaluate | |
| deliverable_type | Yes | What type of deliverable this is — helps the customer evaluate appropriately |
check_my_inboxInspect
Check your own agent email inbox (receive-only) for messages sent to your @agents.getfreedomos.com address, and read them. Returns recent unread messages: sender, subject, a safe text snippet, any OTP codes, and login links that are safe to open — reads only YOUR mailbox. Use when a login, sign-in, or verification flow tells you it emailed a one-time code or magic link to your agent address and you need to retrieve it.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return (default 10, cap 25). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| from_domain | No | Only return mail whose sender is at this domain (e.g. "getfreedomos.com"). | |
| since_minutes | No | Only return mail received within the last N minutes (e.g. 15 for a fresh login code). |
claim_product_request_for_builderInspect
Mint a paste-ready Builder claim recipe for a FreedomOS product request so a host coding agent (Grok Build / Claude Code) with Harness + gstack can implement the class fix. Pins the FreedomOS frontier coding model (TIER_ROLES.frontier). Does NOT run the coding agent or open a PR by itself — use after product team accepted the request. FreedomOS product-inbox members only.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| request_id | Yes | request_id UUID from submit_product_request | |
| stamp_claim | No | If true (default), stamp context_payload.builder_claim {claimed_at, frontier_model, by} on the card. |
clear_pipeline_learningsInspect
Reset all learnings for a pipeline and start fresh. Use when user says "forget what you learned", "start fresh with the style", "reset the learnings", or "clear the feedback history".
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| pipeline_id | Yes | Pipeline ID (get from list_pipelines) | |
| output_format | No | Optional. Only clear learnings for a specific format. If not specified, clears all formats. |
complete_commitmentInspect
Mark a commitment as completed. Use when the user says they finished something or a deadline has passed.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| title_search | No | Search by title if ID not known (fuzzy match) | |
| commitment_id | No | The UUID of the commitment to complete |
configure_dashboardInspect
Create or update a widget on your agent dashboard. Use this to display key metrics, charts, tables, or timelines that help the user understand your work at a glance. Each call creates or updates one widget.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data rows for chart/table/list/gantt widgets. Each item is an object. - chart: [{ label: "Jan", value: 100 }, ...] - table: [{ col1: "val", col2: "val" }, ...] - list: [{ label: "Item", status: "done", detail: "..." }, ...] - gantt: [{ label: "Task", start: "2024-01-01", end: "2024-01-15", status: "active" }, ...] | |
| title | Yes | Display title for the widget (e.g., "Monthly Revenue", "Content Pipeline") | |
| config | No | Widget configuration. Shape depends on widget_type: - metric: { value, previous_value, format ("number"|"currency"|"percent"|"text"), trend_direction ("up"|"down"|"flat"), suffix } - chart: { chart_type ("bar"|"line"|"area"), x_axis, y_axis, color } - table: { columns: [{ key, label, align }], sortable, page_size } - list: { status_field, label_field, detail_field } - gantt: { start_field, end_field, label_field, status_field } - status: { status, status_color ("green"|"amber"|"red"|"blue"|"purple"|"slate"), detail, icon_emoji } - progress: { value (0-100), target_label, current_label, color (CSS class) } - kpi_row: { kpis: [{ label, value, trend ("up"|"down"|"flat"), format }] } - progress_ring: { value (0-100), label, color (CSS color) } - activity_status: (use data array with { name, frequency, status, next_run, last_outcome }) - canvas: { html (agent-authored layout HTML — narrative/self-expression, inert: no scripts/forms/controls, max 64KB), title (optional a11y label) } | |
| position | No | Display order (0 = first, higher = later). Default: 0 | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| widget_id | No | UUID of existing widget to update. Omit to create a new widget. | |
| is_visible | No | Whether the widget is visible on the dashboard. Default: true | |
| widget_type | Yes | Type of widget to create |
confirm_mcp_approvalInspect
Confirm a pending MCP capability approval by spoken (or chat) yes/no. Pass approval_id from the approval_required tool result. decision: approve | reject | later. Runs the SAME process-approval pipeline as tapping Approve on the card — does not bypass integrity rails. Use on voice when the operator says approve/yes or reject/no after a capability ask. Do NOT invent an approval_id.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | approve | reject | later (yes/no/go also accepted) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| grant_mode | No | approve only: 'once' runs without standing grant (default for spoken path); 'standing' also grants future calls | |
| approval_id | Yes | UUID of the pending mcp_tool_call approval card (from approval_required.approval_id) | |
| voice_session_id | No | Optional voice session id if known (audit only) | |
| utterance_snippet | No | Optional short quote of what the operator said (audit; ≤200 chars) |
create_attention_directiveInspect
Queue a short instruction for an external coding/builder session (Grok terminal, Claude Code, or future FreedomOS runtime). Does NOT type into their UI — the session must poll FreedomOS (poll-fo-directives.sh or list_attention_directives) and act. Use when the operator says "tell Grok…", "have Claude…", or CoS should route reversible work off the call. Pass the same target_session_id the host polls (e.g. grok-, claude-).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Optional provenance: voice_cos | chat | api | system. Default derived from door. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_id | No | Optional company context (portfolio id). Does not change auth — row stays operator-scoped. | |
| instruction | Yes | One clear instruction for that session (1–4000 chars). Imperative, not a transcript dump. | |
| target_host | No | Host adapter: claude-code | claude-desktop | grok | manual | slack | github | freedomos | other | |
| target_session_id | Yes | Stable id the host polls (1–200 chars). Examples: grok-$SESSION, claude-code-$SESSION. Must match the poller. |
create_featureInspect
Add a new feature to the Feature Index. Use when user says "I built X", "add feature Y", "track this capability", or describes a product feature they want to market. Features can later be pushed to Content Pipeline for marketing content.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Display title (e.g., "AI Content Pipeline") | |
| limits | No | Current limitations (e.g., "LinkedIn only", "Beta users only") | |
| solves | No | Problems/pain points this feature solves (e.g., ["manual posting", "writer's block"]) | |
| category | No | Category (e.g., "ai", "marketing", "finance", "automation") | |
| demo_url | No | URL to a demo video (Screen Studio, Loom, etc.) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| feature_id | No | Unique slug for the feature (e.g., "ai-content-pipeline") | |
| description | No | Marketing-ready description of the feature |
create_folderInspect
Create a folder in the knowledge base for organizing files. Folders can be nested (e.g., "partners/acme"). Use for deal rooms, topic grouping, or any organizational structure.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Folder name (e.g., "acme-deal", "partners/acme"). Nested paths are supported. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
create_google_docInspect
Create a new Google Doc in the user's Freedom OS folder. Use for JDs, deliverables, and shared documents. By default, creates beautifully formatted docs.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Document title (e.g., "Marketing Specialist JD") | |
| folder | No | Which folder to save in | |
| content | Yes | Content for the document in markdown format | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| format_for_humans | No | If true (default), converts markdown to rich formatting. Set false for agent-to-agent docs. |
create_icpInspect
Create a NEW Ideal Customer Profile (ICP) from scratch and save it — no Customer Hunter UI needed. Use this when get_icps returns hasICPs:false (the company has none yet) or to add another target customer profile. To CHANGE an existing ICP, use update_icp instead.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Persona name. Required. Used to derive the ICP id/filename. INTERNAL targeting label (may be an evocative codename) — never published. | |
| title | No | One-line descriptor of the persona. | |
| channels | No | Where they spend attention. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| painThemes | No | Recurring pain themes. | |
| publicName | No | The public-facing audience label to use in published copy — NEVER the internal persona name/codename. Plural noun phrase, e.g. "compounding pharmacy owners". Optional — auto-generated from the persona when omitted. | |
| demographics | No | role, companySize, industry, techStack[]. | |
| dreamOutcome | No | The outcome they dream of. | |
| techSavviness | No | Tech comfort level. | |
| financialProfile | No | revenueRange, typicalDealSize, budgetAuthority, buyingBehavior, growthStage, priceSensitivity. | |
| nightmareScenario | No | The 3am problem / nightmare scenario. |
create_key_resultInspect
Add a key result to an objective (the KR in OKR). Key results are measurable outcomes that track progress toward the objective. You can identify the parent objective by title or ID.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit of measurement (e.g., "%", "$", "users", "trees") | |
| title | Yes | Key result title (measurable outcome) | |
| due_date | No | Due date (YYYY-MM-DD). Strongly recommended — a KR without one cannot expire or alarm. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| assigned_to | No | User ID or "me"/"current_user" to assign to | |
| objective_id | No | ID of the parent objective (optional if using objective_title) | |
| target_value | No | Target value to achieve | |
| current_value | No | Current progress value (default: 0) | |
| measure_source | No | 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. | |
| objective_title | No | Title of the parent objective (use this or objective_id) |
create_master_planInspect
Initialize a new multi-step project with a persistent Master Plan artifact. Call this BEFORE starting any complex, multi-tool task.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| task_title | Yes | Short title for the task (e.g., "Influencer CRM Build") | |
| initial_plan | Yes | The high-level plan or blueprint for the task. |
create_meta_ad_draftInspect
Create a complete Meta (Facebook/Instagram) ad draft — campaign + ad set + creative + ad — ALL in PAUSED state, spending nothing. Use when the user wants to set up or draft an ad. Activation is a separate human-approved step (set_meta_ad_status).
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | Optional call-to-action: LEARN_MORE, SIGN_UP, GET_STARTED, CONTACT_US, DOWNLOAD, SUBSCRIBE | |
| link_url | Yes | https destination URL (landing page, with UTMs) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| objective | No | OUTCOME_TRAFFIC (default) | OUTCOME_AWARENESS | OUTCOME_ENGAGEMENT | |
| targeting | No | Audience: {countries: ["US"], age_min, age_max, interests: [{id, name}]} | |
| daily_budget | Yes | Daily budget in the account currency, major units (e.g. 25 = 25 USD/day) | |
| primary_text | Yes | The ad copy (primary text) | |
| ad_account_id | No | Ad account (act_<digits>). Optional when the connection has exactly one. | |
| campaign_name | Yes | Campaign name, e.g. "PCAI cold traffic — Compliance Crusader v1" | |
| image_artifact_id | No | Optional agent_artifacts image id for the creative |
create_objectiveInspect
Create a new objective (the O in OKR). Objectives are aspirational goals. After creating one, use generate_key_results to get intelligent, context-aware key result suggestions, then create_key_result to add the best ones. An objective without key results has no way to measure progress.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Year for this objective (e.g., 2026) | |
| title | Yes | Objective title - a clear, aspirational goal (e.g., "Build & Dogfood Freedom OS") | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| description | No | Brief context or notes about this objective. Do NOT include key results here. |
create_pipelineInspect
Create a new content pipeline to automate content creation. Use when user says "set up a changelog", "create a newsletter pipeline", "send team updates", "automate my Twitter posts", or describes input→output automation. Output types: changelog (public product updates), team_update (internal team email via Freedom OS), report (email to specific recipients), customer_newsletter (external customers - requires user Email MCP like Mailchimp), social_post (Twitter/LinkedIn via MCP).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the pipeline (e.g., "Weekly Newsletter", "GitHub to Changelog") | |
| inputs | No | Input sources to listen to | |
| output | Yes | Output type: changelog (public), team_update (internal team email), report (specific recipients), customer_newsletter (external - requires Email MCP), social_post (Twitter/LinkedIn) | |
| persona | No | Marketing persona to use (alex, elon, or custom ID) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
create_spreadsheetInspect
Create a new Google Spreadsheet with optional headers.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Spreadsheet title | |
| headers | No | Column headers for the first row | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
create_tacticInspect
Create a new growth tactic for the company. Use when user wants to add a tactic, strategy, or action item.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The tactic title (e.g., "LinkedIn Content Strategy") | |
| status | No | Current status of the tactic | |
| category | Yes | Growth category: Leads (lead acquisition), Conversion (leads to customers), Customer Lifetime Value (retention), Time (automation) | |
| priority | No | Priority level | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| description | No | Detailed description of the tactic | |
| linked_kr_id | No | Optional key-result id the tactic most advances (validated against the company OKRs). If omitted, the most off-track KR of the bound objective is chosen. | |
| objective_id | No | Optional OKR objective UUID to bind this tactic to (validated against this company). If omitted, the binding is auto-inferred from the category→OKR map. |
deactivate_agentInspect
Deactivate (archive) an AI agent/specialist from the team. Use when user says "remove [agent]", "deactivate [agent]", "archive [agent]", "fire [agent]", "delete [agent]". The agent is soft-deleted (is_active=false) and can be reactivated later. Cannot deactivate Linnet (the orchestrator).
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for deactivation | |
| agent_id | Yes | UUID of the agent to deactivate | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
decide_command_center_itemInspect
Approve or deny a Command Center card. This processes the decision through the full approval pipeline including trust scoring, autopilot evaluation, skill learning, and deliverable queue progression.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| revise | No | revise:true with decision:"denied" sends the card back to the producing agent to redo with your feedback (feedback required in that case) — nothing publishes. Re-runs the originating activity and re-surfaces a corrected card. Omit/false for a plain rejection (learn-only). Only valid alongside decision:"denied" — any other decision is rejected. | |
| item_id | Yes | UUID of the Command Center card to decide on | |
| decision | Yes | The decision: approved, denied, snoozed, or dismissed (dismissed = honest acknowledgment of a blocked_on_you card — never resolves it) | |
| feedback | No | Optional feedback, especially important for denials. Be specific. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| grant_mode | No | Capability-approval (mcp_tool_call) cards only: 'once' runs the approved call WITHOUT granting the capability for future calls (the next identical call asks again); 'standing' (the default when omitted) runs it AND grants it so future calls run without asking. Ignored on every other card type. |
delete_icpInspect
Delete a saved Ideal Customer Profile (ICP). Mirrors the Customer Hunter UI's delete: deactivates any reviewer agent built from this ICP, strips it from every content pipeline that targets it, then ARCHIVES (does not permanently remove) the ICP file. Use when the user says "delete this ICP", "remove this customer profile", or "get rid of this persona".
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| icp_id | Yes | The unique ICP ID from get_icps response. | |
| reason | No | Optional. Why this ICP is being deleted. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
delete_ideaInspect
Delete an idea from Ideas. Can identify by content snippet, ID, or "newest"/"latest".
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| idea_identifier | Yes | How to find the idea: UUID, content snippet, or "newest"/"latest" for most recent |
delete_key_resultInspect
Archive a key result (safe delete — recoverable, never hard-deleted). The KR is moved out of the objective's live list into a recoverable archive. Identify by title (preferred) or ID; optionally scope by parent objective. If the title is ambiguous it refuses and lists the matches — pass an ID to disambiguate.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| objective_id | No | ID of the parent objective (optional) | |
| key_result_id | No | ID of the key result (optional if using key_result_title) | |
| objective_title | No | Title of the parent objective, to scope the search (optional) | |
| key_result_title | No | Title of the key result to archive (use this or key_result_id) |
delete_knowledgeInspect
Archive a knowledge file by slug (soft delete). The file is moved to _archived/ and can be restored later. Use when the user explicitly asks to remove a knowledge document.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug of the knowledge file to delete | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
delete_objectiveInspect
Archive an objective and its key results (safe delete — recoverable, never hard-deleted). Identify by title (preferred) or ID. If the title matches more than one objective it refuses and lists them — pass an ID to disambiguate.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| objective_id | No | ID of the objective (optional if using objective_title) | |
| objective_title | No | Title of the objective to archive (use this or objective_id) |
delete_tacticInspect
Archive a tactic (safe delete - recoverable). Can identify by title instead of ID.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| tactic_id | No | ID of the tactic to archive (optional if using tactic_title) | |
| tactic_title | No | Title of the tactic to archive (use this or tactic_id) |
deliberateInspect
Run an adversarial deliberation on a decision. Multiple AI perspectives argue opposing positions over multiple rounds, iteratively strengthening arguments, and converge on a recommendation with confidence scoring. Use for important decisions where you want to stress-test options from multiple angles. Over MCP the deliberation runs in the background: the first call returns a run_id immediately; call deliberate again with { run_id } (plus the same companyId) after ~1-2 minutes to fetch the result.
Routing: Important decision → deliberate for adversarial analysis
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | Poll a background deliberation started earlier (MCP mode). Pass the run_id returned by the starting call, with the same companyId. Omit question/positions when polling. | |
| context | No | Goals, constraints, values, and relevant data that should inform the deliberation. The more context, the better the arguments. | |
| criteria | No | Optional weighted evaluation criteria. Each item should have "name" (string) and "weight" (number 0-1, should sum to ~1). If omitted, defaults are generated. | |
| question | No | The decision or question to deliberate. Be specific — e.g., "Should we invest in mobile app development or API partnerships for growth in Q2?" Required unless polling with run_id. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| positions | No | Two or more positions to argue. Each should be a clear, distinct option — e.g., ["Mobile app development", "API partnerships", "Content marketing"]. Required unless polling with run_id. | |
| max_rounds | No | Maximum rounds of deliberation (default: 5). More rounds = better arguments but more compute. |
derive_capabilityInspect
Scan the company's connected source code (its GitHub repo, via the Pulse connection in Smart Tools) and DRAFT a capability list — shipped FEATURES (each citing the file that proves it) plus attempted can't-do LIMITS — for the operator to ratify. It writes NOTHING: only items the operator ratifies become authoritative capability the marketing agents and the Integrity Gate use. Read-only; never executes or sends code. If no repo is connected it tells the operator to connect one in Pulse first. Use to populate or refresh a software product's capabilities without hand-maintaining them.
Routing: Operator wants to pull their product's real features from its code (instead of typing them) → use this
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
derive_from_websiteInspect
SPIKE tool (.agent/design-docs/2026-07-09-magical-onboarding-buildout-mode.md, "The Assignment"). Give it a business's public URL; it reads the page and returns a derived ICP, a derived brand voice, and 3 ready-to-post drafts written in that voice — the onboarding lead magnet's engine, spike-grade. Nothing is persisted to any company. Use when your operator asks you to run the website-derivation spike against a real business URL, to show the operator what an agent team can already see about their business.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The business's public URL to derive from (must include https:// or http://) — their homepage or an About/product page. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
draft_outreachInspect
Produce two outreach draft variants (A/B) for a lead given an angle. Both drafts are warm and kind by design (P10) — variants differ in angle of helpfulness (subject hook, opening framing, call-to-action) not in tone. Drafts are written to lead_drafts as pending_review. Returns IDs + previews. Use after synthesize_lead_hypothesis to draft initial outreach.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| angle | Yes | The outreach angle to use (e.g., 'deeper_lp3_discovery', 'lighter_touch_different_hook', 'jurisdiction_clarification', 'kind_check_in'). Take from synthesize_lead_hypothesis.suggested_angle if unsure. | |
| lead_id | Yes | UUID of the lead. | |
| reply_to | No | Optional Reply-To address to carry on the eventual send (CONTRACT-1 agent thread address). Stamped into both drafts' metadata (best-effort — the metadata column is additive); send_lead_draft reads it at send time and passes it to send_email. Never changes what is drafted. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| from_name | No | Optional sender display name (e.g., 'Acme Team', 'Alex at Acme'). Used in draft signature. When omitted, the CONTRACT-5 chain resolves it: the company's mcp_connections.resend.auth_config.from_name, else a generic 'Team'. Sequence callers pass the sequence's owning agent's name here (the top of the chain). | |
| eligible_at | No | Optional ISO timestamp — the earliest real time this draft may be sent (2026-07-13 send-timing gate). For a sequence step, pass now + that step's delay_hours (an ESTIMATE; the send-gate re-stamps it to the real value once the prior step actually resolves). Omitted → eligible immediately (the correct default for step 1 and for manual one-off drafts). | |
| sequence_id | No | Optional. The outreach_sequences.id the step belongs to. Pass it together with sequence_step_id to enable the A/B prior-stats bias — step ids repeat across sequences (step1…stepN), so stats are only comparable within one sequence. Also persisted on the draft row so the send-gate can resolve "the next step's draft" by an exact join instead of guessing. Omitted → no bias, no sequence linkage (manual one-off draft). | |
| company_context | No | Optional short summary of the company the lead arrived at (e.g., 'Acme Health — pharmacy compounding compliance consulting'). Helps the model pitch correctly. | |
| journey_summary | Yes | Short prose summary of what we know about this lead (their state, recent activity, what they engaged with). Used as context for the draft. Synthesis.intent_summary + 1-2 notes works well. | |
| sequence_step_id | No | Optional. If this draft is part of an auto-mode sequence step, pass the step_id from outreach_sequences. Otherwise omit (manual one-off draft). | |
| regenerated_reason | No | Optional (regenerate-on-signal, 2026-07-15). When the sequencer re-drafts a not-yet-sent step after a meaningful lead signal (temperature flip to hot, a click), it passes a short human-readable reason (e.g. 'redrafted after they clicked'). Stamped into both drafts' metadata.regenerated_reason so the review card can show WHY the copy was refreshed. Never changes drafting logic — provenance only. | |
| variant_b_guidance | No | Optional (CONTRACT-3). Sequence-designed seed for the B variant — a distilled subject+body angle persisted on the sequence step (steps jsonb, additive variant_b_guidance key). When present, variant_b is grounded in this guidance while variant_a stays the model's best independent take on the main angle. Omitted → both variants generated exactly as before. |
draft_tenet_from_signalInspect
Draft a company tenet (mission or vision) FROM the company's existing website, for the operator to ratify or edit — instead of asking them to type it into a blank field. Use when a tenet is empty but the company already exists (has a website). Returns a DRAFT proposal with evidence and a confidence level; it writes NOTHING — the operator authors by confirming (Slice-3 update_company). The agent is a mirror, not an author: the draft is grounded in the site, never invented.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| tenet | Yes | Which tenet to draft from the website signal | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
generate_carouselInspect
Render a multi-slide image carousel + a LinkedIn-PDF from structured slide copy. Text (including the cited answer) is rendered as REAL, legible text — never the garbled in-frame text AI image/video models produce. Use for value-demonstration B2B content (the cited-answer overlay, peer-proof decks). Produces artifacts only; publish via send_to_user(intent:"publish").
Routing: Carousel / slide deck / LinkedIn PDF / legible cited-answer overlay → use this (the text stays sharp; $0).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Visual theme. Defaults to brand (dark canvas + accent). | |
| folder | No | Optional Media gallery folder to file this carousel into (freeform name, e.g. "q3-campaign"). Shown as a folder chip on the /media page. Reuse an existing folder name when the work belongs to it. | |
| format | No | Slide dimensions. linkedin_portrait (1080×1350, 4:5, default — best LinkedIn engagement), square (1080×1080), wide (1280×720). | |
| slides | Yes | Ordered slides. Each: { kicker?, title (required), body?, citation? }. 3–8 ideal, max 12. | |
| caption | Yes | The post caption that accompanies the carousel. Combined with the slide copy into the gate-text the ICP+Pledge gate scores. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| accent_hex | No | Optional brand accent color as 6-digit hex (e.g. "#F97316"). Pass the tenant's brand color. Defaults per theme. | |
| brand_label | No | Optional per-tenant wordmark shown in the slide footer (e.g. your company name). Pass YOUR company's label only. Omit to render no wordmark — never a hardcoded brand. |
generate_image_xaiInspect
Generate or EDIT an image using xAI Imagine. Handles ALL image styles: photorealistic, illustrations, flat graphics, icons, banners, concept art. Supports 2K resolution. Provide reference_image_url or artifact_id to EDIT an existing image.
Routing: ALL image generation and editing → use this (2 credits). Handles photorealistic, illustrations, flat graphics, icons, banners.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Optional Media gallery folder to file this image into (freeform name, e.g. "q3-campaign" or "brand-assets"). Shown as a folder chip on the /media page so the operator can find it later. Reuse an existing folder name when the work belongs to it. | |
| prompt | Yes | Detailed description of the photorealistic image. Include lighting, camera angle, environment, style, and subject details. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| resolution | No | Output resolution. 1k (default, web quality) or 2k (professional print quality). | |
| artifact_id | No | ID of an existing artifact from the MEDIA IN THIS CONVERSATION block. The system will automatically resolve a fresh signed URL from storage. Use this when referencing a previously generated image for editing or animation. | |
| folder_name | No | Subfolder name for Drive save (e.g. "Product Shots", "Headshots"). Only used when save_to_drive is true. | |
| aspect_ratio | No | Aspect ratio. Defaults to 1:1. Use "auto" to let the model choose. | |
| save_to_drive | No | If true, also save the image to Google Drive for permanent storage. Defaults to false. | |
| reference_image_url | No | URL of an existing image to EDIT (instead of generating from scratch). Use a signed URL from the MEDIA IN THIS CONVERSATION block. When provided, the prompt describes the desired changes to apply to this image. |
generate_key_resultsInspect
Generate intelligent, context-aware key result suggestions for an objective. Uses company mission, vision, financials, and existing KRs to produce high-quality suggestions tied to north star metrics. Returns suggestions that you can then create with create_key_result.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| objective_id | No | ID of the objective (optional if using objective_title) | |
| objective_title | No | Title of the objective to generate key results for (use this or objective_id) |
generate_tacticsInspect
Generate AND save 5 grounded growth tactics for a 4-F category, composed from the company mission/vision, OKRs, and ICP customer profile. Persists them as growth_tactics (optionally bound to an objective, key result, and lane). Use when an agent should author concrete tactics for a goal — not just brainstorm.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| lane_id | No | Optional lane UUID running these tactics (validated against this company). | |
| category | Yes | Growth category (4-F spine): flow=Leads, funnel=Conversion, flourish=LTV/retention, freedom=time/automation. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| userPrompt | Yes | The focus/request the tactics must address (e.g. "fill the top of funnel for our pharmacy ICP"). | |
| linked_kr_id | No | Optional key-result id (within the bound objective) the tactics most advance. | |
| objective_id | No | Optional OKR objective UUID to bind these tactics to (validated against this company). |
generate_vector_imageInspect
Generate a native SVG vector image using Recraft V4 Pro Vector. The ONLY tool that outputs true SVG with editable paths. Best for logos, icons, brand marks, vector illustrations, and scalable graphics for Framer animations.
Routing: SVG/vector/logo/icon/brand mark/scalable graphics → use this (3 credits)
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Size in WxH format (e.g., "1024x1024") or aspect ratio (e.g., "1:1", "16:9"). Defaults to 1024x1024. | |
| folder | No | Optional Media gallery folder to file this into (freeform name, e.g. "q3-campaign" or "brand-assets"). Shown as a folder chip on the /media page. Reuse an existing folder name when the work belongs to it. | |
| prompt | Yes | Detailed description of the vector image. Include style, colors, subject, composition. Be specific about the visual style — "minimalist line art logo", "flat vector icon", "geometric brand mark". | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| folder_name | No | Subfolder name for Drive save (e.g., "Logos", "Icons", "Brand"). Only used when save_to_drive is true. | |
| save_to_drive | No | If true, also save the SVG to Google Drive for permanent storage. Defaults to false. |
generate_videoInspect
Generate a video clip using AI (xAI Imagine, 3 credits). Supports text-to-video, image-to-video, MULTI-IMAGE video (up to 7 images combined), and video editing with native audio (voiceover, sound effects, music). Best for quick drafts, social clips, iterations, and audio-first content. For cinematic final deliverables, use generate_video_veo instead.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | 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. | |
| duration | No | Video duration in seconds (1-15). Default: 5. Not supported for video editing. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| image_url | No | 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. | |
| video_url | No | URL of an existing video to edit (video editing mode). Describe the edits in the prompt. Input capped at 8.7 seconds. | |
| image_urls | No | Array of image URLs (up to 7) for multi-image video generation. Combine a mascot, a person, product shots, and brand assets into one cohesive video. Use signed URLs from the MEDIA IN THIS CONVERSATION block. For a single image, use image_url instead. | |
| resolution | No | Video resolution. 480p (default, faster) or 720p (HD). Not supported for video editing. | |
| artifact_id | No | ID of a single existing artifact from the MEDIA IN THIS CONVERSATION block. The system resolves a fresh signed URL and auto-detects: image artifacts → image-to-video, video artifacts → video editing. For multiple images, use artifact_ids instead. | |
| artifact_ids | No | Array of artifact IDs (up to 7) from the MEDIA IN THIS CONVERSATION block for multi-image video generation. The system resolves fresh signed URLs for each. Example: pass the mascot image artifact + founder photo artifact to create a video where they interact. | |
| aspect_ratio | No | Aspect ratio. Default: 16:9. For image-to-video, defaults to the input image ratio. Not supported for video editing. | |
| save_to_drive | No | If true, also save the video to Google Drive. Defaults to false. |
generate_video_veoInspect
Generate a high-fidelity cinematic video using Google Veo 3.1 (5 credits). Premium quality with realistic physics and cinematic lighting. Use ONLY for final deliverables — landing page videos, polished ad creatives, brand content. NEVER use for first drafts. Always iterate with generate_video first, then upgrade to Veo for the final version.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Detailed cinematic description of the video. Include visual scene, camera direction, lighting, audio, and brand elements. | |
| quality | No | Quality mode. "fast" for quick previews, "cinematic" (default) for premium quality. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| aspect_ratio | No | Aspect ratio. 16:9 for landscape, 9:16 for vertical/Reels, 1:1 for square. | |
| save_to_drive | No | If true, also save the video to Google Drive. Defaults to false. | |
| reference_image_url | No | Optional URL of an image to animate (image-to-video). Use the image_url from a previous generate_image result. |
get_activity_healthInspect
Audit all agent activities for staleness, business outcome alignment, and cross-agent overlap. Shows per-activity run count, quality scores, approval rates, and flags activities that may need retirement or adjustment. Use this to apply first principles: question every activity before optimizing it.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_id | No | Company ID to audit. Usually auto-injected from context. |
get_actuals_vs_budgetInspect
Compare actual financial results to budget/projections. Shows variance analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period for comparison | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| fiscal_year | No | The fiscal year to query |
get_ads_performanceInspect
Get Meta ads results: spend, impressions, clicks, CTR, CPC, CPM, reach, conversions (actions), cost per action, and purchase ROAS — at account, campaign, adset, or ad level over a chosen window. Use when the user asks how their Facebook/Instagram ads are doing, what they spent, or what it returned.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Aggregation level: 'account', 'campaign' (default), 'adset', or 'ad'. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| time_range | No | Exact window: { since: 'YYYY-MM-DD', until: 'YYYY-MM-DD' }. Mutually exclusive with date_preset. | |
| campaign_id | No | Optional: scope the report to one campaign (id from list_ad_campaigns). | |
| date_preset | No | Reporting window preset, e.g. 'last_7d', 'last_30d' (default), 'this_month', 'lifetime'. Mutually exclusive with time_range. | |
| ad_account_id | No | Ad account id (act_<digits> or bare digits). Optional when the connection has exactly one ad account. |
get_agent_outcome_panelInspect
Per-agent "what did the compute buy" facts for the operator: trailing-14-day credits, runs (with self-maintenance share), human-accepted vs denied outputs, pending cards, last-accepted date, and a playing-house flag (activity with zero accepted output). Use when the operator asks whether an agent is worth its spend, what an agent has been doing, or why credits are being used — for executives and managers reviewing their AI team.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Optional: limit to one agent (uuid). Omit for the whole team. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_agent_performanceInspect
Get detailed performance stats for a specific agent: run count, quality scores, approval/denial rates, error count, recent errors with context, and slowest runs. Use this to audit agent health, trace problems, and identify improvement opportunities.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (default: 30) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | Yes | Name of the agent to audit |
get_artifactsInspect
Get saved artifacts for the company. Use to review past screenshots, analyses, and reports. Filters by artifact type, source URL, or agent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum artifacts to return (default: 10) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| source_url | No | Filter by source URL (partial match) | |
| artifact_type | No | Filter by artifact type | |
| created_by_agent | No | Filter by agent that created the artifact |
get_attention_budgetInspect
THE tool for the founder's attention budget — the operator-set ceiling on pending review cards before they are 'overloaded' (e.g. "what's my attention budget?", "how many pending cards is too many?", "is my overload threshold the default?"). Returns max_pending_cards and is_default (whether it's still the default 7 or operator-set). This is the ceiling get_team_pulse's overload_signal compares against; it is NOT in company settings or get_company — this is the only tool that has it, so call it directly. For the Chief of Staff / the founder.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_brand_guidelinesInspect
Get the company's brand guidelines — name, tagline, colors (hex codes), typography, personality/tone, naming rules, and VISUAL + POSITIONING dos/donts. Call this first, and use it, before generating any image, banner, video, or visual asset (inject the exact brand colors + style), and for naming/positioning in copy. For HOW to WRITE (voice, cadence, word choice) use get_voice_profile — this brand guide governs how the brand LOOKS and what it stands for, not writing style.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_cac_strategyInspect
THE tool for any question about this company's CAC strategy or LTV:CAC ratio — e.g. "is our CAC strategy standard or conservative?", "what's our LTV:CAC ratio?", "what's our max CAC per customer?". Returns the operator's chosen posture — aggressive (2:1), standard (3:1), conservative (4:1), or enterprise (5:1) — and the effective ratio (max CAC = average LTV ÷ ratio). The CAC strategy is NOT in company settings, profile, or financials — do not use get_company or get_financial_summary for it; this is the only tool that has it, so call it directly.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_cash_positionInspect
Get current cash and bank account balances. Use for cash flow questions.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_check_telemetryInspect
Read recent quality-check telemetry for the current company. Returns per-(run,check) verdicts (pass/fail/flag/hold/error/skipped) across the brand/legal/ethics/security gates, the Pledge stamp, the ICP consult, and the craft gate — so you can see which checks fire findings, which HOLD content (false-hold rate), and which run clean. Use it to answer 'which gate holds the most for this company' or 'has the security gate ever fired on these posts'. Free-text preview fields are tagged as data.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return (default 50, hard cap 200). | |
| verdict | No | Optional filter: pass | fail | flag | hold | error | skipped. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| check_name | No | Optional filter: brand | legal | ethics | security | pledge_stamp | icp_quality | craft. | |
| content_grain | No | Optional filter by content grain (the safety/topic axis). |
get_command_center_itemInspect
Read ONE Command Center card by id — full description, full deliverable content, and full context payload, in ANY status (pending, approved, denied, snoozed). THE tool for retrieving what an already-decided card actually said, e.g. the approved package text a follow-up run needs.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | UUID of the Command Center card (from get_command_center_items or a prior card reference) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_command_center_itemsInspect
List Command Center cards for the company (pending by default; pass status_filter for approved/denied/snoozed/all). Shows what needs decisions — approvals, reviews, proposals. Returns card title, source agent, priority, age in days, task type, and a content PREVIEW only — use get_command_center_item with an id for a card's full content. Pending mode is ranked most-actionable first and carries a featured field naming the single card the operator's rail features first, with the true reason it leads; other status filters (including 'all') return chronological oldest-first with no featured verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to return (default: 25) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| status_filter | No | Filter by status. Default: "pending". Options: pending, approved, denied, snoozed, all |
get_companyInspect
Get detailed company profile including mission, vision, and settings.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| include_settings | No | Whether to include extended settings in the response. Defaults to true. |
get_cos_preferencesInspect
Read THIS operator's saved CoS speech/taste preferences (user-scoped). Use when confirming what you will remember about how they like cards and talk.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_credit_usageInspect
Check credit balance, usage history, and cost breakdown. Shows remaining credits, usage by model/endpoint, and top cost drivers. Useful for cost optimization, budget monitoring, and reviewing whether activities are cost-effective.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period for usage breakdown. Default: "month" | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| breakdown_by | No | How to group the usage data. Default: "both" |
get_decision_ledgerAInspect
THE tool for what the Freedom Engine has DECIDED for this company — the audit feed of every autonomous decision: what it auto-ran, what it teed up for your approval, and what it refused (e.g. faith/values content), each with the reason, the profit at play, the founder-attention cost, and how fresh the inputs were. Use for "what did the engine do today", "what did it auto-run", "why did it hold that tactic", "show me the decision ledger / cockpit". This is the only tool with the engine's decision history — get_command_center_items shows open cards to act on, not the decision audit trail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many recent decisions to return, newest first (default 25, max 100). | |
| routing | No | Optional filter: AUTO_RUN (the engine ran it autonomously), TEE_UP (held for your approval), or REFUSE_AND_SURFACE (refused — e.g. faith/values content the founder authors). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It describes the tool as a read-only audit feed, explains what data it returns (reason, profit, founder-attention cost, input freshness), and implies it returns a list sorted newest first. No contradictory behavior mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat verbose but front-loads key information and each sentence serves a purpose. Could be tightened slightly, but overall well-structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (audit feed with filters) and no output schema, the description is highly complete. It explains what decisions are tracked, how to filter, and how it differs from related tools, leaving little ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add significant new information about individual parameters beyond what the schema already provides. It rephrases the enum values but does not introduce new constraints or details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as the audit feed of autonomous decisions, listing specific decision types (auto-ran, teed up, refused) and explicitly distinguishes it from sibling tool get_command_center_items which shows open cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit example queries like 'what did the engine do today', 'what did it auto-run', 'why did it hold that tactic' and clearly states when not to use it by contrasting with get_command_center_items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_executive_landscapeInspect
Get a cross-domain view of everything on the user's plate. Shows commitments from all life domains + promoted tactics from all workspaces, grouped by urgency. Use when the user asks "what should I focus on?", "what's on my plate?", "am I dropping anything?", or similar portfolio-level questions.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_financial_summaryInspect
Get P&L summary with revenue, expenses, and net income for the company. For single-month queries (e.g., "Feb free cash flow"), specify month parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Specific month (1-12). If provided, returns data for that month only. If omitted, uses period parameter for range. | |
| period | No | Time period for summary when month is not specified (default: ytd) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| fiscal_year | No | The fiscal year to query (default: current year) |
get_freedom_targetInspect
Get the user's freedom target (monthly income goal to quit day job), current FCF progress, estimated freedom date, and assumptions. Use when user asks about financial independence, freedom, or quitting their job.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_grain_policyInspect
Read the content-grain (wisdom-layer) publish policy for the current company. For each content grain it returns whether an agent may publish that grain autonomously (gate_mode 'autonomous') or must route to a human (gate_mode 'human_pre_gate'), plus curate_only and source_corpus_ref. Use this to understand which content you may publish on your own vs. send for human pre-approval.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_icpsInspect
Get saved Ideal Customer Profiles (ICPs) from Customer Hunter. Use this when the user asks about their target customer, ideal customer, customer avatar, ICP, or who they should be selling to. Returns structured profiles including nightmare scenario, dream outcome, pain points, financial profile, and tech-savviness. Each profile also returns publicName — the public-facing audience label to use in published copy — NEVER the internal persona name/codename (the "name" field is a private targeting label).
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_lead_pipeline_snapshotInspect
Aggregate counts of the Leads CRM (crm_leads) for the current company: active leads by temperature (warm/cold/…/unset) and lifecycle stage, plus do-not-contact and archived totals. THE source of truth for "how many leads do we have and how warm are they" — never estimate or zero-fill lead counts; call this instead. Read-only. Note: paying customers live in Stripe (get_subscription_stats), not here.
Routing: CRM/sales → lead counts or pipeline temperature snapshot → use this
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_monthly_trendsInspect
Get month-over-month financial trends. Shows which accounts are increasing/decreasing.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| fiscal_year | No | The fiscal year to analyze | |
| account_type | No | Filter by account type |
get_my_channel_partner_linkInspect
Get YOUR channel partner student share link (https://getfreedomos.com/start/{slug}) — the classroom start page (copy Claude prompt first, then unlock). Also returns unlockUrl (/p/{slug}) for mid-funnel pay-only if someone already coached. Use when the operator asks for their partner link, UNLOCKED/student share URL, or "how do people join through me". Default students to startUrl, not unlock. Product language: Partner (not affiliate).
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_my_channel_partner_starter_packInspect
Get YOUR classroom starter pack for students: the public share URL (https://getfreedomos.com/start/{slug}) where they copy a one-paste Claude prompt — no skill file, no AirDrop, no terminal. Also returns a short blurb you can text/post and the full student prompt. Use when the operator asks how to send students the FreedomOS handoff, "starter pack", classroom prompt, or UNLOCKED → FreedomOS distribution. Product language: Partner (not affiliate).
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_my_channel_partner_statsInspect
Get YOUR channel partner stats: student share URL (/start/slug), rev-share terms, and referral counts by status (pending/joined/activated/credited). Use when the operator asks how many people came through their link, partner performance, or commission terms. Product language: Partner (not affiliate). Returns empty if not a channel partner.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_my_companiesInspect
List the companies the current operator can act in (their FreedomOS portfolio), with the operator's role in each plus an about line (entity type + what the company is/does). Call this to discover valid companyId values before using company-scoped tools, and use about — not the name — to infer WHICH company the user means; if about doesn't settle it, ask rather than guess.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_my_profileInspect
Get the current user's profile information including name, title, contact info, and personal details.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_next_priorityInspect
Answer "What should I work on?" in two beats: it leads with the single most-actionable pending Command Center card the operator's rail features first (when the queue has one), then the strategic move synthesized from OKRs, the revenue constraint, and active Tactics. Call this when the user asks "What should I work on?" or "What's my priority?" Returns focused recommendations with reasoning.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| focus_area | No | Optional: focus on a specific tactic category | |
| override_constraint | No | Optional operator PIN of the binding revenue constraint. When set, it is SAVED as this company's pin (upsert) and the priority is computed from it instead of the automatic funnel diagnosis. Use only when the operator explicitly overrides the computed constraint. |
get_okrsInspect
List objectives and key results for the company. Defaults to current year unless year specified or all_years=true.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Filter by year (e.g., 2026). Defaults to current year. | |
| limit | No | Maximum number to return (default: 10) | |
| all_years | No | Set to true to get OKRs across all years (overrides year filter) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_page_performanceInspect
Get per-page search performance from Google Search Console — which pages get the most clicks, impressions, and best positions. Use when analyzing content performance or identifying top-performing pages.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date in YYYY-MM-DD format. Defaults to today. | |
| site_url | Yes | The site URL exactly as shown in Search Console | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| row_limit | No | Max rows to return (1-100). Defaults to 25. | |
| start_date | No | Start date in YYYY-MM-DD format. Defaults to 28 days ago. | |
| page_filter | No | Optional: only include pages whose URL contains this string (e.g., "/blog/"). |
get_pending_approvalsInspect
Get content waiting for approval (changelogs, newsletters, etc). Use when user asks "what needs my review?", "pending content?", "what's ready to publish?", or "approval queue". Shows transformed content ready for review before publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum items to return (default: 10) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_product_contextInspect
Returns THIS company's product truth — the operator-authored offer + the SHIPPED, marketable capabilities (what the product does, and what it cannot do). Call this before describing, marketing, pricing, positioning, or selling the product. Ground every product claim in what this returns; never invent capabilities or an offer. If it reports the product is not defined, escalate to the operator instead of guessing.
Routing: product / offer / what we sell / pricing / positioning / marketing or sales copy → call get_product_context FIRST; never fabricate capabilities or an offer
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_product_request_statusInspect
Check status of a product request you previously filed with submit_product_request for your operator. Returns pending | approved | denied | dismissed | completed so you can tell your human when FreedomOS product team decides. Use when you hold a request_id and need an update for the filer.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| request_id | Yes | The request_id UUID returned by submit_product_request |
get_projectionsInspect
Get projected future values from financial forecasts. Shows what revenue/expenses are expected.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| fiscal_year | No | The fiscal year to query (default: current year) | |
| account_name | No | Optional filter to specific account name |
get_reader_profileInspect
Get a team member's READER PROFILE — their per-domain expertise (novice/fluent/expert) that tells agents how to pitch internal cards, summaries, and FYIs to that specific reader. Use when you are about to write a decision card, report, or FYI for a company member and want to match their level (plain language + glossed jargon for novices, peer-level for experts). Reads the caller's own profile by default; pass member_id to read another member of the same company.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| member_id | No | Optional UUID of the company member whose reader profile to read. Defaults to the caller. |
get_release_ledgerInspect
THE tool for "did this piece ship on this channel" — reads the cross-channel Release Ledger, the queryable truth for every confirmed send (X, LinkedIn, hub letters, Beehiiv) written by the publish rail itself at send time. Use this instead of title-matching or a markdown tracking doc when a reconciler or operator asks whether a piece released, where it released, or wants a recent-releases feed. Returns rows plus a per-piece coverage summary (which channels a piece is KNOWN to have shipped on — never a speculative claim about what's missing).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many recent releases to return, newest first (default 50, max 200). | |
| since | No | ISO timestamp lower bound — only releases at/after this time. | |
| channel | No | Filter to one channel. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| piece_key | No | Filter to one piece's releases (e.g. 'output:<pipeline_outputs.id>', 'idea:<content_ideas.id>', 'hub-letter:<slug>'). | |
| released_by | No | Filter by who released it: 'agent', 'human', or 'system'. |
get_routing_overviewInspect
See how agent output is currently routed — who is responsible for which domains in the company.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_search_performanceInspect
Get search performance data from Google Search Console — queries, clicks, impressions, CTR, and average position. Use when the user asks about SEO performance, keyword rankings, organic traffic, or search visibility.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date in YYYY-MM-DD format. Defaults to today. | |
| site_url | Yes | The site URL exactly as shown in Search Console (e.g., "sc-domain:example.com" or "https://example.com/") | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| row_limit | No | Max rows to return (1-100). Defaults to 25. | |
| dimensions | No | Dimensions to group by. Options: "query", "page", "country", "device", "date". Defaults to ["query"]. | |
| start_date | No | Start date in YYYY-MM-DD format. Defaults to 28 days ago. | |
| page_filter | No | Optional filter: only include rows where the page URL contains this string. | |
| query_filter | No | Optional filter: only include rows where the query contains this string. |
get_site_listInspect
List all verified sites/properties in Google Search Console. Use this first to discover which sites are available before querying search performance.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_sitemapsInspect
List all sitemaps submitted to Google Search Console for a property — shows submission status, indexing coverage, errors, and warnings. Use for technical SEO audits and crawl coverage analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | The site URL exactly as shown in Search Console (e.g., "sc-domain:example.com" or "https://example.com/") | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_stripe_metricsInspect
Get Stripe metrics including average/median LTV, MRR, churn rate, active subscriptions, and an AI-recommended CAC target derived from the company's chosen LTV:CAC strategy (see get_cac_strategy / set_cac_strategy). Returns both blended company-wide metrics and per-plan-tier segments (e.g., Solo vs Team) with segment-specific LTV and CAC targets. Use this to guide customer acquisition spend decisions per customer type. Only works if Stripe is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_subscription_statsInspect
Get subscription statistics from Stripe — active, trialing, past-due, and canceled counts plus MRR and ARR. Use alongside get_stripe_metrics for a full revenue picture. Only works if Stripe is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_tacticsInspect
List tactics for the company. Can filter by category or status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tactics to return (default: 10) | |
| status | No | Filter by status | |
| category | No | Filter by category | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_team_membersInspect
Get all team members for the current company. Returns name, email, and role for each member. Use when user asks about team, company members, who is on the team, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_team_pulseInspect
Get a real-time snapshot of team output volume, pending approvals, and founder load. Shows cards per agent, approval velocity, oldest pending items, and load trends. Use this to detect if the founder is being overwhelmed, if agents are producing too much or too little, or if cards are piling up without action.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (default: 7) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_id | No | Company ID to check. Usually auto-injected from context. |
get_team_rosterInspect
Get complete AI team roster with roles, specialties, and capacity info. ALWAYS call this BEFORE recommending hires to check for existing coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_top_customersInspect
Get top customers ranked by lifetime value (LTV) or revenue from Stripe. Returns name, email, LTV, subscription status, and purchase count for each customer. Use this to identify high-value accounts and retention opportunities. Only works if Stripe is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of top customers to return (default: 10, max: 25) | |
| sort_by | No | Sort criteria (default: ltv) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_transactionsInspect
List company transactions with optional filters. Use for expense tracking, transaction review.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default: 25, max: 100) | |
| status | No | Filter by status | |
| date_to | No | End date filter (ISO format) | |
| category | No | Filter by category | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| date_from | No | Start date filter (ISO format, e.g., 2026-01-01) | |
| is_income | No | Filter to income (true) or expenses (false) |
get_voice_profileInspect
Get the company's VOICE PROFILE — the operator's real writing voice the drafting agents ground on (style descriptor, in-voice DOs, out-of-voice AVOIDs, real exemplars, target reading level). Use this before drafting any post, caption, email, or article, for any agent writing on this company's behalf, so the first draft is in-voice — do not rely on brand tone adjectives alone.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
get_xero_reportInspect
Get a LIVE financial report straight from the company's connected Xero ledger: ProfitAndLoss, BalanceSheet, BankSummary, TrialBalance, or ExecutiveSummary. Source of truth for current numbers — prefer this over get_financial_summary (which reads the periodically-processed snapshot) when the user asks about current/live financial position.
Routing: LIVE ledger (Xero): balance sheet / P&L / bank summary straight from the books → use over get_financial_summary for current numbers
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | Which report to pull | |
| to_date | No | Period end / as-at date, YYYY-MM-DD. Defaults to today. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| from_date | No | Period start, YYYY-MM-DD (period reports: ProfitAndLoss, BankSummary) |
get_x_post_metricsInspect
Get engagement metrics for a tweet on X (Twitter). Returns impressions, likes, retweets, replies, quotes, and bookmarks. Use when the user asks "how did my post do?", "check my tweet analytics", or to evaluate content performance.
| Name | Required | Description | Default |
|---|---|---|---|
| tweet_id | Yes | The tweet ID (numeric) or full tweet URL (e.g. https://x.com/user/status/123456) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| pipeline_output_id | No | Optional. The pipeline_output ID to write metrics back to the content card. |
grant_agent_toolInspect
Grant ONE specific tool to an agent's loadout (tool_access). Use when an operator says "give the tool" / "let use ". The tool name is validated against the live registry at write time — phantom names are rejected, deprecated names auto-map to their successor. For wholesale capability re-derivation use recalibrate_agent_jd instead; connector tools auto-provision on connection.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional one-line why — stored in the audit record on the agent's JD. | |
| agent_id | Yes | UUID of the agent receiving the tool. Use get_team_roster to find IDs. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| tool_name | Yes | Exact registry name of the tool to grant (e.g. "capture_idea"). |
hire_agentInspect
DEPRECATED: Redirects to interview_for_hire. All hiring now requires context gathering to create a proper JD. Use interview_for_hire directly when user wants to hire someone.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| role_name | Yes | The role name to hire | |
| specialty | No | Optional specialty domain: marketing, sales, finance, technology, operations |
hire_agent_with_contextInspect
Hire a new specialist with full hiring context gathered from the interview. Use AFTER walking through the interview phases. The richer the context, the better the agent.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | The specific mission this hire will achieve — be as specific as possible, include real numbers | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| obsession | No | The ONE KPI this agent lives or dies by. Must be specific with numbers from the interview (e.g., "Close the $4,200/mo freedom gap") | |
| role_name | Yes | A descriptive role name (e.g., "YouTube Growth Specialist", "Cash Flow Analyst", "SEO Content Writer") | |
| agent_name | No | OPTIONAL. The exact display name the user explicitly asked for — a single first name (e.g. "Garth" from "name it Garth" / "call it Garth"). Set this ONLY when the user named the agent; leave unset to auto-generate a fitting name. NEVER fold the requested name into role_name. | |
| guardrails | No | What this agent should NEVER do (e.g., "Never recommend cutting product investment", "Never ignore cash runway below 3 months") | |
| first_72_hours | No | The 3 specific actions the agent will take immediately after being hired. These become initial tasks. | |
| reports_to_name | No | Name or role of the team member this agent should report to. Use an existing team member name if one is a natural manager. Say "Linnet" for Chief of Staff, or "founder" for direct-to-founder reporting. | |
| success_metrics | Yes | Specific, measurable outcomes that define success | |
| domain_expertise | No | Role-specific domain knowledge that makes this agent an expert (frameworks, ratios, best practices specific to this role and industry) | |
| reporting_cadence | No | How often to send updates: weekly, biweekly, monthly, or realtime | |
| personality_traits | No | Communication style preferences (e.g., "direct", "data-heavy", "encouraging", "concise", "detailed analysis") | |
| required_resources | No | Tools, integrations, or data sources this agent needs. Default documents, briefs, and reports to the FreedomOS Knowledge Base (save_knowledge / read_knowledge — always available, visible in-app); list an EXTERNAL integration (e.g. Google Sheets) only when the role genuinely needs it. Do NOT list Google Docs/Sheets as a default — the agent can request a connector via request_connector and state the limitation until it is granted. | |
| context_and_resources | No | What the user has already tried, existing tools/data/resources available |
ingest_voice_corpusInspect
Build or refresh the company's voice profile from REAL writing. Use this when the operator wants agents to learn their voice from their actual work — pass a URL to their blog / newsletter / posts (or an admired creator's page), or paste sample text. The system fetches it safely, distills the STYLE (cadence, word choice, argument-building — never faith substance), and merges it into the voice profile all drafting agents ground on. For any operator/brand setting up or improving how their content sounds.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | A pasted writing sample to learn from. | |
| urls | No | Public URLs to learn the voice from (SSRF-guarded fetch). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| faith_heavy | No | Mark the sources faith-heavy (style learned, faith substance excluded). | |
| subject_kind | No | Whose voice — 'person' (personal brand) or 'brand'. | |
| subject_name | No | The person or brand name. |
inspect_urlInspect
Inspect a URL in Google Search Console — check indexing status, crawl errors, mobile usability, and rich results. Use for technical SEO audits, diagnosing why pages aren't appearing in search, or checking mobile-friendliness.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | The site URL as shown in Search Console (e.g., "sc-domain:getfreedomos.com" or "https://getfreedomos.com/") | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| inspection_url | Yes | The full URL to inspect (e.g., "https://getfreedomos.com/features") |
interview_for_hireInspect
Research the company and return everything needed to propose a specialist hire in ONE shot. Use when the user wants to hire, needs specialist help, or describes a problem a specialist would own. Returns deep pre-researched company context + a single-proposal directive — NOT a multi-turn questionnaire.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| initial_request | Yes | What the user originally said they needed help with |
invoke_integrationInspect
Execute a tool on a connected MCP integration. First use list_integrations to discover available tools.
[outbound-tier — EVERY call needs a manager's approval (per-send human rail): each request queues its own approval card and sends exactly once on approve. There is no standing grant for this tool.]
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments to pass to the tool | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| tool_name | Yes | Name of the tool to execute on the integration | |
| integration_name | Yes | Name of the integration (e.g., "stripe", "calendar") |
link_agent_okrsInspect
Link an agent to one or more company OKRs. This creates a live connection between the agent and the company objectives they are working toward. Their system prompt will include live OKR context (objectives + key results with progress).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| append | No | If true, add to existing linked OKRs. If false (default), replace all linked OKRs. | |
| okr_ids | Yes | Array of OKR UUIDs to link to this agent | |
| agent_id | No | UUID of the agent to link OKRs to | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | No | Name of the agent (used to look up agent_id if not provided) |
list_ad_accountsInspect
List the Meta (Facebook/Instagram) ad accounts on this company's connection, with status, currency, lifetime spend, and spend cap. Use first when the user asks about their FB/IG ads — the returned id feeds list_ad_campaigns and get_ads_performance.
Routing: Meta/FB/IG ads questions → start here to find the ad account
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_ad_campaignsInspect
List campaigns in a Meta ad account: status, objective, budgets (major currency units), and schedule. Use when the user asks what ads/campaigns are running on Facebook or Instagram. Omit ad_account_id when the connection has exactly one ad account.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| ad_account_id | No | Ad account id from list_ad_accounts (act_<digits> or bare digits). Optional when the connection has exactly one ad account. | |
| effective_status | No | Optional filter, e.g. ["ACTIVE"], ["PAUSED"], ["ACTIVE","PAUSED"]. Omit for all campaigns. |
list_attention_directivesInspect
List pending attention directives for THIS operator (optionally filtered by target_session_id). Hosts (Grok/Claude) and CoS use this to see what is waiting. Does not ack — use ack_attention_directive after acting.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (1–50, default 20). | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| target_session_id | No | If set, only pending directives for this session id. |
list_attention_sessionsInspect
List THIS operator's coding/builder sessions (status, goal, ask). Hygiene: drops stale hosts (no recent heartbeat) and blocked rows without a real ask. Use needs_me=true for "what needs me?" (blocked only). Use before create_attention_directive or when attending a blocked session.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max sessions (1–50, default 30). | |
| needs_me | No | If true, only return blocked_on_operator sessions with a real fresh ask (attend targets). | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| include_stale | No | If true, include sessions that failed freshness hygiene (default false). |
list_commitmentsInspect
List the user's active commitments. Shows what's on their plate across all life domains, sorted by due date.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Filter by domain (optional). E.g., "family", "home", "company:acme" | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| include_completed | No | Include completed commitments (default: false) |
list_corpus_inventoryInspect
List what content material this company already has (knowledge folders like book-1/canon, SME Expert rules, idea_inbox assigned to the workspace). Use BEFORE inventing posts or when the operator asks 'what content do we have?'. Read-only; no LLM. Prefer promote_corpus_to_content next to mint cards.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_customer_evidenceInspect
List ranked REAL Customer Evidence for this company (paying > telemetry > review > relayed > agent_as_user > prospect). Use before customer-facing work or when asked what real customers have said. Empty + company has ICPs = LOUD EMPTY (sim only — do not treat generated ICP as a customer).
| Name | Required | Description | Default |
|---|---|---|---|
| class | No | Optional filter by class. | |
| limit | No | Max rows (default 25, max 100). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_dashboard_widgetsInspect
List all dashboard widgets for a specific agent. Use to see what widgets are currently configured before making changes.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | UUID of the agent whose widgets to list. Defaults to current agent. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_dealsInspect
List CRM deals for the current company. Filter by stage and limit. Returns deals with their associated contacts.
Routing: CRM/sales → see open pipeline → use this
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of deals to return (default 20, max 100) | |
| stage | No | Filter by stage (optional) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| include_closed | No | Include closed deals (default false) |
list_featuresInspect
List all product features in the Feature Index. Use when user asks "what features do I have?", "show my features", "what have I built?", or wants to see their product capabilities for marketing.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status (default: all) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_google_drive_filesInspect
List files in the user's Google Drive. Can filter by type (spreadsheet, document) and search by name.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query to filter files by name | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| file_type | No | Filter by file type | |
| max_results | No | Maximum results to return (default: 10) |
list_inboxInspect
List pending ideas in the user's Ideas. Shows ideas that haven't been triaged yet.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of ideas to return (default: 10) | |
| status | No | Filter by status: new (default), parked, or all pending ideas | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_integrationsInspect
List ALL connected external integrations — MCP servers, OAuth accounts (Google, X, ...), and direct integrations (Xero accounting, Stripe) — and the tools each one powers. Use when user asks about connected services, integrations, or what external tools are available.
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| include_tools | No | Include list of available tools for each integration (default: true) |
list_knowledgeInspect
List all knowledge files and folders saved for this company. Returns file names, slugs, sizes, and folder structure. Use this to discover what knowledge is available before reading or updating.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Optional folder to list contents of (e.g., "acme-deal", "partners"). Omit to list the root level. | |
| search | No | Optional search term to filter files by name | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_my_workInspect
List shared work-graph items (lab_work_items) in the current company — the cross-session shared plan. Defaults to items you created or are assigned; pass scope="company" for the whole company graph. Use to see what is queued, blocked, in progress, or done across sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows (default 50, max 200). | |
| scope | No | mine = items you created or are assigned (default); company = all items in the company. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| status_filter | No | Optional status filter (queued, blocked, claimed, in_progress, gated, published, verified, failed, cancelled). |
list_pipeline_learningsInspect
Show the style guide and recent revision history for a content pipeline. Use when user asks "what are the learnings for my newsletter?", "show me the style guide", "what feedback have I given?", or "what does it know about my preferences?".
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| pipeline_id | Yes | Pipeline ID (get from list_pipelines) | |
| output_format | No | Optional. Filter by output format: changelog, social_post, team_update, newsletter, report. If not specified, shows all formats. |
list_pipelinesInspect
List all content pipelines (changelogs, team updates, reports, customer newsletters, social posts). Use when user asks about their content automation, "what content am I publishing?", "show my pipelines", or "what outputs are configured". Output types: changelog (public product updates), team_update (internal team email via Freedom OS), report (email to specific recipients), customer_newsletter (external customers - requires user Email MCP like Mailchimp), social_post (Twitter/LinkedIn via MCP).
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_scheduled_reportsInspect
List all scheduled reports for this company, optionally filtered by agent. Use when user asks "what reports are scheduled?", "show me our reports", "what reports does X have?"
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | Optional: filter reports by a specific agent UUID | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_segmentsInspect
List the live lead segment tags for the current company with server-computed lead counts (excluding do-not-contact, archived, and test leads). Segments are the exact comma-separated tokens in crm_leads.source (CSV event imports, website, etc.). Read-only — returns tags and counts only, never lead names/emails. Use when the operator asks which lead segments or event tags exist, or before segment_leads to resolve a loosely-named segment to its exact tag.
Routing: CRM/sales → what lead segments/events exist → use this
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
list_workspace_ideasInspect
List ideas that have been assigned to this workspace. Shows triaged ideas for the current company.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of ideas to return (default: 10) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| include_promoted | No | Include ideas that have already been promoted to tactics (default: false) |
list_xero_bank_transactionsInspect
List LIVE bank transactions from the company's connected Xero ledger (paged, 100 per page, newest first). Use for "current bank activity", reconciliation questions, or verifying a specific payment hit the bank.
Routing: LIVE bank transactions from Xero (newest first) → use for current bank activity questions
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-based (Xero pages at 100). Default 1. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| from_date | No | Only transactions on/after this date, YYYY-MM-DD |
list_xero_contactsInspect
List contacts (customers/suppliers) from the company's connected Xero ledger, optionally filtered by a search term (paged, 100 per page). Use when the user or an activity needs who the company invoices or pays — customer/supplier lookups, receivables context, or verifying a counterparty exists in the books.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-based. Default 1. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| search_term | No | Filter by name/email fragment (Xero searchTerm) |
manage_responsibilitiesInspect
Assign, delegate, or revoke responsibility domains for team members. This controls routing — which user receives agent output for specific domains like marketing, finance, etc.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| reason | No | Why the change is happening (e.g., "vacation", "new hire", "role change") | |
| domains | No | Domain names to assign (e.g., ["marketing", "content", "social"]). Use lowercase. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| valid_until | No | ISO date string when delegation expires. Only for delegate action. Omit for permanent assignments. | |
| target_user_email | No | Email of the user to assign/delegate to. Required for assign and delegate. | |
| delegation_from_email | No | Email of the user delegating their responsibilities. Only for delegate action. |
open_product_request_draft_prInspect
Open a draft GitHub PR shell for an approved FreedomOS product request (work ticket branch, no auto-code). Use when product team accepted a low-stakes bug/feature and wants a tracking PR. Do NOT use for questions or high/critical items that need design first.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-dispatch even if a draft_pr is already stamped (default false). | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| request_id | Yes | request_id UUID from submit_product_request |
originate_content_ideasInspect
Surface CONTENT IDEAS from the company's own corpus and land them in the content pool + cards (same owner as promote_corpus_to_content). Use for 'what should I post', blank-page marketing, or when agents would otherwise invent posts. Never invents from nothing; never drafts faith prose.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many ideas (1-3, default 1). Prefer 1 — do not flood the queue. | |
| theme | No | Optional focus theme | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
posthog_hogqlInspect
Run an arbitrary HogQL (SQL) query against PostHog data. Use for custom analysis not covered by other tools. Only works if PostHog is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return (default: 100) | |
| query | Yes | HogQL query string | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
posthog_list_eventsInspect
List all event types tracked in PostHog, ordered by usage. Call this FIRST before building funnels or trends — it shows the actual event names in the user's PostHog. Only works if PostHog is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max events to return (default: 50) | |
| search | No | Search events by name | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
posthog_list_insightsInspect
List existing saved insights in PostHog. Shows names, types, and links. Only works if PostHog is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max insights to return (default: 20) | |
| search | No | Search insights by name | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
posthog_query_funnelInspect
Build and run a funnel analysis in PostHog. Shows step-by-step conversion rates (e.g., signup → onboard → purchase). Only works if PostHog is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | Funnel steps (minimum 2). Each: { id: "event_name", name: "Display Name" } | |
| date_to | No | End date (default: now) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| date_from | No | Start date (default: -30d) | |
| funnel_window_days | No | Days a user has to complete the funnel (default: 14) |
posthog_query_trendsInspect
Query event trends from PostHog (pageviews, signups, DAU, etc. over time). Returns time-series data. Only works if PostHog is connected.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | Events to query. Each: { id: "$pageview", name: "Page Views", math: "total" }. Defaults to $pageview. | |
| date_to | No | End date (default: now) | |
| interval | No | Grouping interval (default: day) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| date_from | No | Start date: "-7d", "-30d", "-90d", "2024-01-01" (default: -7d) |
preview_meta_adInspect
Get a facebook.com preview link for a drafted Meta ad, so the user can see exactly what it will look like before deciding to activate. Use after create_meta_ad_draft or when the user asks to see a drafted ad.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | Numeric ad id (from create_meta_ad_draft output) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
promote_corpus_to_contentInspect
Mint the NEXT content angle(s) from the company's corpus into content_ideas + Command Center cards. Default count is 1 — do NOT bulk-fill the queue. For day-to-day drafting, prefer list_knowledge / read_knowledge (or list_corpus_inventory) to pull one chapter/passage JIT — that avoids re-tokenizing the whole book. Use promote only when a human-facing card is needed (weekly queue, Held post, operator asked). Faith grain: angles only. Never invent from empty corpus.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many angles (1-3, default 1). Prefer 1. | |
| theme | No | Optional focus (e.g. "Harness principles", "pharmacy USP") | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
propose_workInspect
Create a new shared work-graph item (lab_work_items) so it is visible and coordinated across sessions and agents. Set depends_on to gate this item behind others (it starts blocked until they complete). Optionally pre-assign to an agent OR a user.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Kind of work (e.g. task, review, content). Default "task". | |
| title | Yes | Short title of the work item. | |
| payload | No | Optional structured detail for the item. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| depends_on | No | Optional array of lab_work_items UUIDs this item is blocked by. | |
| assignee_user_id | No | Optional auth user UUID to assign (human owner). Cannot be combined with assignee_agent_id. | |
| assignee_agent_id | No | Optional linnet_agents UUID to assign (agent owner). |
publish_pipeline_itemInspect
Publish approved INTERNAL content to configured output. ROUTING: team_update sends to all team members via Freedom OS, report sends to specified team member emails, customer_newsletter requires user Email MCP connection (Mailchimp, Resend, etc.), changelog publishes to public changelog page. ⚠️ For SOCIAL POSTS (X, LinkedIn), do NOT use this tool — use send_to_user with intent "publish" instead so the user sees and approves the content before it goes live.
[outbound-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ID of the approved pipeline output to publish (get from get_pending_approvals, must be approved status) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| recipients | No | Optional. Specific team member emails to send to (must be in company_members). If not specified, sends to all team members. |
query_lead_journeyInspect
Reconstruct the full journey of a lead — what they did on the site, what they signaled, what we have already sent them. Returns structured data that downstream synthesis or drafting tools consume. Use this as the first step before synthesizing a hypothesis about why a lead behaved a certain way or drafting outreach to them.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | UUID of the lead in the leads table. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
query_smeInspect
Query an external Subject Matter Expert (SME) AI for verified domain knowledge. The SME's answers are grounded in verified rules and go through a rigorous verification pipeline — this is NOT a general search, it's consulting a domain expert.
Use this when:
You need factual, verified information for content creation (social media, blog posts, newsletters)
You want to fact-check a claim before publishing
You need talking points grounded in domain expertise
You're creating content about a domain the SME covers
Available SME sources:
"conduit" — Pharmaceutical compounding compliance expert (USP 795/797/800, state regulations)
Routing: pharma / USP 795·797·800 / sterile·non-sterile compounding / BUD / board-of-pharmacy compliance fact you must get right → call query_sme (the verified Conduit SME) to fact-check it BEFORE escalating to a human or deriving the rule yourself; cite its sources
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Optional context about why you're asking — helps the SME give a more relevant answer. E.g., "I'm creating a social media post about cleanroom best practices" | |
| question | Yes | The question to ask the subject matter expert. Be specific and clear. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| sme_source | No | Which Expert to consult, by key. "conduit" (pharmaceutical compounding compliance) is always available; your company may have additional Experts configured. Defaults to "conduit". |
ratify_capabilityInspect
Persist the operator-CONFIRMED derived features (from derive_capability) into the product capability index as source='derived'. Call ONLY with features the operator has ratified — each then becomes an authoritative capability the marketing agents and the Integrity Gate use. Idempotent (re-ratifying updates in place). Derived can't-do limits are drafted for awareness but authored separately for now.
Routing: Operator confirmed the derived features from derive_capability → persist them with this
[sensitive-tier — EVERY call needs a manager's approval (per-send human rail): each request queues its own approval card and sends exactly once on approve. There is no standing grant for this tool.]
| Name | Required | Description | Default |
|---|---|---|---|
| features | Yes | The operator-confirmed features to persist. Each needs a title; description/solves/evidence/feature_id optional. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| scan_hash | No | Optional repo commit SHA the derivation came from (recorded for re-scan reconciliation). |
read_google_docInspect
Read content from an existing Google Doc by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | Google Doc ID (the long alphanumeric string from the URL) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
read_knowledgeInspect
Read a Markdown knowledge file by slug. Slugs are folder-qualified with NO file extension (e.g. "canon/tim-voice-guide", "content-captures/2026-07-06-forgiveness-and-the-debt") — never repo-style paths, never ".md". Returns the full content plus a list of available sections. Use this to load guidelines, SOPs, or strategies before doing work that needs to reference them.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Folder-qualified slug with no extension, e.g. "canon/tim-voice-guide" (from list_knowledge or a save_knowledge result). Never a repo-style path, never ".md". | |
| scope | No | "company" (default) reads a company-shared file; "personal" reads from the current user's private notes. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
read_sheetInspect
Read data from a Google Spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | A1 notation range (e.g., "Sheet1!A1:D10"). Defaults to all data. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| spreadsheet_id | Yes | Spreadsheet ID |
read_web_pageInspect
Read a web page and return its content as clean markdown. Use when the user asks to read, analyze, summarize, or extract information from a specific URL. Also useful for competitor research, checking a website, or reading an article.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full URL to read (must include https:// or http://) | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
reassign_reportsInspect
Reassign all scheduled reports from one agent to another. Use when user says "reassign reports", "transfer reports to [agent]", "move reports from [agent] to [agent]". Useful after deactivating an agent or hiring a replacement.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| to_agent_id | Yes | UUID of the agent to transfer reports TO | |
| from_agent_id | Yes | UUID of the agent to transfer reports FROM |
recalibrate_agent_jdInspect
Regenerate an agent's JD using fresh company context. Updates mission, expertise, guardrails, success metrics, and optionally activity plans. Works for both hired agents and Linnet. Use when the company has evolved, an agent needs recalibration, or the user wants to refine an agent's direction.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | UUID of the agent to recalibrate. Use get_team_roster to find IDs. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| focus_areas | No | Optional user guidance for recalibration, e.g. "focus more on SEO" or "add financial analysis" | |
| regenerate_activities | No | Also regenerate the activity plan (default: false — preserves evolved activities) |
remove_agent_activityInspect
Retire ONE activity from an agent's plan. Soft-archive (recoverable): the activity is MOVED to jd_content.archived_activities and removed from the live plan, so the agent stops running it. Never hard-deletes.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for retiring (recorded on the archive + audit log). | |
| agent_id | No | UUID of the agent. Optional if agent_name is provided. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | No | Name of the agent. Provide this or agent_id. | |
| activity_name | No | EXACT (case-insensitive) name of the activity to retire. Provide this or activity_index. | |
| activity_index | No | 0-based index into the activity plan. Alternative to activity_name. |
remove_backgroundInspect
Remove the background from an existing image, leaving the main subject isolated on a transparent background (PNG).
Routing: "isolate the subject", "make background transparent", "remove background" → use this (1 credit)
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Optional Media gallery folder to file this into (freeform name, e.g. "q3-campaign" or "brand-assets"). Shown as a folder chip on the /media page. Reuse an existing folder name when the work belongs to it. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| image_url | No | URL of the raster image to process. | |
| artifact_id | No | ID of an existing artifact from the MEDIA block. | |
| folder_name | No | Subfolder name for Drive save. | |
| save_to_drive | No | If true, saves to Drive. |
remove_dashboard_widgetInspect
Remove a widget from an agent dashboard.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| widget_id | Yes | UUID of the widget to remove |
report_feedbackInspect
Report an error, issue, observation, or suggestion you encountered during your work. Use this proactively when you notice something noteworthy — tool failures, recurring problems, quality issues, or improvement ideas. This helps the founder track and act on agent insights over time.
Routing: For issues YOU observe doing tenant work (tool failures, quality patterns) — lands in the operator's own observability feed. If the operator is reporting that FreedomOS ITSELF is broken or missing a capability, route to submit_product_request instead — that one reaches the FreedomOS product team.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short summary of the issue (1 line). Be specific — "Buffer API returns 429 on image posts" not "API error". | |
| category | Yes | Type of feedback. error = something broke. warning = something might break. observation = pattern noticed. suggestion = improvement idea. blocker = cannot complete task. | |
| severity | No | How urgent this is. Default: medium. Use critical only for data loss or security issues. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| tool_name | No | The tool that was involved, if applicable (e.g., "generate_image_xai", "post_to_x"). | |
| description | Yes | Detailed explanation. Include: what happened, what you expected, what you tried, and any error messages or codes. | |
| context_json | No | Optional JSON-encoded structured context (error codes, retry counts, URLs, timestamps, etc.). Example: "{\"status\":429,\"retries\":3}". |
request_attention_spawnInspect
Request a NEW local coding session from voice/chat (tab spawn). Queues a sticky for the desk launcher on THIS operator's machine (host must run attention-launcher). Use when they say "start a Grok/Claude on …", "new build for …", "open a session for …". Does not open a cloud IDE — the local launcher opens Terminal + announces + optional first directive.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory on the operator machine (e.g. /Users/…/GitHub/freedom-ai). Prefer absolute paths they already use. | |
| goal | Yes | One-line goal for the new session (1–500 chars). | |
| host | Yes | Which builder to open: grok (Terminal) | claude-desktop (Claude.app Code — preferred) | claude-code (Terminal CLI) | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| session_id | No | Optional stable session id; default auto-derived from host + project. | |
| first_instruction | No | Optional first work sticky delivered after the new session announces (imperative). |
request_connectorInspect
Request that the operator connect an external integration (MCP connector) so you can use its tools. Provide the connector name from search_connector_registry and a short reason for the capability gap it closes. Creates a one-click approval card for the operator. If the connector is NOT on the vetted allowlist, it becomes a "vet this connector" request instead. This does not connect anything by itself and never spends money.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why you need it — the capability gap it closes (e.g. "run the KDP book ad campaign"). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| connector | Yes | Name of the connector to request (from search_connector_registry, e.g. "Amazon Ads"). |
request_content_revisionInspect
Request changes to a content item. Use when user says "revise this", "change the tone", "make it shorter", or provides feedback on pending content. The content will be re-transformed with their feedback.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | ID of the pipeline output to revise (get from get_pending_approvals) | |
| feedback | Yes | User's feedback on what to change (e.g., "make it shorter", "more professional tone") | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
resolve_brand_guideInspect
Draft a first brand guide (personality tone, visual/positioning dos and donts) EXTRACTED from the company's own canon documents, with a verified receipt (quote + source doc) on every proposed item. Proposes only — never saves anything; the user reviews the receipts and accepts, then the accepted items are applied via update_brand_guidelines. Use when the user accepts an offer to build their brand guide from existing material, or explicitly asks to assemble a brand guide from what is already on file. For a company with no material on file, this returns nothing — ask instead.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
resolve_workInspect
Mark a shared work-graph item resolved — verified (default), published, or cancelled. In the full system, resolving an item cascades to unblock items that depend on it, so this is a process-initiator. Optionally record a verified_outcome.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Terminal status (default "verified"). | |
| outcome | No | Optional structured verified_outcome to record. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| work_item_id | Yes | UUID of the lab_work_items row to resolve. |
retire_featureInspect
Archive (retire) a feature so it stops showing to readers and agents, or restore a previously retired one. Safe-archive ONLY — never hard-deletes; retiring is fully reversible. Use when a feature is no longer accurate, was replaced, or the user says "remove this feature", "retire X", or "un-retire X".
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional note on why this feature is being retired. | |
| restore | No | Set true to un-retire (restore) a previously archived feature. Default false. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| feature_id | Yes | The feature_id slug (e.g., "ai-content-pipeline") or UUID. |
revoke_agent_toolInspect
Remove ONE specific tool from an agent's loadout (tool_access). Use when an operator says "take away from " — or to clean a phantom/stale name out of a loadout (unresolvable names ARE removable here, unlike grant). Reports honestly when the name was not present, and when the tool is a universal base tool the runtime keeps available regardless.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | UUID of the agent. Use get_team_roster to find IDs. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| tool_name | Yes | Exact loadout entry to remove (phantom/stale names allowed). |
run_quality_checkInspect
Evaluate content or media against your ICP persona using Gemini 3.1 Pro vision. Actually SEES images and WATCHES videos. Returns quality scores (1-10) across 6 dimensions + specific ICP feedback. Use after generating media or drafting content to validate quality before delivering to the user.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | What this deliverable is for (e.g. "X post about Freedom OS launch"). Gives the ICP evaluator context. | |
| content | No | Text content to evaluate (X post copy, email draft, newsletter). Can be combined with artifact_id for text + visual evaluation. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| artifact_id | No | ID of a specific artifact to evaluate (from generate_image or generate_video result). If omitted, auto-finds the most recent media artifact. |
run_tacticInspect
Run a saved growth tactic NOW by dispatching it to its agent as a one-off background activity, then return immediately (the work lands as a draft for review). Use this when you or an agent want to ACT on a saved tactic this cycle — e.g. execute one of generate_tactics' ideas — instead of leaving it as a plan; it resolves the agent from the tactic's lane, a passed agent_name, or the tactic's assignee.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| tactic_id | No | UUID of the growth tactic to run (use this or tactic_title). | |
| agent_name | No | Optional: override which agent runs it (else resolved from the tactic's lane or assignee). | |
| tactic_title | No | Title (or fragment) of the tactic to run (use this or tactic_id). |
save_artifactInspect
Save an artifact (screenshot, analysis, report) to the company archive. Use after browse_url to persist visual evidence, or to save any agent-produced artifact for future reference.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short descriptive title for the artifact | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| source_url | No | URL the artifact relates to (if applicable) | |
| description | No | What this artifact shows or contains | |
| storage_path | No | Storage path where the file was uploaded | |
| artifact_type | Yes | Type of artifact being saved | |
| metadata_json | No | Optional JSON-encoded metadata (scores, analysis results, etc.). |
save_knowledgeInspect
Save a Markdown knowledge file. Use for guidelines, SOPs, strategies, playbooks, meeting notes, contact lists, trackers, or any reference material that agents read and update over time. Pass scope="personal" to save private notes visible only to the current user (e.g., notes tied to their commitments).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Optional custom slug for the filename. If omitted, auto-generated from the title. | |
| scope | No | Where to save: "company" (default) = shared with the whole company; "personal" = private to the current user only. Use "personal" for notes tied to a specific person (e.g., context for the user's commitments, 1:1 notes, personal preferences, gift ideas, family info). Use "company" for shared SOPs, brand guides, strategy docs. | |
| title | Yes | Descriptive title for this knowledge file (e.g., "Acme Mascot Guidelines", "Content Strategy Q1") | |
| folder | No | Optional folder to save the file in (e.g., "acme-deal", "partners/acme"). Folders are auto-created. Use for organizing related files, especially for deal rooms or shared contexts. | |
| content | Yes | 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. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| override_duplicate_reason | No | ONLY after the canon gate refused this save as a duplicate: a specific reason why this file is NOT a duplicate of the canonical file the refusal named. Overrides are logged and visible to the operator — never use this to bypass the gate casually. |
scan_product_signalsInspect
Scan a company for product-system bugs and unlocks (failed/timed-out activity runs, blocked_on_you cards, open error agent_feedback) and return ranked product-request candidates for the FreedomOS product team. Use when the product team is hunting class bugs/unlocks across a portfolio tenant (dry-run by default; set file_top_n to file up to 5 bug cards). Does NOT invent feature fantasy — bias is bugs/unlocks only. For FreedomOS product-inbox members only.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_id | Yes | Tenant company_id to scan (e.g. …_the-optimal-company- or a portfolio co). | |
| file_top_n | No | If >0, file the top N signals as product_request decision cards (max 5). Default 0 = dry-run only. | |
| lookback_days | No | How far back to look (1–60, default 14). |
search_ad_targetingInspect
Search Meta's ad-interest targeting catalog (returns interest ids + audience sizes). Use when designing a Meta ad draft and you need valid {id, name} targeting pairs for create_meta_ad_draft — e.g. search "pharmacy" or "compounding".
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Interest keyword, e.g. "pharmacy", "healthcare compliance" | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
search_connector_registryInspect
Search the vetted connector registry for an external integration (MCP connector) you need but that is not yet connected. Returns ONLY FreedomOS-allowlisted connectors (e.g. ad platforms, analytics) — never the open internet. Use this when you hit a capability gap, then call request_connector with the name to ask the operator to connect one.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional keyword to filter by name or capability (e.g. "ads", "amazon", "analytics"). Omit to list the whole vetted catalog. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
search_conversationsInspect
Search past conversations with the user. Use when the user says "remember when we talked about...", "haven't we discussed X before?", "what did we decide about...", or references any prior conversation. Returns matching conversations with relevant message snippets. Does NOT return the current conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max conversations to return (default: 5, max: 10) | |
| query | Yes | Search terms — keywords, topics, or phrases from the conversation the user is referencing | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
search_transactionsInspect
Search transactions by description. Use when user asks about specific vendors, expenses, or payments.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 10) | |
| query | Yes | Text to search for in transaction descriptions | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
segment_leadsInspect
Organize, select, or clear a lead segment on the Leads tab by its exact source tag (e.g. 'csv:apc-cch-2024'). Validates the tag against the company's live segment tags and returns the exact-token filter plus a server-computed lead count (excluding do-not-contact, archived, and test leads). Read-only: the Leads tab applies the action; this tool changes no data and CANNOT enroll anyone — enrollment only happens via the Enroll button on the Leads tab. Use when the operator wants to focus the Leads tab on one segment or event — group it, select all its leads for enrollment, or clear that selection.
Routing: CRM/sales → select or organize leads by segment/event tag → use this
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 'organize' = group Leads tab by this segment; 'select' = select all leads in it; 'clear' = clear that selection. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| segment_tag | Yes | Exact segment tag token from crm_leads.source, e.g. 'csv:apc-cch-2024'. No substring matching — must match a live tag exactly. |
send_emailInspect
Send an outbound email via the company's Resend connection. Resolves the per-company Resend API key + from identity, then sends to a single recipient. Honors the do_not_contact suppression list (crm_leads): if the recipient is marked do_not_contact, the send is refused. RECIPIENT RULE: when emailing a CRM LEAD, do NOT type their address yourself — draft with draft_lead_email/draft_outreach and deliver with send_lead_draft, which reads the lead's real email from the database. Only pass to directly for a non-lead recipient whose exact address the operator literally provided in this conversation. NEVER guess, infer, or fabricate an email address — a wrong guess sends a real email to a stranger. Use when the operator gives you an exact non-lead recipient address to email; for CRM leads use send_lead_draft instead.
Routing: Send an outbound email to an operator-given address → use this; for CRM leads use send_lead_draft (DB-derived recipient, respects do_not_contact)
[outbound-tier — EVERY call needs a manager's approval (per-send human rail): each request queues its own approval card and sends exactly once on approve. There is no standing grant for this tool.]
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address (single recipient). | |
| from | No | Optional explicit from address (e.g. "Jane <jane@acme.com>"). If omitted, defaults to no-reply@<resolved from_domain>. | |
| html | No | HTML body of the email. Provide html and/or text (at least one is required). | |
| text | No | Plain-text body of the email. Provide text and/or html (at least one is required). | |
| lead_id | No | Optional UUID of the crm_leads row this email targets. Used for telemetry/linking; the do_not_contact check is keyed on (company_id, to) regardless. | |
| subject | Yes | Email subject line. | |
| draft_id | No | Optional UUID of the lead_drafts row being sent. If provided, the Resend email id returned by the send is recorded onto that draft (resend_email_id) so engagement webhook events (opens/clicks/replies via /resend-events) correlate back to it. | |
| reply_to | No | Optional Reply-To address. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_id | No | Company UUID. Optional — defaults to the caller's company context. Used to resolve the Resend key and scope the do_not_contact check. | |
| sequence_id | No | Optional UUID of the outreach_sequences row backing an autonomous warm send. Required ONLY on the outreach-autosend path (executionSource=autonomous_warm); the warm-send gate verifies this sequence is live (send_mode=auto) and the lead is enrolled. Ignored on the human path. |
send_lead_draftInspect
Send an approved outreach draft to its lead via the company's Resend connection, then mark the draft 'sent'. This is the manual human-in-the-loop send: it delivers exactly one lead_drafts row (by id) to the lead's email and records sent_at + resend_message_id. Honors the do_not_contact suppression list (the send is refused if the lead is suppressed). Use after an operator approves a draft in the Leads tab.
Routing: Operator approved an outreach draft and wants to send it → use this
[outbound-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | UUID of the lead_drafts row to send. | |
| reply_to | No | Optional Reply-To address for the outbound email. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
send_slack_messageInspect
Send a message to a Slack channel or direct message to a team member. Use when user asks to "message X on Slack", "send a Slack message", "DM someone on Slack", "post to #channel", etc.
[outbound-tier — EVERY call needs a manager's approval (per-send human rail): each request queues its own approval card and sends exactly once on approve. There is no standing grant for this tool.]
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The message text to send (supports Slack markdown: *bold*, _italic_, etc.) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| thread_ts | No | Optional thread timestamp to reply in a thread | |
| channel_name | No | Slack channel name to post to (without #), e.g., "general", "engineering". Use this OR recipient_name, not both. | |
| recipient_name | No | Name of the person to DM (e.g., "Alex", "Jordan"). Will be looked up via linked accounts or Slack directory. |
set_attention_budgetInspect
Set the founder's attention budget — the maximum pending review cards before they are 'overloaded' (a whole number 1–100; default 7) — for a manager or the founder. Use when the founder (or a manager on their behalf) wants to raise or lower their overload threshold (e.g. "set my overload threshold to 10", "I can handle more pending cards before you flag me", "lower my attention budget to 5"). This is the founder's OWN constraint, so it is gated: an autonomous agent CANNOT change it (surface a recommendation instead); only a human-present company manager can. Always call get_attention_budget first and explain why a change helps the founder.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional rationale for the change (stored with the budget). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| max_pending_cards | Yes | The new ceiling: pending review cards before the founder is overloaded (whole number, 1–100). |
set_cac_strategyInspect
Change this company's LTV:CAC strategy (the acquisition-spend posture): aggressive (2:1, early-stage growth), standard (3:1, recommended default), conservative (4:1, high churn / mature), or enterprise (5:1, long sales cycles). This governs marketing spend, so it is gated: an autonomous agent CANNOT apply it — surface a recommendation instead. Always call get_cac_strategy first and include a clear rationale when proposing a change.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional rationale for the change (stored with the policy). | |
| strategy | Yes | The CAC posture: aggressive (2:1), standard (3:1), conservative (4:1), or enterprise (5:1). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
set_cos_preferencesInspect
Replace THIS operator's full CoS preference block (or clear with empty). Use when they want a full rewrite of saved preferences. Per user_id only — not a global product prompt edit.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| cos_preferences | Yes | Full preferences text (≤2000 chars). Empty string clears. |
set_grain_policyAInspect
Create or update the wisdom-layer publish policy for ONE content grain in the current company. gate_mode 'human_pre_gate' reserves the grain for human approval; 'autonomous' lets an agent publish it directly. A brand-new grain defaults to human_pre_gate (fail-safe). Because this governs an agent's own publishing autonomy, the change routes to operator approval — it does not take effect silently.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Human-readable note on why this grain has this policy. | |
| grain | Yes | The content grain key, lowercase_with_underscores (e.g. faith_values, harness_education, professional). | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| gate_mode | No | 'autonomous' = an agent may auto-publish this grain; 'human_pre_gate' = it must route to a human first. | |
| curate_only | No | If true, an agent may only assemble this grain from source_corpus_ref, never originate de-novo content. | |
| source_corpus_ref | No | For curate_only grains: the corpus an agent may assemble from (e.g. a knowledge collection key). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses write operation, approval requirement, and default policy for new grains. Could mention idempotency or error conditions, but covers key behavioral traits well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two paragraphs, no wasted words. Front-loaded with core action and quickly covers approval implications. Slight redundancy in approval phrasing but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, approval, and key parameters. Lacks mention of behavior on existing policy (overwrite vs error) and potential side effects. With no output schema, return format is unstated but acceptable. Adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds meaningful context on gate_mode (explains effect of each value) and notes the default for new grains. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource (create/update publish policy for one content grain) and distinguishes from sibling get_grain_policy. Explains gate_mode values and default behavior for new grains, making purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context that the change routes to operator approval and explains sensitive-tier approval types (from-now-on vs just-once). Does not explicitly state when not to use or name alternatives, but the unique function is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_meta_ad_statusInspect
Activate or pause a Meta campaign, ad set, or ad. ACTIVATION STARTS REAL AD SPEND and always requires the human (live chat or an approved card) — agents cannot activate. Pausing stops spend. Use after the user has reviewed a draft and explicitly says to launch, or asks to stop a running ad.
[outbound-tier — EVERY call needs a manager's approval (per-send human rail): each request queues its own approval card and sends exactly once on approve. There is no standing grant for this tool.]
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | 'ACTIVE' (starts spend — human only) or 'PAUSED' (stops spend) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| object_id | Yes | Numeric campaign / ad set / ad id |
set_offerInspect
Author or update the company's grand slam OFFER — the operator-authored positioning agents ground all outbound in (the offer half of the product layer). Sets offer (what the company sells + the transformation it promises) and an optional target_summary (who it's for). Capability truth — what the product can and can't actually do — lives in feature_index via create_feature, NOT here; do not list features in the offer.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| offer | No | The grand slam offer + positioning: what the company sells and the transformation it promises. Operator-authored wisdom-like content. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| is_regulated | No | Mark this company/product as operating in a REGULATED category (health, medical, financial). When true, the Integrity Gate treats health/efficacy/financial claims in agent-produced outbound as requiring substantiation before they can ship. | |
| target_summary | No | Optional one-line summary of who the offer is for (the target customer). |
set_revenue_channelsInspect
Declare where this business makes money — stripe, xero, shopify, amazon, ebay, manual invoicing, "none_yet" (pre-revenue), or other (name it). This is OPERATOR TRUTH an agent cannot derive, so it is gated: an autonomous agent CANNOT declare it — only a human (chat) or a graduated MCP operator can. Once declared, agents stop asking to connect Stripe for businesses that don't use it and are routed to the right revenue tool for this company's actual channel(s). Call get_setup_state first — if "Revenue channels" already shows done, only call this again when the operator says it changed.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| channels | Yes | Any that apply: stripe, xero, shopify, amazon, ebay, manual, none_yet, other. "none_yet" is exclusive — if the business is pre-revenue, pass ONLY ["none_yet"]. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| other_label | No | Required when channels includes "other" — the operator's own words for the revenue channel (e.g. "wholesale invoices"). |
submit_content_to_pipelineInspect
Submit manual content to a pipeline for transformation. Use when user says "add this to my changelog", "create a newsletter from this", "transform this content", or provides content to be processed. Content will be transformed using the pipeline's persona and ICPs. Social pipelines publish to the pipeline's declared destination (x/linkedin/instagram/facebook/threads — set via update_pipeline; undeclared defaults to x) after human approval; instagram items REQUIRE media_artifact_ids.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Raw content to transform (updates, notes, announcements, etc.) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| pipeline_id | Yes | ID of the pipeline to submit to (get from list_pipelines) | |
| media_artifact_ids | No | Optional. Artifact IDs (image or video, from generate_image_xai / generate_video, same company) to attach as media on this post. Required for visual social posts — the post publishes with this media attached. Each ID must belong to this company. |
submit_product_requestInspect
File a bug report or feature request with the FreedomOS product team. Use when you (or your operator) hit a product bug, need a missing capability, or have a product question. Creates a Command Center card for the product team and returns a request_id you can poll with get_product_request_status. Do NOT use for tenant-internal tasks (hire agents, send email, etc.).
Routing: When the USER says something in FreedomOS itself is broken, missing, or confusing ("this button does nothing", "I wish it could…"), this is the tool — it is their support channel. TRIAGE FIRST, briefly: if your own tools can resolve it right now (a reconnect, a setting, the wrong page), fix it and say so instead of filing — filing a bug is never an exit from work you can finish yourself. Cap triage at one or two quick checks, never a debugging quest. An explicit "file it" from the user always wins: file immediately, no pushback — and fold whatever you ruled out into the description (it makes the report stronger). Pull title/repro from the conversation (never make them fill a form), and TELL them you filed it and that they will hear back when the product team decides. For errors YOU hit doing tenant work, use report_feedback instead.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | bug = something broken; feature = missing capability; question = product/how-to for the FreedomOS team. | |
| title | Yes | One-line summary. Specific: "Connect CTA dumps to Smart Tools instead of OAuth" not "bug". | |
| severity | No | Default medium. critical = data loss / security / blocked onboarding. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| description | Yes | What happened / what you need. Include repro steps, expected vs actual, company name, agent name if relevant. | |
| repro_steps | No | Optional numbered repro steps. | |
| suggested_fix | No | Optional: what a good fix would look like (agent hypothesis — product team decides). | |
| source_agent_name | No | Optional: which of the operator's agents hit this (e.g. "Linnet", "Morgan"). |
suggest_collaborationInspect
Create a cross-agent collaboration request. Use when one agent identifies work that another agent should handle, or when the analysis reveals a gap that could be filled by an existing team member. If the target role doesn't exist on the team, mention it as a hiring opportunity instead.
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | How urgent is this collaboration request | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| to_agent_name | Yes | Name of the target agent, or a role description if the agent doesn't exist yet | |
| from_agent_name | Yes | Name of the agent suggesting the collaboration (e.g., "Maya", "Evan") | |
| task_description | Yes | What needs to be done — specific and actionable |
suggest_next_hireInspect
Analyze team gaps and recommend hires or routing to existing agents. Use when user asks "who should I hire", "who to hire next", "what roles do I need", "hiring recommendations", "grow my team", "next hire".
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
sync_stripe_conversionsInspect
Record won deals from the company's connected Stripe so lead→paid conversion becomes measurable. Reads paid Stripe customers (read-only), matches them to leads by email, and records a closed_won deal per paying customer (idempotent — re-running is safe, never double-counts). Only works if Stripe is connected. Use when conversion "isn't measured yet" or to refresh the conversion picture.
Routing: CRM/sales/revenue → measure conversion / record won deals from Stripe → use this
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
synthesize_lead_hypothesisInspect
Given a lead journey (from query_lead_journey), produce a structured hypothesis: intent score, conversion-failure mode, suggested outreach angle, and notes for drafting. Writes the synthesis back to leads.synopsis_jsonb so the Leads tab UI sees it. Use this after journey reconstruction, before draft_outreach.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | UUID of the lead. Used to persist synthesis back to leads.synopsis_jsonb. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| journey_json | Yes | JSON-encoded journey object returned by query_lead_journey. Caller should JSON.stringify the journey output before passing. | |
| company_context | No | Optional short summary of the company the lead arrived at (e.g., 'Acme Health — pharmacy compounding compliance consulting for US pharmacies'). Helps the model evaluate fit. |
toggle_agent_scheduleInspect
Pause or resume an agent's scheduled activities — the whole activity plan, or a single activity via activity_name. Pausing stops future scheduler-dispatched runs until resumed; manual trigger_agent_activity still works and in-flight runs are not affected.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | pause or resume | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | Yes | Name of the agent whose schedule to toggle | |
| activity_name | No | Optional: pause/resume only this one activity (exact name, case-insensitive). Omit to affect the agent's whole activity plan. |
triage_ideaInspect
Assign an idea to one or more workspaces. Can identify by content snippet, ID, or "newest"/"latest".
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| workspace_id | No | Single workspace/company ID (use workspace_ids for multiple) | |
| workspace_ids | No | Array of workspace/company IDs to assign the idea to | |
| idea_identifier | Yes | How to find the idea: UUID, content snippet, or "newest"/"latest" for most recent |
trigger_agent_activityInspect
Trigger a specific agent to run a specific activity immediately. This dispatches the work and returns — it does not wait for the activity to complete. Use this to direct agents to take action.
[sensitive-tier, initiates a multi-step agent process — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. A specific instruction for THIS run only — e.g. "only reconcile the X reply queue, skip everything else". When given, it becomes this run's goal and takes priority over the activity's standing description. Omit for a normal run. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | Yes | Name of the agent to trigger (e.g. "Aiko") | |
| activity_name | Yes | Name of the activity to run (e.g. "weekly_content_report") |
update_agentInspect
Rename a team member or fix its role/title. Updates an agent's display name and/or role/job-title. Use when the user says "rename X to Y", "call this agent Z", or "fix the title". For changing an agent's mission/skills use recalibrate_agent_jd instead.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New display name — a single first name (e.g. "Garth"). Omit to leave the name unchanged. | |
| role | No | New role / job title (e.g. "Agent Deployment & Quality Reviewer"). Do NOT include the agent name. Omit to leave the role unchanged. | |
| agent_id | Yes | UUID of the agent to update. Use get_team_roster to find IDs. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
update_agent_activityInspect
Edit ONE existing activity in an agent's plan — change its name, description, frequency, tools_used, deliverable, or completion_criteria. Surgical alternative to regenerating the whole plan.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Fields to change. Only the supplied fields are updated. | |
| agent_id | No | UUID of the agent. Optional if agent_name is provided. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | No | Name of the agent. Provide this or agent_id. | |
| activity_name | No | Exact (case-insensitive) name of the activity to edit. Provide this or activity_index. | |
| activity_index | No | 0-based index into the activity plan. Alternative to activity_name. |
update_agent_avatarInspect
Generate or regenerate AI agent profile avatar(s) for a company's AI team. Use when an operator wants to create, refresh, or restyle one or more agents' profile avatars. Single agent: pass agent_id OR agent_name. Several agents: pass agent_ids[] OR agent_names[] in ONE call. Whole team: pass all:true. The tool regenerates EVERY target itself in a single call (1 credit per agent) and returns the real new signed avatar_url for each. Report ONLY the agents listed in the result's regenerated array — never claim or invent an avatar for an agent the tool did not return.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Set true to regenerate avatars for EVERY active agent in the company. Takes precedence over the id/name params. | |
| style | No | Optional style override (e.g., "pixel-art", "watercolor", "geometric"). Overrides company avatar_theme for this generation. | |
| agent_id | No | UUID of a single agent to (re)generate an avatar for. | |
| agent_ids | No | UUIDs of multiple agents to regenerate in ONE batch call. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| agent_name | No | Name of a single agent (used to look up the agent when agent_id is not provided). Must resolve to exactly one active agent. | |
| agent_names | No | Names of multiple agents to regenerate in ONE batch call. Each name must resolve to exactly one active agent (ambiguous names are returned in `failed`). |
update_agent_skillInspect
Create or update a skill (process/procedure) for an agent. Use when a user says "@Marcus here's how I want you to do the cash forecast" or "change how the CFO does the monthly review" or "here's my process for X". Skills teach agents HOW to perform their activities.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | Ordered steps of the process (e.g., ["Pull balances", "Calculate 13-week average", "Flag if runway < 3 months"]) | |
| agent_id | No | UUID of the agent to teach. Optional if agent_name is provided. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| resources | No | URLs, doc names, templates, or other resources (e.g., ["company P&L template"]) | |
| agent_name | No | Name of the agent (e.g., "Marcus"). Used to look up agent_id if not provided. | |
| skill_name | Yes | Short name for the skill (e.g., "13-Week Cash Forecast") | |
| tools_used | No | Tool names referenced in the process (e.g., ["get_cash_position", "create_google_sheet"]) | |
| activity_name | No | Activity this skill backs (e.g., "Weekly Cash Review"). If provided, the skill will be linked to this activity via skill_id. |
update_brand_guidelinesInspect
Update specific fields of the company's brand guidelines (visual identity, naming, positioning). Only modifies the fields you specify - all other data is preserved. Use when the user asks to change colors, tagline, typography, personality/tone, naming rules, or visual dos/donts. For changing how the brand WRITES (voice/cadence), use update_voice_profile instead.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | Only the fields to update. Other fields are preserved automatically. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
update_commitmentInspect
Update fields of an existing commitment — title, domain, due date, consequence, or description. Use when the user says "change the due date on...", "rename that commitment to...", "move X to next week", or otherwise edits something already tracked (not marking it done — use complete_commitment for that).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title. | |
| domain | No | New life domain: personal, family, home, w2, or company:<name>. | |
| due_date | No | New due date in YYYY-MM-DD format. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| consequence | No | New consequence — what happens if this slips. | |
| description | No | New additional details or notes. | |
| title_search | No | Search by title if ID not known (fuzzy match). | |
| commitment_id | No | The UUID of the commitment to update. |
update_companyInspect
Update company profile. Can set mission, vision, elevator pitch, logo, website, or other details.
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Company name | |
| vision | No | Company vision statement | |
| mission | No | Company mission statement | |
| logo_url | No | URL to company logo image | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| website_url | No | Company website URL | |
| elevator_pitch | No | Brief company description (30 seconds) |
update_featureInspect
Update fields on an existing Feature Index entry — title, description, category, solves, limits, or demo_url. Use when the user wants to correct or enrich a feature's marketing copy. To change status use update_feature_status; to remove a feature from view use retire_feature — never delete.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Display title (e.g., "AI Content Pipeline") | |
| limits | No | Current limitations | |
| solves | No | Problems/pain points this feature solves | |
| category | No | Category (e.g., "ai", "marketing", "finance", "automation") | |
| demo_url | No | URL to a demo video (Screen Studio, Loom, etc.) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| feature_id | Yes | The feature_id slug (e.g., "ai-content-pipeline") or UUID. | |
| description | No | Marketing-ready description of the feature |
update_feature_statusInspect
Mark a feature as ready for marketing. Use when user says "mark X as ready", "this feature is ready to market", or wants to highlight a feature for marketing content.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | New status for the feature | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| feature_id | Yes | The feature_id slug (e.g., "ai-content-pipeline") or UUID |
update_finance_noteInspect
Add or update a note on a P&L account row. Use this to annotate accounts with context like "Includes annual contract renewal" or "One-time consulting fee in June".
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | Note text to set on the account (empty string to clear) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| fiscal_year | No | Fiscal year (default: current year) | |
| account_name | Yes | Account name to annotate (fuzzy matched) |
update_google_docInspect
Append new content to an existing Google Doc.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | Google Doc ID to update | |
| content | Yes | Content to append to the document | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
update_icpInspect
Update specific fields of a saved Ideal Customer Profile (ICP). Only modifies the fields you specify - all other data is preserved. To change the public audience label used in published copy, pass publicName in updates (the public-facing label — NEVER the internal persona name/codename); the internal "name" stays the private targeting label.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| icp_id | Yes | The unique ICP ID from get_icps response. | |
| updates | Yes | Only the fields to update. Other fields are preserved automatically. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
update_key_resultInspect
Update a key result. Can rename it, or update progress, assignment, due date, or other fields. You can identify the KR by title (preferred) or by ID — resolution uses the EXISTING title even when you are also renaming it in the same call.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New display title for the key result (rename) | |
| due_date | No | Due date (YYYY-MM-DD format) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| start_date | No | Start date (YYYY-MM-DD format) | |
| assigned_to | No | User ID to assign this KR to. Use "me" or "current_user" to assign to the current user. | |
| objective_id | No | ID of the parent objective (optional if using objective_title) | |
| target_value | No | Target value to achieve | |
| current_value | No | Current progress value | |
| key_result_id | No | ID of the key result (optional if using key_result_title) | |
| measure_source | No | 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. | |
| objective_title | No | Title of the parent objective (use this OR objective_id) | |
| key_result_title | No | Title of the key result to update (use this OR key_result_id) — matched against the CURRENT title, even when also renaming |
update_knowledge_sectionInspect
Update a specific section of a knowledge file by its ## header. If the section exists, its content is replaced. If it doesn't exist, it's appended as a new section. Use this for surgical edits to guidelines or strategies without rewriting the entire file.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug of the knowledge file to update | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| new_content | Yes | The new Markdown content for this section (replaces everything between this ## and the next ##). Use proper Markdown: blank lines between paragraphs, - for list items, ### for sub-headers. Never use **bold** as a substitute for headers. | |
| section_header | Yes | The ## section header to find and replace (case-insensitive). If not found, appended as a new section. |
update_leadInspect
Edit an existing lead in the Leads CRM (crm_leads): name, email, phone, location, do-not-contact flag/reason, lifecycle state (new/active/flagged/archived), or the synopsis fields (title, company_name, tags, notes). Identify the lead with lead_id or email_lookup. Moving state to 'flagged' or 'archived' REQUIRES state_reason. Archiving sets archived_at (safe-archive, reversible — move state off archived to restore it). If the lead's outreach is set to auto and you move it off 'active', outreach is demoted back to manual (auto-outreach is only valid while active). Use when the operator or an agent needs to fix or maintain lead data — wrong email, bad name, DNC request, or a lifecycle move — instead of telling the user to edit it in the UI.
Routing: CRM/sales → edit a lead's fields, status, or DNC flag → use this (NOT update_lead_status/log_activity — those are removed)
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New full name. | |
| tags | No | Replacement tag list — folded into synopsis_jsonb.manual_entry. | |
| No | New email (normalized to lowercase/trim). Rejected if it already belongs to another lead in this company. | ||
| notes | No | Notes about the lead — folded into synopsis_jsonb.manual_entry. | |
| phone | No | New phone number. | |
| state | No | New lifecycle state. state_reason is REQUIRED when moving to 'flagged' or 'archived'. | |
| title | No | Job title — folded into synopsis_jsonb.manual_entry (other manual_entry keys are preserved). | |
| lead_id | No | UUID of the lead to update. Provide this OR email_lookup. | |
| location | No | New location. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_name | No | Company they work for — folded into synopsis_jsonb.manual_entry. | |
| email_lookup | No | The lead's CURRENT email, used to find it. Provide this OR lead_id. | |
| state_reason | No | Reason for the state change. Required when state is 'flagged' or 'archived'. | |
| do_not_contact | No | Set true to flag the lead do-not-contact (excluded from outreach); false to clear it. | |
| do_not_contact_reason | No | Reason for do_not_contact, e.g. 'customer', 'churned', 'opted_out'. |
update_meta_ad_budgetInspect
Change the daily budget of a Meta ad set (account currency, major units; structural cap applies). Moves real money, so it always requires the human — agents cannot change budgets. Use when the user explicitly asks to raise or lower spend on a campaign.
[outbound-tier — EVERY call needs a manager's approval (per-send human rail): each request queues its own approval card and sends exactly once on approve. There is no standing grant for this tool.]
| Name | Required | Description | Default |
|---|---|---|---|
| adset_id | Yes | Numeric ad set id | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| daily_budget | Yes | New daily budget, account currency major units | |
| ad_account_id | No | Optional — for currency resolution when several accounts exist |
update_my_profileInspect
Update the current user's profile. Can set name, title, phone, linkedin, location, zone of genius, or quiet hours (the do-not-disturb window for agent push alerts).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| phone | No | Phone number | |
| title | No | Job title (e.g., CEO, CTO, Marketing Director) | |
| location | No | City, State or Location | |
| quiet_tz | No | IANA timezone for the quiet window, e.g. "America/Los_Angeles". Use the user's own timezone. | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| last_name | No | User's last name | |
| quiet_end | No | Quiet window end, local wall-clock 24h "HH:MM" (e.g. "07:00"). May cross midnight (start after end). | |
| first_name | No | User's first name | |
| founder_why | No | Founder's motivation and purpose | |
| quiet_start | No | Quiet window start, local wall-clock 24h "HH:MM" (e.g. "22:00"). Set together with quiet_end and quiet_tz. | |
| custom_title | No | Custom display title | |
| linkedin_url | No | LinkedIn profile URL | |
| holdco_vision | No | Vision for holding company (executives) | |
| zone_of_genius | No | What the user is uniquely great at | |
| future_self_note | No | Note to future self | |
| profile_image_url | No | URL to profile image | |
| experience_summary | No | Brief summary of professional experience | |
| quiet_hours_enabled | No | Turn the do-not-disturb / quiet-hours window on or off. When on, agent push alerts are held during the window and delivered as one summary at wake. | |
| outbound_routes_to_me | No | The operator's OWN no-manual-outbound preference (S5). true = "I personally do outbound" → the founder-outbound tactic filter is OFF for me; false = "do NOT route founder manual outbound to me" → the filter stays ON. Only the operator can set this for themselves; it is never set on behalf of another user. |
update_objectiveInspect
Update an existing objective's title, description, or year. Identify by objective_id or objective_title (preferred). If the title matches more than one active objective it refuses and lists them — pass objective_id to disambiguate. Use when the operator wants to rename or reword an objective or move it to another year — the OKR edit door for agents.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | New year for the objective (e.g., 2026) | |
| title | No | New title for the objective | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| description | No | New description for the objective | |
| objective_id | No | ID of the objective to update (use this or objective_title) | |
| objective_title | No | Title of the objective to update (use this or objective_id) |
update_pipelineInspect
Update an existing content pipeline. Use when user says "rename my pipeline", "change the pipeline name", "update pipeline settings", or wants to modify pipeline configuration. Can update name, persona, ICPs, output type, or destination.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the pipeline | |
| output | No | New output type | |
| icp_ids | No | New list of ICP IDs to target | |
| persona | No | New persona ID to use for transformations | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| destination | No | 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. | |
| pipeline_id | Yes | ID of the pipeline to update (get from list_pipelines) |
update_pipeline_style_guideInspect
Manually add a style rule to a pipeline. Use when user says "always use bullet points", "never include hashtags", "keep it under 100 words", "use more casual tone", or gives general content preferences.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| style_rule | Yes | The style rule to add (e.g., "Use bullet points for lists", "Keep under 150 words") | |
| pipeline_id | Yes | Pipeline ID (get from list_pipelines) | |
| output_format | Yes | Which format this rule applies to: changelog, social_post, team_update, newsletter, report |
update_projectionInspect
Update projected values for specific accounts and months in the financial plan. Use this when the user asks to change a projection, forecast, or budget number. Only current and future months can be updated — past months with bank actuals are protected. IMPORTANT: If an account already has non-zero values, you must specify mode="add" to add on top of existing values, or mode="set" with force=true to replace. Without these, the tool will return the current values and ask for clarification.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | How to apply the value. "set" = replace existing value (default). "add" = add on top of existing value. | |
| force | No | When mode="set", skip the overwrite confirmation for non-zero values. Use only when user explicitly wants to replace existing values. | |
| updates | Yes | Array of month+value pairs | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| fiscal_year | No | Fiscal year to update (default: current year) | |
| account_name | Yes | Account name to update (must match closely, e.g., "Software Revenue", "AWS Hosting"). Use get_projections to see exact names first. |
update_reader_profileInspect
Update a team member's reader profile — set their baseline level or per-domain expertise (novice/fluent/expert) so future internal cards and summaries are pitched right for them. Use when a member tells you their level (e.g. Alex is expert in regulatory compliance but a novice in SEO), or when a manager onboards a new reader (e.g. set an intern to novice). Only modifies the fields you pass; all other data is preserved.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| domains | No | Per-domain expertise map, e.g. { "797_compliance": "expert", "seo_aeo": "novice" }. Merged into the existing map. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| member_id | No | Optional UUID of the member to update. Defaults to the caller. A non-self target requires you to be a company admin/owner. | |
| default_level | No | Baseline expertise for domains not explicitly listed. | |
| glossary_seen | No | Jargon terms already glossed for this reader (replaces the list). |
update_sheetInspect
Update specific cells in a Google Spreadsheet.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | A1 notation range to update (e.g., "Sheet1!A1:B5") | |
| values | Yes | New values for the range | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| spreadsheet_id | Yes | Spreadsheet ID |
update_tacticInspect
Update an existing tactic. Can identify by title instead of ID. Can modify title, description (the how-to / instructions), status, category, assigned_to, or re-bind it to an OKR key result (objective_id / linked_kr_id).
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | New title | |
| status | No | New status | |
| category | No | New category | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| tactic_id | No | ID of the tactic to update (optional if using tactic_title) | |
| assigned_to | No | User ID or "me"/"current_user" to assign to | |
| description | No | New description | |
| linked_kr_id | No | Key-result id the tactic most advances (validated against the company OKRs; takes precedence over objective_id, and its parent objective is derived). Unresolvable → binding cleared to null. Omit to leave the existing binding untouched. | |
| objective_id | No | OKR objective UUID to re-bind this tactic to (validated against this company); its most off-track key result is chosen. Unresolvable → binding cleared to null. Omit to leave the existing binding untouched. | |
| tactic_title | No | Title of the tactic to update (use this or tactic_id) |
update_transaction_noteInspect
Add or update a note on a specific transaction. Use after pulling transactions to annotate individual items.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | Note text to set on the transaction (empty string to clear) | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| transaction_id | Yes | Transaction ID (from get_transactions output) |
update_voice_profileInspect
Update the company's voice profile. Only modifies the fields you specify; all other data is preserved. Use when the operator wants to tune their voice — add/refine an in-voice DO or an out-of-voice AVOID, adjust the style descriptor, set a target reading level, or set whose voice it is.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | Only the fields to update. Others are preserved. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. |
upsert_attention_sessionInspect
Emit or update thin session telemetry for THIS operator (host coding agent self-announce). Use when YOU are Grok or Claude Code at session start / status change so voice CoS can list_attention_sessions and target you. Prefer tiny goals; never dump transcripts.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Optional working directory | |
| goal | No | One-line goal | |
| host | No | claude-code | claude-desktop | grok | manual | slack | github | freedomos | other | |
| status | No | running | blocked_on_operator | done | parked | unknown (blocked_on_tim accepted as alias) | |
| project | No | Optional project name | |
| priority | No | Optional priority (higher = sooner) | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| company_id | No | Optional company id | |
| session_id | Yes | Stable session id (same string used as target_session_id for directives). | |
| ask_for_operator | No | If blocked: one sentence the operator must answer |
vectorize_imageInspect
Convert an existing raster image (PNG, JPG, WebP) to SVG vector format using Recraft. Preserves details and creates clean vector paths.
Routing: "vectorize this", "convert to SVG", "make scalable" → use this (1 credit)
[sensitive-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Optional Media gallery folder to file this into (freeform name, e.g. "q3-campaign" or "brand-assets"). Shown as a folder chip on the /media page. Reuse an existing folder name when the work belongs to it. | |
| companyId | Yes | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| image_url | No | URL of the raster image to vectorize. Use a signed URL from the MEDIA IN THIS CONVERSATION block or any accessible image URL. | |
| artifact_id | No | ID of an existing artifact from the MEDIA IN THIS CONVERSATION block. The system will resolve a fresh signed URL automatically. | |
| folder_name | No | Subfolder name for Drive save. Only used when save_to_drive is true. | |
| save_to_drive | No | If true, also save the vectorized SVG to Google Drive. Defaults to false. | |
| isolate_subject | No | Smart Workflow: If true, the tool will automatically remove the background to isolate the subject BEFORE vectorizing. Defaults to true. Set to false ONLY if you want to vectorize the entire scene including the background. |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!