# FutureSense (npm · futuresense-mcp)

Invoicing, CRM, accounting, payroll, booking and AI content tools for FutureSense apps.

- Trust score: 68/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- remote · `mcp.futuresenseai.com`: 36/100, [markdown](https://verifymcp.io/servers/sams3595-futuresense-mcp/mcp.md), [page](https://verifymcp.io/servers/sams3595-futuresense-mcp/mcp)
- npm · `futuresense-mcp`: 68/100 (this document), [markdown](https://verifymcp.io/servers/sams3595-futuresense-mcp/futuresense-mcp.md), [page](https://verifymcp.io/servers/sams3595-futuresense-mcp/futuresense-mcp)

## Channel facts

- Registry: `npm`
- Package: `futuresense-mcp`
- Version: `2.0.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 93 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 4 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 11670 tokens (~46/item across 249 items; 249 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
- **Tool Safety**: 99/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 25 of 26 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "classify_refund" implies "refund" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 249 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the FutureSense MCP server?

FutureSense runs locally as an npm package, launched with npx -y futuresense-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add sams3595-futuresense-mcp -- npx -y futuresense-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "sams3595-futuresense-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "futuresense-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sams3595-futuresense-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "futuresense-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sams3595-futuresense-mcp -- npx -y futuresense-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sams3595-futuresense-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "futuresense-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sams3595-futuresense-mcp --command npx --arg -y --arg futuresense-mcp
```

### Hermes

```yaml
mcp_servers:
  sams3595-futuresense-mcp:
    command: "npx"
    args: ["-y", "futuresense-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "sams3595-futuresense-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "futuresense-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sams3595-futuresense-mcp -t stdio -c npx -a -y futuresense-mcp
```

### Other

```json
{
  "mcpServers": {
    "sams3595-futuresense-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "futuresense-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-15 (score 68, +30)

- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] First check of Destructive annotations: 96
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 96
- [functional] First check of Schema quality: pass
- [functional] First check of Schema quality: good

### 2026-10-13 (score 38)

First indexed and scored.

## MCP tools (249)

### `get_credit_balance` (~22 tokens)

Check your universal credit balance, usable across all FutureSense apps.

### `get_autocruise_config` (~38 tokens)

Get your auto-reload (AutoCruise) configuration for credits. Shows threshold, package, monthly cap, and current spend.

### `get_autocruise_history` (~62 tokens)

Get your auto-reload history showing past automatic credit purchases, amounts, and statuses.

Input parameters:

- `limit` (number): Max entries to return (default 20, max 100)
- `offset` (number): Offset for pagination (default 0)

### `get_operation_cost` (~68 tokens)

Look up the credit cost for a specific operation. No auth required.

Input parameters:

- `appId` (string, required): App ID (e.g. "invoicer", "ai-caller")
- `operation` (string, required): Operation name (e.g. "ai-generate-text", "create_invoice")

### `list_marketplace_apps` (~38 tokens)

Browse all 33 FutureSense apps with pricing and release status. No auth required.

Input parameters:

- `visibility` (string): Filter by release status

### `get_app_pricing` (~51 tokens)

Get subscription plans and pricing for a specific app. No auth required.

Input parameters:

- `appId` (string, required): App ID (e.g. "invoicer", "booking-system", "ai-caller")

### `get_public_analytics` (~25 tokens)

Get public platform metrics (users, transactions, businesses). No auth required.

### `get_subscription_status` (~31 tokens)

Check subscription status for a specific app.

Input parameters:

- `appId` (string, required): App ID to check subscription for

### `list_all_subscriptions` (~17 tokens)

List all active subscriptions across apps.

### `create_checkout` (~111 tokens)

Create a Stripe checkout session for a subscription plan. Returns a payment URL.

Input parameters:

- `appId` (string, required): App ID to subscribe to
- `cancelUrl` (string): URL to redirect if payment is canceled
- `planId` (string, required): Plan tier (e.g. "starter", "professional", "business")
- `priceId` (string, required): Stripe price ID (e.g. "price_1Q9xyZA10")
- `successUrl` (string): URL to redirect after successful payment

### `get_subscription_invoices` (~27 tokens)

Get billing invoices for subscriptions.

Input parameters:

- `limit` (number): Max invoices to return

### `cancel_subscription` (~88 tokens)

Cancel a subscription for a specific app. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `appId` (string, required): App ID to cancel subscription for
- `confirm` (boolean): Set true only after the user approved the preview
- `reason` (string): Cancellation reason

### `list_connections` (~27 tokens)

List all connected OAuth providers (Google, Microsoft, QuickBooks, Xero, LinkedIn).

### `get_health` (~19 tokens)

Check FutureSense API health status. No auth required.

### `get_plaid_accounts` (~17 tokens)

List connected Plaid bank accounts.

### `get_plaid_transactions` (~58 tokens)

Get bank transactions from Plaid.

Input parameters:

- `endDate` (string): End date (ISO 8601)
- `limit` (number): Max transactions to return
- `startDate` (string): Start date (ISO 8601)

### `get_plaid_balances` (~32 tokens)

Get account balances from a Plaid connection.

Input parameters:

- `connectionId` (string, required): Plaid connection ID

### `get_quickbooks_status` (~42 tokens)

Check QuickBooks integration connection status.

Input parameters:

- `appId` (string, required): App ID to check QuickBooks connection for (e.g. "invoicer")

### `plaid_reassign_entity` (~83 tokens)

Reassign a Plaid bank connection to a different entity (per-account attribution). Use after creating a new entity that should own existing transactions.

Input parameters:

- `accountEntityIdMap` (object): Optional per-account mapping: Plaid account ID → entity ID
- `connectionId` (string, required): Plaid connection ID
- `entityId` (string, required): Target entity ID

### `get_dashboard` (~22 tokens)

Get aggregated dashboard data (revenue, invoices, expenses, contacts).

### `get_ai_summary` (~31 tokens)

Get an AI-generated summary of business metrics and insights.

Input parameters:

- `period` (string): Time period to summarize

### `run_ai_command` (~29 tokens)

Run a natural language command against your business data.

Input parameters:

- `command` (string, required): Natural language command

### `get_setup_status` (~33 tokens)

Check onboarding/setup completion status for an app.

Input parameters:

- `appId` (string, required): App ID to check setup status for

### `get_business_profile` (~22 tokens)

Get the user's business profile (name, address, tax info).

### `update_business_profile` (~83 tokens)

Update business profile fields.

Input parameters:

- `address` (object): Business address
- `businessName` (string): Business name
- `email` (string): Business email
- `industry` (string): Industry/sector
- `phone` (string): Business phone
- `taxId` (string): Tax ID / EIN
- `website` (string): Business website URL

### `get_profile_completeness` (~20 tokens)

Check business profile completeness score and missing fields.

### `get_user_profile` (~21 tokens)

Get the authenticated user's profile (name, email, roles).

### `list_email_templates` (~24 tokens)

List email templates.

Input parameters:

- `limit` (number): Max templates to return

### `create_email_template` (~63 tokens)

Create a new email template.

Input parameters:

- `category` (string): Template category
- `html` (string, required): HTML template body
- `name` (string, required): Template name
- `subject` (string, required): Email subject line
- `text` (string): Plain text fallback

### `get_email_preferences` (~15 tokens)

Get user email notification preferences.

### `list_api_keys` (~18 tokens)

List all API keys for the authenticated user.

### `get_api_key` (~28 tokens)

Get details of a specific API key.

Input parameters:

- `keyId` (string, required): API key ID

### `get_api_key_usage` (~30 tokens)

Get usage statistics for a specific API key.

Input parameters:

- `keyId` (string, required): API key ID

### `revoke_api_key` (~82 tokens)

Revoke/delete an API key. This is irreversible. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `keyId` (string, required): API key ID to revoke

### `get_api_tier_info` (~24 tokens)

Get API key tier limits and available features for the current user.

### `list_transactions` (~51 tokens)

List payment transactions with optional filters.

Input parameters:

- `limit` (number): Results per page
- `page` (number): Page number
- `status` (string): Filter by status (succeeded, pending, failed)

### `check_session_status` (~30 tokens)

Check the status of a Stripe checkout session.

Input parameters:

- `sessionId` (string, required): Stripe checkout session ID

### `list_plans` (~21 tokens)

List all available subscription plans and pricing. No auth required.

### `cancel_flow_get_connections` (~54 tokens)

List all OAuth + Plaid connections for an app, surfaced in the "Before You Go" cancel modal. Plaid returns user-scoped (shared across apps).

Input parameters:

- `appId` (string, required): App being cancelled

### `cancel_flow_revoke_all` (~95 tokens)

Bulk-revoke every connection (OAuth + Plaid) for an app. DESTRUCTIVE — used during cancel flow. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `appId` (string, required): App being cancelled
- `confirm` (boolean): Set true only after the user approved the preview

### `cancel_flow_submit_exit_survey` (~59 tokens)

Capture churn reason from a cancelling user (fire-and-forget).

Input parameters:

- `appId` (string, required): App being cancelled
- `comment` (string): Free-text comment
- `reason` (string, required): Primary churn reason code or label

### `generate_text` (~68 tokens)

Generate AI text with multi-provider failover (Groq, GLM, DeepSeek, Gemini). Requires Bearer token auth.

Input parameters:

- `maxTokens` (number): Maximum tokens to generate
- `prompt` (string, required): Natural language instruction for text generation
- `temperature` (number): Sampling temperature

### `generate_image` (~68 tokens)

Generate AI images via GPT Image 1 or Stable Diffusion. Returns a signed URL. Requires Bearer token auth.

Input parameters:

- `prompt` (string, required): Image description
- `quality` (string): Image quality
- `size` (string): Image dimensions
- `style` (string): Visual style

### `search_image` (~46 tokens)

Search free Unsplash stock photos. Requires Bearer token auth.

Input parameters:

- `orientation` (string): Image orientation
- `query` (string, required): Search keywords (e.g. "modern office")

### `get_provider_status` (~38 tokens)

Get health status of all AI providers (Groq, GLM, DeepSeek, Gemini, DALL-E). Requires Bearer token auth.

### `analyze_churn` (~54 tokens)

Analyze customer churn risk using AI. Uses API key auth.

Input parameters:

- `customerData` (string, required): Customer data or description to analyze for churn risk
- `options` (object): Additional options (usage, engagement, support tickets)

### `generate_kpi_snapshot` (~65 tokens)

Generate a KPI snapshot/report using AI. Uses API key auth.

Input parameters:

- `businessData` (object, required): Key business/metrics data to summarize
- `companyName` (string): Company name
- `department` (string): Department
- `period` (string): Reporting period

### `generate_stock_alert` (~54 tokens)

Generate a stock/inventory alert using AI. Uses API key auth.

Input parameters:

- `inventoryData` (object, required): Inventory data
- `options` (object): Additional options
- `supplierEmail` (string): Supplier email for notifications

### `analyze_contract` (~67 tokens)

Analyze a contract document using AI. Uses API key auth.

Input parameters:

- `contractText` (string, required): Contract text to analyze
- `contractType` (string): Type of contract (e.g. "NDA", "SaaS", "employment")
- `options` (object): Additional options

### `explain_invoice` (~49 tokens)

Get an AI explanation of an invoice (line items, totals, terms). Uses API key auth.

Input parameters:

- `invoiceText` (string, required): Invoice text to explain
- `options` (object): Additional options

### `check_invoice` (~47 tokens)

Validate an invoice for errors, missing fields, or inconsistencies. Uses API key auth.

Input parameters:

- `invoiceText` (string, required): Invoice text to validate
- `options` (object): Additional options

### `scan_receipt` (~45 tokens)

Process and extract data from a receipt using AI. Uses API key auth.

Input parameters:

- `options` (object): Additional options
- `receiptText` (string, required): Receipt text to process

### `enrich_lead` (~50 tokens)

Enrich a lead/contact with AI-gathered information. Uses API key auth.

Input parameters:

- `emailOrUrl` (string, required): Email address or URL to enrich
- `options` (object): Additional options

### `write_outreach` (~59 tokens)

Generate personalized outreach copy using AI. Uses API key auth.

Input parameters:

- `hook` (string, required): Hook or context for the outreach message
- `linkedinUrl` (string, required): LinkedIn profile URL of the recipient
- `options` (object): Additional options

### `create_social_snippet` (~54 tokens)

Create a social media snippet from content. Uses API key auth.

Input parameters:

- `generateImage` (boolean): Whether to also generate an image
- `productOrNews` (string, required): Product description or news to create snippet from

### `generate_seo` (~69 tokens)

Generate SEO metadata (title, description, keywords) for content. Uses API key auth.

Input parameters:

- `inputType` (string): Whether input is a URL or raw content text
- `options` (object): Additional options
- `urlOrContent` (string, required): URL or content to generate SEO for

### `compose_welcome_email` (~64 tokens)

Compose a welcome email for new customers/users. Uses API key auth.

Input parameters:

- `companyName` (string): Company name
- `customerName` (string, required): Customer name
- `options` (object): Additional options
- `planName` (string, required): Subscription plan name

### `polish_testimonial` (~70 tokens)

Rewrite/polish a customer testimonial using AI. Uses API key auth.

Input parameters:

- `customerName` (string): Customer name
- `customerTitle` (string): Customer title
- `generateBadge` (boolean): Whether to generate a badge
- `rawQuote` (string, required): Original testimonial/quote text

### `suggest_pricing` (~47 tokens)

Get AI-powered pricing suggestions for a product/service. Uses API key auth.

Input parameters:

- `options` (object): Additional options
- `pricingText` (string, required): Product/service pricing description to analyze

### `generate_save_offer` (~85 tokens)

Generate a save/retention offer for a churning customer. Uses API key auth.

Input parameters:

- `accountTenure` (string): How long they have been a customer
- `cancellationReason` (string): Stated cancellation reason
- `customerName` (string, required): Customer name
- `options` (object): Additional options
- `planName` (string, required): Current plan name

### `build_faq` (~91 tokens)

Generate FAQ content from product info using AI. Uses API key auth.

Input parameters:

- `industry` (string): Industry
- `numFaqs` (number): Number of FAQ items to generate
- `options` (object): Additional options
- `productInfo` (string, required): Product or service information to generate FAQs from
- `productName` (string): Product name
- `targetAudience` (string): Target audience

### `extract_meeting_notes` (~47 tokens)

Extract structured meeting notes from a transcript using AI. Uses API key auth.

Input parameters:

- `meetingNotes` (string, required): Meeting transcript or raw notes
- `options` (object): Additional options

### `classify_refund` (~69 tokens)

Classify a refund request using AI (reason, risk, recommendation). Uses API key auth.

Input parameters:

- `customerEmail` (string): Customer email
- `feedback` (string, required): Refund request text/feedback
- `options` (object): Additional options
- `orderId` (string): Order ID

### `generate_payment_nudge` (~53 tokens)

Generate a payment reminder/nudge message using AI. Uses API key auth.

Input parameters:

- `options` (object): Additional options
- `paymentInfo` (string, required): Payment information (customer, amount, due date, etc.)

### `convert_quote` (~45 tokens)

Convert a quotation to an invoice using AI formatting. Uses API key auth.

Input parameters:

- `options` (object): Additional options
- `quoteText` (string, required): Quotation text to convert

### `generate_content_ideas` (~60 tokens)

Generate content ideas using AI based on a topic or niche. Uses bearer auth (requires login token).

Input parameters:

- `category` (string): Content category
- `count` (number): Number of ideas
- `targetApp` (string, required): Target app ID

### `format_ai_prompt` (~52 tokens)

Format and optimize an AI prompt for better results. Uses bearer auth (requires login token).

Input parameters:

- `contentType` (string): Content type
- `rawText` (string, required): Raw text to format into a prompt

### `list_contacts` (~78 tokens)

List CRM contacts with optional search and pagination.

Input parameters:

- `cursorCreatedAt` (string): Cursor: createdAt timestamp (ms) from previous page
- `cursorId` (string): Cursor: document ID from previous page
- `limit` (number): Max contacts to return
- `search` (string): Search by name, email, or company

### `get_contact` (~25 tokens)

Get a single CRM contact by ID.

Input parameters:

- `id` (string, required): Contact ID

### `create_contact` (~73 tokens)

Create a new CRM contact.

Input parameters:

- `company` (string): Company name
- `email` (string, required): Contact email address
- `firstName` (string): First name
- `lastName` (string): Last name
- `phone` (string): Phone number
- `tags` (array): Tags for categorization

### `update_contact` (~77 tokens)

Update a CRM contact.

Input parameters:

- `company` (string): Company name
- `email` (string): Email address
- `firstName` (string): First name
- `id` (string, required): Contact ID
- `lastName` (string): Last name
- `phone` (string): Phone number
- `tags` (array): Tags

### `delete_contact` (~22 tokens)

Delete a CRM contact.

Input parameters:

- `id` (string, required): Contact ID

### `send_email` (~65 tokens)

Send an email via the user's connected email provider (Gmail, Outlook, SES).

Input parameters:

- `html` (string, required): HTML email body
- `subject` (string, required): Email subject line
- `text` (string): Plain text fallback body
- `to` (string, required): Recipient email

### `send_bulk_email` (~107 tokens)

Send a bulk email to multiple contacts. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `contactIds` (array, required): Contact IDs to email
- `html` (string, required): HTML email body
- `subject` (string, required): Email subject
- `text` (string): Plain text fallback

### `list_campaigns` (~24 tokens)

List CRM campaigns.

Input parameters:

- `limit` (number): Max campaigns to return

### `create_campaign` (~80 tokens)

Create a new CRM campaign.

Input parameters:

- `contactIds` (array): Target contact IDs
- `html` (string, required): HTML email body
- `name` (string, required): Campaign name
- `scheduledAt` (string): Schedule send time (ISO 8601)
- `subject` (string, required): Email subject
- `tags` (array): Filter contacts by tags

### `crm_get_campaign` (~26 tokens)

Get a specific CRM campaign by ID.

Input parameters:

- `id` (string, required): Campaign ID

### `crm_update_campaign` (~52 tokens)

Update a CRM campaign.

Input parameters:

- `htmlContent` (string): Email HTML content
- `id` (string, required): Campaign ID
- `name` (string): Campaign name
- `subject` (string): Email subject

### `crm_delete_campaign` (~23 tokens)

Delete a CRM campaign.

Input parameters:

- `id` (string, required): Campaign ID

### `crm_cancel_campaign` (~23 tokens)

Cancel a scheduled campaign.

Input parameters:

- `id` (string, required): Campaign ID

### `crm_send_campaign` (~72 tokens)

Send a campaign immediately. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `id` (string, required): Campaign ID

### `crm_update_email_template` (~54 tokens)

Update a CRM email template.

Input parameters:

- `htmlContent` (string): Email HTML content
- `id` (string, required): Template ID
- `name` (string): Template name
- `subject` (string): Email subject

### `crm_delete_email_template` (~25 tokens)

Delete a CRM email template.

Input parameters:

- `id` (string, required): Template ID

### `crm_list_sequences` (~15 tokens)

List all CRM drip sequences.

### `crm_list_active_sequences` (~16 tokens)

List active CRM drip sequences.

### `crm_get_sequence` (~26 tokens)

Get a specific drip sequence by ID.

Input parameters:

- `id` (string, required): Sequence ID

### `crm_create_sequence` (~34 tokens)

Create a new CRM drip sequence.

Input parameters:

- `name` (string, required): Sequence name
- `steps` (array, required): Sequence steps

### `crm_update_sequence` (~42 tokens)

Update a CRM drip sequence.

Input parameters:

- `id` (string, required): Sequence ID
- `name` (string): Sequence name
- `steps` (array): Sequence steps

### `crm_delete_sequence` (~24 tokens)

Delete a CRM drip sequence.

Input parameters:

- `id` (string, required): Sequence ID

### `crm_send_email` (~46 tokens)

Send an email to a contact.

Input parameters:

- `htmlContent` (string, required): Email HTML content
- `subject` (string, required): Email subject
- `to` (string, required): Recipient email address

### `crm_send_bulk_email` (~100 tokens)

Send a bulk email to multiple contacts. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `contactIds` (array, required): Contact IDs to send to
- `htmlContent` (string, required): Email HTML content
- `subject` (string, required): Email subject

### `crm_bulk_delete_contacts` (~76 tokens)

Bulk delete CRM contacts. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `contactIds` (array, required): Contact IDs to delete

### `crm_get_admin_stats` (~15 tokens)

Get CRM admin statistics.

### `crm_get_communication_log` (~43 tokens)

Get communication log, optionally filtered by contact.

Input parameters:

- `contactId` (string): Filter by contact ID
- `limit` (number): Max entries to return

### `crm_get_stats` (~14 tokens)

Get CRM usage statistics.

### `crm_get_quotas` (~19 tokens)

Get CRM plan quotas and current usage.

### `crm_check_sms_config` (~18 tokens)

Check if SMS is configured and ready.

### `list_blogs` (~34 tokens)

List blog posts.

Input parameters:

- `limit` (number): Max posts to return
- `status` (string): Filter by status

### `list_social_posts` (~25 tokens)

List social media posts.

Input parameters:

- `limit` (number): Max posts to return

### `get_blog_analytics` (~23 tokens)

Get blog analytics (views, engagement) for the current user.

### `create_blog` (~67 tokens)

Create a new blog post.

Input parameters:

- `content` (string, required): Blog post content (HTML or markdown)
- `metaDescription` (string): SEO meta description
- `status` (string): Publish status
- `tags` (array): Post tags
- `title` (string, required): Blog post title

### `generate_blog` (~69 tokens)

Generate a blog post using AI.

Input parameters:

- `keywords` (array): SEO keywords to include
- `length` (number): Target word count
- `tone` (string): Writing tone (e.g. "professional", "casual", "technical")
- `topic` (string, required): Blog topic or title

### `generate_social_post` (~47 tokens)

Generate a social media post using AI.

Input parameters:

- `platform` (string, required): Target platform
- `tone` (string): Writing tone
- `topic` (string, required): Post topic or key message

### `generate_hashtags` (~48 tokens)

Generate relevant hashtags for content using AI.

Input parameters:

- `content` (string, required): Content text to generate hashtags for (min 20 chars)
- `options` (object): Additional options (platform, count)

### `get_content_autocruise_config` (~25 tokens)

Get AutoCruise (automated content scheduling) configuration.

### `content_get_blog` (~27 tokens)

Get a specific blog post by ID.

Input parameters:

- `id` (string, required): Blog post ID

### `content_update_blog` (~58 tokens)

Update an existing blog post.

Input parameters:

- `content` (string): Blog content (HTML or Markdown)
- `excerpt` (string): Short excerpt/summary
- `id` (string, required): Blog post ID
- `title` (string): Blog title

### `content_delete_blog` (~24 tokens)

Delete a blog post.

Input parameters:

- `id` (string, required): Blog post ID

### `content_list_scheduled` (~16 tokens)

List all scheduled blog posts.

### `content_schedule_blog` (~44 tokens)

Schedule a blog post for future publishing.

Input parameters:

- `blogId` (string, required): Blog post ID
- `publishDate` (string, required): Publish date/time (ISO 8601)

### `content_update_scheduled` (~47 tokens)

Update the publish date of a scheduled post.

Input parameters:

- `postId` (string, required): Scheduled post ID
- `publishDate` (string): New publish date/time (ISO 8601)

### `content_delete_scheduled` (~29 tokens)

Remove a blog post from the schedule.

Input parameters:

- `postId` (string, required): Scheduled post ID

### `content_get_topics` (~18 tokens)

Get AI-generated topic suggestions for blog posts.

### `content_send_blog_email` (~97 tokens)

Send a blog post via email to subscribers or specified recipients. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `blogId` (string, required): Blog post ID
- `confirm` (boolean): Set true only after the user approved the preview
- `recipients` (array): Specific recipient emails (all subscribers if omitted)

### `content_analyze_blog` (~30 tokens)

Analyze a blog post for SEO and readability insights.

Input parameters:

- `id` (string, required): Blog post ID

### `content_list_social_posts` (~15 tokens)

List social media posts.

### `content_get_social_post` (~27 tokens)

Get a specific social media post.

Input parameters:

- `id` (string, required): Social post ID

### `content_create_social_post` (~45 tokens)

Create a new social media post.

Input parameters:

- `content` (string, required): Post content/text
- `platforms` (array): Target platforms (e.g. ["twitter", "linkedin"])

### `content_update_social_post` (~45 tokens)

Update a social media post.

Input parameters:

- `content` (string): Post content/text
- `id` (string, required): Social post ID
- `platforms` (array): Target platforms

### `content_delete_social_post` (~26 tokens)

Delete a social media post.

Input parameters:

- `id` (string, required): Social post ID

### `content_export_blog` (~45 tokens)

Export a blog post in a specific format (html, md, or pdf).

Input parameters:

- `blogId` (string, required): Blog post ID
- `format` (string, required): Export format

### `content_repurpose` (~50 tokens)

Repurpose a blog post into multiple content formats.

Input parameters:

- `formats` (array): Target formats (e.g. ["tweet", "linkedin", "email"])
- `id` (string, required): Blog post ID

### `content_competitive_intelligence` (~33 tokens)

Analyze competitor content and generate campaign intelligence.

Input parameters:

- `competitorUrls` (array): Competitor URLs to analyze

### `content_get_benchmark` (~15 tokens)

Get competitor benchmark analytics.

### `content_get_strategy_insights` (~18 tokens)

Get AI-generated content strategy insights.

### `content_generate_video` (~27 tokens)

Generate a video from a text prompt.

Input parameters:

- `prompt` (string, required): Video generation prompt

### `content_generate_image` (~44 tokens)

Generate an image using AI.

Input parameters:

- `prompt` (string, required): Image generation prompt
- `size` (string): Image size (e.g. "1024x1024")

### `content_generate_schema` (~33 tokens)

Generate structured schema markup (JSON-LD) for a blog post.

Input parameters:

- `id` (string, required): Blog post ID

### `content_get_blog_views` (~30 tokens)

Get view analytics for a specific blog post.

Input parameters:

- `blogId` (string, required): Blog post ID

### `content_get_email_providers` (~20 tokens)

Get configured email provider integrations for blog emails.

### `content_hashtags_for_blog` (~30 tokens)

Generate hashtags for a specific blog post.

Input parameters:

- `blogId` (string, required): Blog post ID

### `autocruise_get_config` (~24 tokens)

Get the AutoCruise blog-automation config (admin-only).

### `autocruise_update_config` (~87 tokens)

Update AutoCruise config (enabled, content mode, posts per run, publish status, image flag, target user). Admin-only.

Input parameters:

- `contentMode` (string)
- `enabled` (boolean)
- `imageEnabled` (boolean)
- `postsPerRun` (number)
- `publishStatus` (string)
- `targetUserId` (string)

### `autocruise_trigger` (~22 tokens)

Manually trigger an AutoCruise run. Admin-only.

### `autocruise_get_logs` (~34 tokens)

List recent AutoCruise run logs.

Input parameters:

- `limit` (number): Max logs (capped at 50)

### `autocruise_get_stats` (~28 tokens)

Get AutoCruise success-rate / posts-generated stats over the last 100 runs.

### `autocruise_backfill_short_blogs` (~90 tokens)

Expand existing blog posts that fall below a word-count minimum. Defaults to dry-run.

Input parameters:

- `dryRun` (boolean): If false, actually rewrites the posts
- `limit` (number): Max posts to process (capped at 50)
- `minWords` (number): Posts below this length are candidates
- `targetWords` (number): Target length after expansion

### `list_invoices` (~36 tokens)

List invoices with optional filters.

Input parameters:

- `limit` (number): Max invoices to return
- `status` (string): Filter by status

### `get_invoice` (~24 tokens)

Get a single invoice by ID.

Input parameters:

- `id` (string, required): Invoice ID

### `create_invoice` (~76 tokens)

Create a new invoice.

Input parameters:

- `currency` (string): Currency code
- `customerEmail` (string, required): Client email
- `customerName` (string, required): Client/customer name
- `dueDate` (string): Due date (ISO 8601)
- `items` (array, required): Line items
- `notes` (string): Invoice notes

### `update_invoice` (~61 tokens)

Update an existing invoice.

Input parameters:

- `dueDate` (string): Updated due date
- `id` (string, required): Invoice ID
- `items` (array): Updated line items
- `notes` (string): Updated notes
- `status` (string): Updated status

### `send_invoice` (~26 tokens)

Send an invoice to the client via email.

Input parameters:

- `id` (string, required): Invoice ID

### `mark_invoice_paid` (~62 tokens)

Mark an invoice as paid.

Input parameters:

- `id` (string, required): Invoice ID
- `paymentDate` (string): Payment date (ISO 8601)
- `paymentMethod` (string): Payment method (e.g. "bank_transfer", "cash", "check")

### `list_quotations` (~27 tokens)

List quotations/estimates.

Input parameters:

- `limit` (number): Max quotations to return

### `create_quotation` (~71 tokens)

Create a new quotation/estimate.

Input parameters:

- `customerEmail` (string, required): Client email
- `customerName` (string, required): Client name
- `items` (array, required): Line items
- `notes` (string): Quotation notes
- `validUntil` (string): Expiry date (ISO 8601)

### `list_products` (~19 tokens)

List all your products/services in the invoicing catalog.

### `get_product` (~25 tokens)

Get a single product/service by ID.

Input parameters:

- `id` (string, required): Product ID

### `create_product` (~128 tokens)

Create a new product or service in the invoicing catalog.

Input parameters:

- `active` (boolean): Whether product is active (default true)
- `category` (string): Product category
- `currency` (string): Currency (default CAD)
- `description` (string): Product description
- `name` (string, required): Product name (required)
- `price` (number, required): Unit price (required)
- `sku` (string): SKU / part number
- `taxable` (boolean): Whether tax applies (default true)
- `unit` (string): Unit of measure (e.g. "hour", "item")

### `update_product` (~112 tokens)

Update an existing product or service.

Input parameters:

- `active` (boolean): Whether product is active
- `category` (string): Product category
- `currency` (string): Currency
- `description` (string): Product description
- `id` (string, required): Product ID to update
- `name` (string): Product name
- `price` (number): Unit price
- `sku` (string): SKU / part number
- `taxable` (boolean): Whether tax applies
- `unit` (string): Unit of measure

### `list_credit_notes` (~15 tokens)

List all your credit notes.

### `get_credit_note` (~27 tokens)

Get a single credit note by ID.

Input parameters:

- `id` (string, required): Credit note ID

### `create_credit_note` (~178 tokens)

Create a new credit note. Use to issue refunds or adjustments against an invoice.

Input parameters:

- `creditNoteNumber` (string): Custom credit note number (auto-generated if omitted)
- `currency` (string): Currency (default USD)
- `customerEmail` (string): Customer email
- `customerName` (string, required): Customer name (required)
- `invoiceId` (string): Related invoice ID
- `issueDate` (string): Issue date (ISO string)
- `items` (array, required): Line items (at least one required)
- `notes` (string): Additional notes
- `reason` (string): Reason for credit note
- `status` (string): Status (default draft)
- `subtotal` (number, required): Subtotal before tax
- `tax` (number): Tax amount (default 0)
- `total` (number, required): Total amount

### `update_credit_note` (~157 tokens)

Update an existing credit note.

Input parameters:

- `creditNoteNumber` (string): Credit note number
- `currency` (string): Currency
- `customerEmail` (string): Customer email
- `customerName` (string): Customer name
- `id` (string, required): Credit note ID to update
- `invoiceId` (string): Related invoice ID
- `issueDate` (string): Issue date (ISO string)
- `items` (array): Line items
- `notes` (string): Additional notes
- `reason` (string): Reason for credit note
- `status` (string): Status
- `subtotal` (number): Subtotal before tax
- `tax` (number): Tax amount
- `total` (number): Total amount

### `list_deposits` (~15 tokens)

List all your deposits.

### `get_deposit` (~25 tokens)

Get a single deposit by ID.

Input parameters:

- `id` (string, required): Deposit ID

### `create_deposit` (~133 tokens)

Record a new deposit received from a customer, optionally linked to an invoice.

Input parameters:

- `amount` (number, required): Deposit amount (required)
- `currency` (string): Currency (default USD)
- `customerEmail` (string): Customer email
- `customerName` (string, required): Customer name (required)
- `depositDate` (string): Deposit date (ISO string)
- `invoiceId` (string): Related invoice ID
- `notes` (string): Additional notes
- `paymentMethod` (string): Payment method (e.g. "bank transfer", "credit card")
- `status` (string): Status (default pending)

### `update_deposit` (~113 tokens)

Update an existing deposit.

Input parameters:

- `amount` (number): Deposit amount
- `currency` (string): Currency
- `customerEmail` (string): Customer email
- `customerName` (string): Customer name
- `depositDate` (string): Deposit date (ISO string)
- `id` (string, required): Deposit ID to update
- `invoiceId` (string): Related invoice ID
- `notes` (string): Additional notes
- `paymentMethod` (string): Payment method
- `status` (string): Status

### `get_invoicing_settings` (~26 tokens)

Get your invoicing settings (prefixes, default currency, tax rate).

### `update_invoicing_settings` (~102 tokens)

Update invoicing settings like invoice prefix, starting number, default currency, or tax rate.

Input parameters:

- `defaultCurrency` (string): Default currency
- `defaultTaxRate` (number): Default tax rate (0-100)
- `invoicePrefix` (string): Invoice number prefix (e.g. "INV")
- `invoiceStartNumber` (number): Starting invoice number
- `quotationPrefix` (string): Quotation number prefix (e.g. "QT")

### `get_client_statement` (~35 tokens)

Get a statement of all invoices for a specific client by their email address.

Input parameters:

- `clientEmail` (string, required): Client email address

### `get_invoice_stats` (~27 tokens)

Get invoice statistics summary (totals, counts by status, revenue). Requires bearer auth.

### `list_invoice_templates` (~14 tokens)

List all invoice templates.

### `create_invoice_template` (~49 tokens)

Create a new invoice template.

Input parameters:

- `content` (string, required): Template content (HTML or markdown)
- `isDefault` (boolean): Set as default template
- `name` (string, required): Template name

### `update_invoice_template` (~56 tokens)

Update an existing invoice template.

Input parameters:

- `content` (string): Template content
- `id` (string, required): Template ID to update
- `isDefault` (boolean): Set as default template
- `name` (string): Template name

### `delete_invoice_template` (~25 tokens)

Delete an invoice template.

Input parameters:

- `id` (string, required): Template ID to delete

### `list_recurring_invoices` (~17 tokens)

List all recurring invoice schedules.

### `create_recurring_invoice` (~107 tokens)

Create a new recurring invoice schedule.

Input parameters:

- `currency` (string): Currency (default CAD)
- `customerEmail` (string): Customer email
- `customerName` (string, required): Customer name
- `endDate` (string): End date (ISO), omit for indefinite
- `frequency` (string, required): Billing frequency
- `items` (array, required): Line items
- `notes` (string): Notes to include on each invoice
- `startDate` (string, required): Start date (ISO)

### `update_recurring_invoice` (~108 tokens)

Update an existing recurring invoice schedule.

Input parameters:

- `currency` (string): Currency
- `customerEmail` (string): Customer email
- `customerName` (string): Customer name
- `endDate` (string): End date (ISO)
- `frequency` (string): Billing frequency
- `id` (string, required): Recurring invoice ID to update
- `items` (array): Line items
- `notes` (string): Notes
- `startDate` (string): Start date (ISO)

### `toggle_recurring_invoice` (~32 tokens)

Toggle a recurring invoice schedule active/paused.

Input parameters:

- `id` (string, required): Recurring invoice ID to toggle

### `delete_recurring_invoice` (~29 tokens)

Delete a recurring invoice schedule.

Input parameters:

- `id` (string, required): Recurring invoice ID to delete

### `get_quotation` (~26 tokens)

Get a single quotation by ID.

Input parameters:

- `id` (string, required): Quotation ID

### `update_quotation` (~102 tokens)

Update an existing quotation.

Input parameters:

- `currency` (string): Currency
- `customerEmail` (string): Customer email
- `customerName` (string): Customer name
- `id` (string, required): Quotation ID to update
- `items` (array): Line items
- `notes` (string): Notes
- `status` (string): Status (draft, sent, accepted, declined, expired)
- `validUntil` (string): Expiry date (ISO)

### `delete_quotation` (~25 tokens)

Delete a quotation.

Input parameters:

- `id` (string, required): Quotation ID to delete

### `convert_quotation_to_invoice` (~31 tokens)

Convert an accepted quotation into an invoice.

Input parameters:

- `id` (string, required): Quotation ID to convert

### `send_quotation_email` (~64 tokens)

Send a quotation to a customer by email.

Input parameters:

- `message` (string): Custom message body
- `quotationId` (string, required): Quotation ID
- `subject` (string): Email subject (defaults to quotation subject)
- `to` (string, required): Recipient email address

### `list_expenses` (~36 tokens)

List expenses with optional filters.

Input parameters:

- `category` (string): Filter by category
- `limit` (number): Max expenses to return

### `create_expense` (~73 tokens)

Record a new expense.

Input parameters:

- `amount` (number, required): Amount
- `category` (string, required): Expense category
- `currency` (string): Currency code
- `date` (string): Expense date (ISO 8601)
- `description` (string, required): Expense description
- `vendorId` (string): Vendor ID

### `list_vendors` (~26 tokens)

List vendors/suppliers.

Input parameters:

- `limit` (number): Max vendors to return

### `create_vendor` (~51 tokens)

Create a new vendor/supplier.

Input parameters:

- `address` (string): Business address
- `email` (string): Vendor email
- `name` (string, required): Vendor name
- `phone` (string): Phone number

### `list_accounts` (~26 tokens)

List chart of accounts.

Input parameters:

- `limit` (number): Max results (default 50)

### `get_profit_loss` (~49 tokens)

Get profit & loss report for a date range.

Input parameters:

- `endDate` (string, required): End date (ISO 8601)
- `startDate` (string, required): Start date (ISO 8601)

### `get_balance_sheet` (~40 tokens)

Get balance sheet report as of a specific date.

Input parameters:

- `asOfDate` (string): As-of date (ISO 8601, defaults to today)

### `list_journal_entries` (~25 tokens)

List journal entries.

Input parameters:

- `limit` (number): Max entries to return

### `create_journal_entry` (~61 tokens)

Create a journal entry with debit/credit lines.

Input parameters:

- `date` (string, required): Entry date (ISO 8601)
- `lines` (array, required): Journal entry lines (debits must equal credits)
- `memo` (string): Entry memo/description

### `list_bills` (~35 tokens)

List bills/accounts payable.

Input parameters:

- `limit` (number): Max bills to return
- `status` (string): Filter by status

### `acct_list_budgets` (~37 tokens)

List budgets, optionally filtered by fiscal year.

Input parameters:

- `fiscalYear` (number): Fiscal year (e.g. 2024)

### `acct_get_budget` (~25 tokens)

Get a specific budget by ID.

Input parameters:

- `id` (string, required): Budget ID

### `acct_get_budget_vs_actual` (~29 tokens)

Get budget vs actual comparison for a budget.

Input parameters:

- `id` (string, required): Budget ID

### `acct_create_budget` (~51 tokens)

Create a new budget.

Input parameters:

- `allocations` (array): Budget allocations per account
- `fiscalYear` (number, required): Fiscal year (e.g. 2024)
- `name` (string, required): Budget name

### `acct_update_budget` (~40 tokens)

Update a budget.

Input parameters:

- `allocations` (array): Budget allocations
- `id` (string, required): Budget ID
- `name` (string): Budget name

### `acct_delete_budget` (~22 tokens)

Delete a budget.

Input parameters:

- `id` (string, required): Budget ID

### `acct_list_fixed_assets` (~33 tokens)

List fixed assets, optionally filtered by status.

Input parameters:

- `status` (string): Filter by status (active, disposed)

### `acct_get_fixed_asset` (~28 tokens)

Get a specific fixed asset by ID.

Input parameters:

- `id` (string, required): Fixed asset ID

### `acct_create_fixed_asset` (~60 tokens)

Create a new fixed asset record.

Input parameters:

- `acquisitionDate` (string, required): Acquisition date (ISO 8601)
- `code` (string): Asset code/tag
- `cost` (number, required): Acquisition cost
- `name` (string, required): Asset name

### `acct_update_fixed_asset` (~57 tokens)

Update a fixed asset record.

Input parameters:

- `cost` (number): Acquisition cost
- `id` (string, required): Fixed asset ID
- `name` (string): Asset name
- `salvageValue` (number): Salvage/residual value

### `acct_dispose_fixed_asset` (~57 tokens)

Record the disposal of a fixed asset.

Input parameters:

- `disposalDate` (string, required): Disposal date (ISO 8601)
- `id` (string, required): Fixed asset ID
- `proceedsAmount` (number): Sale proceeds (if sold)

### `acct_run_depreciation` (~19 tokens)

Run depreciation for all active fixed assets.

### `acct_get_depreciation_schedule` (~30 tokens)

Get depreciation schedule for a fixed asset.

Input parameters:

- `id` (string, required): Fixed asset ID

### `acct_list_periods` (~14 tokens)

List accounting periods.

### `acct_create_period` (~65 tokens)

Create a new accounting period.

Input parameters:

- `endDate` (string, required): Period end date (ISO 8601)
- `name` (string, required): Period name (e.g. Q1 2024)
- `startDate` (string, required): Period start date (ISO 8601)

### `acct_close_period` (~73 tokens)

Close an accounting period. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `periodId` (string, required): Period ID

### `acct_lock_period` (~76 tokens)

Lock a period to prevent further changes. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `periodId` (string, required): Period ID

### `acct_reopen_period` (~27 tokens)

Reopen a closed accounting period.

Input parameters:

- `periodId` (string, required): Period ID

### `acct_year_end_close` (~87 tokens)

Perform year-end close for a fiscal year. HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `fiscalYear` (number, required): Fiscal year to close (e.g. 2024)

### `acct_list_fx_rates` (~32 tokens)

List foreign exchange rates.

Input parameters:

- `fromCurrency` (string): Filter by source currency (e.g. USD)

### `acct_create_fx_rate` (~57 tokens)

Create a foreign exchange rate.

Input parameters:

- `fromCurrency` (string, required): Source currency code (e.g. USD)
- `rate` (number, required): Exchange rate
- `toCurrency` (string, required): Target currency code (e.g. EUR)

### `acct_update_fx_rate` (~36 tokens)

Update an existing exchange rate.

Input parameters:

- `id` (string, required): FX rate ID
- `rate` (number, required): New exchange rate

### `acct_delete_fx_rate` (~25 tokens)

Delete an exchange rate.

Input parameters:

- `id` (string, required): FX rate ID

### `acct_convert_fx` (~50 tokens)

Convert an amount between currencies using stored rates.

Input parameters:

- `amount` (number, required): Amount to convert
- `fromCurrency` (string, required): Source currency code
- `toCurrency` (string, required): Target currency code

### `acct_run_fx_revaluation` (~37 tokens)

Run foreign currency revaluation for open balances.

Input parameters:

- `periodId` (string): Period ID to revalue (defaults to current)

### `acct_list_statements` (~25 tokens)

List imported bank statements.

Input parameters:

- `status` (string): Filter by status

### `acct_get_statement` (~24 tokens)

Get a specific bank statement.

Input parameters:

- `id` (string, required): Statement ID

### `acct_import_statement` (~36 tokens)

Import transactions from a bank statement.

Input parameters:

- `statementId` (string, required): Statement ID
- `transactions` (array, required): Transactions to import

### `acct_list_reconciliations` (~16 tokens)

Get reconciliation summary.

### `acct_match_transaction` (~44 tokens)

Match a bank transaction to a journal entry.

Input parameters:

- `bankTxId` (string, required): Bank transaction ID
- `journalEntryId` (string, required): Journal entry ID to match

### `acct_unmatch_transaction` (~27 tokens)

Remove a reconciliation match.

Input parameters:

- `matchId` (string, required): Match ID to remove

### `acct_create_from_bank_tx` (~33 tokens)

Create a journal entry from an unmatched bank transaction.

Input parameters:

- `bankTxId` (string, required): Bank transaction ID

### `acct_bulk_create_from_bank` (~34 tokens)

Bulk create journal entries from unmatched bank transactions.

Input parameters:

- `bankTxIds` (array, required): Array of bank transaction IDs

### `acct_get_income_statement` (~53 tokens)

Get income statement (P&L) for a date range.

Input parameters:

- `endDate` (string): End date (ISO 8601)
- `startDate` (string): Start date (ISO 8601)

### `acct_get_trial_balance` (~40 tokens)

Get trial balance as of a specific date.

Input parameters:

- `asOfDate` (string): As-of date (ISO 8601, defaults to today)

### `acct_post_expense` (~31 tokens)

Post a draft expense (move from draft to posted).

Input parameters:

- `expenseId` (string, required): Expense ID

### `acct_void_expense` (~26 tokens)

Void / delete an expense.

Input parameters:

- `expenseId` (string, required): Expense ID

### `cca_list_classes` (~35 tokens)

List CRA Capital Cost Allowance classes (Class 1, 8, 10, 50, etc.) with rates.

### `cca_list_pools` (~48 tokens)

List the user's CCA pools (one pool per class per entity).

Input parameters:

- `entityId` (string): Filter by entity ID
- `taxYear` (number): Filter by tax year

### `cca_create_pool` (~129 tokens)

Create a new CCA pool for a class within an entity/tax year.

Input parameters:

- `additions` (number): Additions during the year
- `ccaClass` (string, required): CCA class code (e.g. "1", "8", "10", "50")
- `description` (string)
- `dispositions` (number): Dispositions during the year
- `entityId` (string, required): Entity ID
- `openingUcc` (number, required): Opening UCC (undepreciated capital cost)
- `taxYear` (number, required): Tax year (e.g. 2026)

### `cca_get_pool` (~28 tokens)

Get a single CCA pool by ID.

Input parameters:

- `poolId` (string, required): Pool ID

### `cca_update_pool` (~49 tokens)

Update editable fields on a CCA pool.

Input parameters:

- `additions` (number)
- `description` (string)
- `dispositions` (number)
- `poolId` (string, required): Pool ID

### `cca_calculate` (~34 tokens)

Calculate CCA for a pool using the half-year rule + class rate.

Input parameters:

- `poolId` (string, required): Pool ID

### `cca_dispose` (~75 tokens)

Record a disposition of an asset within a CCA pool.

Input parameters:

- `date` (string): Disposition date (ISO 8601)
- `description` (string)
- `originalCost` (number): Original cost of disposed asset
- `poolId` (string, required): Pool ID
- `proceeds` (number, required): Disposal proceeds

### `cca_rollover` (~50 tokens)

Roll a CCA pool into the next tax year (closing UCC becomes opening UCC).

Input parameters:

- `newTaxYear` (number, required): Target tax year
- `poolId` (string, required): Pool ID

### `cca_close` (~77 tokens)

Close a CCA pool (no further entries). HIGH-IMPACT: calling without confirm=true only returns a preview. Show the preview to the user, get their explicit approval, then call again with confirm=true.

Input parameters:

- `confirm` (boolean): Set true only after the user approved the preview
- `poolId` (string, required): Pool ID

### `gifi_list_codes` (~23 tokens)

List CRA GIFI (General Index of Financial Information) codes.

### `gifi_codes_by_section` (~48 tokens)

List GIFI codes filtered by financial-statement section (e.g. "income", "balance-sheet").

Input parameters:

- `section` (string, required): Section name (income, balance-sheet, etc.)

### `gifi_list_mappings` (~35 tokens)

List the user's GIFI-code → chart-of-accounts mappings.

Input parameters:

- `entityId` (string): Filter by entity

### `gifi_create_mapping` (~75 tokens)

Map a chart-of-accounts ID to a GIFI code (so the trial balance aggregates correctly for T2).

Input parameters:

- `accountId` (string, required): Chart-of-accounts ID
- `entityId` (string, required): Entity ID
- `gifiCode` (string, required): GIFI code (e.g. "8000")

### `gifi_delete_mapping` (~26 tokens)

Remove a GIFI mapping.

Input parameters:

- `mappingId` (string, required): Mapping ID

### `gifi_auto_suggest` (~58 tokens)

Bulk auto-suggest GIFI mappings for unmapped accounts based on account name + type.

Input parameters:

- `apply` (boolean): If true, persist suggestions; if false, return suggestions only
- `entityId` (string, required): Entity ID

### `gifi_aggregate` (~43 tokens)

Aggregate the trial balance into GIFI codes for T2 filing.

Input parameters:

- `entityId` (string, required): Entity ID
- `taxYear` (number, required): Tax year

### `t2_schedule_1` (~54 tokens)

Get T2 Schedule 1 — Net Income for Tax Purposes (reconciles book income to taxable income).

Input parameters:

- `entityId` (string, required): Entity ID
- `taxYear` (number, required): Tax year

### `t2_schedule_8` (~49 tokens)

Get T2 Schedule 8 — Capital Cost Allowance summary across all CCA pools.

Input parameters:

- `entityId` (string, required): Entity ID
- `taxYear` (number, required): Tax year

### `t2_schedule_5` (~65 tokens)

Generate T2 Schedule 5 — Tax Calculation Supplementary (provincial tax allocation).

Input parameters:

- `entityId` (string, required): Entity ID
- `provinceAllocations` (object): Map of province code → allocation percentage
- `taxYear` (number, required): Tax year

### `t2_province_tax_rates` (~26 tokens)

Get current federal + provincial corporate tax rates used by T2 calculations.

### `t2_tax_calc` (~72 tokens)

Run the federal + provincial corporate tax calculation for an entity/tax year.

Input parameters:

- `entityId` (string, required): Entity ID
- `provinceAllocations` (object)
- `taxYear` (number, required): Tax year
- `taxableIncome` (number): Override taxable income (defaults to Schedule 1 result)

### `t2_generate_pdf` (~58 tokens)

Generate the draft T2 PDF (with PDF417 barcode) for an entity/tax year. Returns a download URL or base64 payload.

Input parameters:

- `entityId` (string, required): Entity ID
- `taxYear` (number, required): Tax year

### `accounting_audit_log_list` (~100 tokens)

List accounting audit-log entries (CPA-grade trail). Filter by entity, actor, action, or date range.

Input parameters:

- `action` (string): Action type (e.g. "journal.post", "expense.update")
- `actorUid` (string)
- `endDate` (string): ISO 8601
- `entityId` (string)
- `limit` (number)
- `startDate` (string): ISO 8601

### `accounting_approvals_list` (~50 tokens)

List approval-workflow items (journals, expenses, etc. requiring sign-off).

Input parameters:

- `entityId` (string)
- `limit` (number)
- `status` (string)

### `sales_tax_return_prepare` (~98 tokens)

Prepare a sales-tax return (GST/HST/PST/Sales Tax) for a period. Returns the computed return totals.

Input parameters:

- `entityId` (string, required): Entity ID
- `jurisdiction` (string, required): Tax jurisdiction code (e.g. "CA-GST", "US-CA")
- `periodEnd` (string, required): Period end (ISO 8601)
- `periodStart` (string, required): Period start (ISO 8601)

### `sales_tax_return_mark_filed` (~89 tokens)

Mark a prepared sales-tax return as filed (locks it for audit trail).

Input parameters:

- `entityId` (string, required): Entity ID
- `filingReference` (string): Government filing confirmation number
- `jurisdiction` (string, required): Tax jurisdiction code
- `periodEnd` (string, required): Period end (ISO 8601)
- `periodStart` (string, required): Period start (ISO 8601)

### `sales_tax_return_list` (~36 tokens)

List historical sales-tax returns (filed + draft).

Input parameters:

- `entityId` (string)
- `jurisdiction` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/sams3595-futuresense-mcp/futuresense-mcp#diagnostics

## Score history

- 2026-10-18: 68
- 2026-10-17: 68
- 2026-10-16: 68
- 2026-10-15: 68
- 2026-10-14: 38
- 2026-10-13: 38

## Common questions

### What is the FutureSense MCP server?

FutureSense is an MCP server listed in the public MCP registry as io.github.Sams3595/futuresense-mcp. Invoicing, CRM, accounting, payroll, booking and AI content tools for FutureSense apps. This page covers its npm package (futuresense-mcp).

### Is the FutureSense MCP server safe to use?

FutureSense scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 18 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the FutureSense MCP server expose?

FutureSense exposes 249 tools: get_credit_balance, get_autocruise_config, get_autocruise_history, get_operation_cost, list_marketplace_apps, and 244 more. Their descriptions and schemas cost roughly 11,670 tokens of context every time the server is loaded.

### Is the FutureSense MCP server still maintained?

FutureSense is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the FutureSense MCP server under?

FutureSense declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/futuresense-mcp
- Socket report: https://socket.dev/npm/package/futuresense-mcp
- Repository: https://github.com/Sams3595/futuresense-mcp
- Website: https://futuresenseai.com/
- Changelog RSS feed: https://verifymcp.io/servers/sams3595-futuresense-mcp/futuresense-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/sams3595-futuresense-mcp/futuresense-mcp.json
- HTML version of this page: https://verifymcp.io/servers/sams3595-futuresense-mcp/futuresense-mcp
