upGrowth Growth Toolkit

29 free read-only growth tools: CAC, ROAS, PPC, schema, meta tags, robots.txt and AI crawler checks.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
93%
Naming quality
81%
Poisoning risk
100%
Permission match
90%
Protocol compliance
100%

Findings (3)

  • LOWTool 'seo_roi' description lacks action verbin seo_roi
  • LOWTool 'instagram_earnings' description lacks action verbin instagram_earnings
  • LOWTool 'website_ad_revenue' suggests web access but openWorldHint=falsein website_ad_revenue

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,963Tokens (tool definitions)
~1.9 KBTypical response size
Significant attention impact (5.44% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "growth-toolkit": {
      "url": "https://upgrowth.in/connected-app/mcp"
    }
  }
}

Remote endpoints

https://upgrowth.in/connected-app/mcpstreamable-http

What it can do

Tool inventory

Tools (29)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢unit_economics(acquisition_spend, new_customers, monthly_revenue_per_customer, gross_margin_pct, monthly_churn_pct, ...)

Calculates customer acquisition cost (CAC), customer lifetime value (LTV), the LTV to CAC ratio and CAC payback in months from spend, new customers, revenue per customer, gross margin and churn.

Input Schema

{
  "type": "object",
  "properties": {
    "acquisition_spend": {
      "type": "number",
      "minimum": 0,
      "description": "Total sales and marketing spend for the period, in currency units."
    },
    "new_customers": {
      "type": "integer",
      "minimum": 1,
      "description": "New paying customers acquired in the same period."
    },
    "monthly_revenue_per_customer": {
      "type": "number",
      "minimum": 0,
      "description": "Average revenue per customer per month (ARPU), in currency units."
    },
    "gross_margin_pct": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "Gross margin as a percentage, for example 70."
    },
    "monthly_churn_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Share of customers lost per month as a percentage, for example 3."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "acquisition_spend",
    "new_customers",
    "monthly_revenue_per_customer",
    "gross_margin_pct",
    "monthly_churn_pct"
  ]
}
🟢growth_rate(start_value, end_value, periods, period_type)

Calculates total growth and compound growth per period between a start and end value, for example month on month, quarter on quarter or year on year (CAGR).

Input Schema

{
  "type": "object",
  "properties": {
    "start_value": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Value at the start, for example revenue or users."
    },
    "end_value": {
      "type": "number",
      "minimum": 0,
      "description": "Value at the end."
    },
    "periods": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Number of periods between start and end, for example 12."
    },
    "period_type": {
      "type": "string",
      "enum": [
        "month",
        "quarter",
        "year"
      ],
      "description": "Length of 1 period.",
      "default": "month"
    }
  },
  "required": [
    "start_value",
    "end_value",
    "periods"
  ]
}
🟢roas_check(ad_revenue, ad_spend, gross_margin_pct, currency)

Calculates return on ad spend from ad revenue and ad spend, and the break-even ROAS implied by gross margin, then says whether the campaign covers its product cost.

Input Schema

{
  "type": "object",
  "properties": {
    "ad_revenue": {
      "type": "number",
      "minimum": 0,
      "description": "Revenue attributed to the ads, in currency units."
    },
    "ad_spend": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Ad spend for the same period, in currency units."
    },
    "gross_margin_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Gross margin as a percentage."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "ad_revenue",
    "ad_spend",
    "gross_margin_pct"
  ]
}
🟢ad_budget_planner(target_customers, cost_per_click, click_to_lead_pct, lead_to_customer_pct, currency)

Estimates the monthly ad budget needed to reach a target number of new customers from cost per click, landing page conversion rate and lead to customer rate.

Input Schema

{
  "type": "object",
  "properties": {
    "target_customers": {
      "type": "integer",
      "minimum": 1,
      "description": "New customers wanted per month."
    },
    "cost_per_click": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Expected average cost per click, in currency units."
    },
    "click_to_lead_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Share of clicks that become leads, as a percentage."
    },
    "lead_to_customer_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Share of leads that become customers, as a percentage."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "target_customers",
    "cost_per_click",
    "click_to_lead_pct",
    "lead_to_customer_pct"
  ]
}
🟢find_growth_moves(sector, company, keyword, limit)

Returns documented 2026 growth moves by Indian companies from upGrowth's Growth Moves research (January to September 2026), filtered by sector, company or keyword. Each move includes the leader, date and a link to the original source.

Input Schema

{
  "type": "object",
  "properties": {
    "sector": {
      "type": "string",
      "enum": [
        "fintech",
        "ecommerce",
        "healthtech",
        "saas",
        "any"
      ],
      "description": "Sector to search. Use any to search all sectors.",
      "default": "any"
    },
    "company": {
      "type": "string",
      "description": "Optional company name to match, for example Razorpay."
    },
    "keyword": {
      "type": "string",
      "description": "Optional keyword to match in the move description, for example acquisition, UPI or AI agents."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 14,
      "description": "Maximum moves to return.",
      "default": 5
    }
  }
}
🟢max_affordable_cac(monthly_revenue_per_customer, gross_margin_pct, monthly_churn_pct, target_ltv_to_cac, lead_to_customer_pct, ...)

Works back from customer lifetime value to the most a business can pay to acquire a customer (and, optionally, a lead) while keeping a target LTV to CAC ratio, 3:1 by default.

Input Schema

{
  "type": "object",
  "properties": {
    "monthly_revenue_per_customer": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Average revenue per customer per month (ARPU), in currency units."
    },
    "gross_margin_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Gross margin as a percentage."
    },
    "monthly_churn_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Share of customers lost per month as a percentage."
    },
    "target_ltv_to_cac": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Target LTV to CAC ratio, for example 3 for 3:1.",
      "default": 3
    },
    "lead_to_customer_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Optional. Share of leads that become customers, to work out the maximum cost per lead."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "monthly_revenue_per_customer",
    "gross_margin_pct",
    "monthly_churn_pct"
  ]
}
🟢period_change(previous_value, current_value, comparison)

Calculates the simple percentage change between 2 values, such as year over year (YoY), month over month (MoM), quarter over quarter or week over week, including sales or revenue growth and percentage increase or decrease.

Input Schema

{
  "type": "object",
  "properties": {
    "previous_value": {
      "type": "number",
      "description": "Value in the earlier period."
    },
    "current_value": {
      "type": "number",
      "description": "Value in the later period."
    },
    "comparison": {
      "type": "string",
      "enum": [
        "yoy",
        "mom",
        "qoq",
        "wow",
        "custom"
      ],
      "description": "Which comparison this is, used only for labelling.",
      "default": "custom"
    }
  },
  "required": [
    "previous_value",
    "current_value"
  ]
}
🟢seo_roi(monthly_organic_visits_gain, conversion_rate_pct, value_per_conversion, monthly_seo_cost, gross_margin_pct, ...)

Estimates the monthly return on an SEO investment from extra organic visits, conversion rate, value per conversion and monthly SEO cost, plus the break-even traffic gain.

Input Schema

{
  "type": "object",
  "properties": {
    "monthly_organic_visits_gain": {
      "type": "number",
      "minimum": 0,
      "description": "Extra organic visits per month expected from SEO."
    },
    "conversion_rate_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Share of visits that convert, as a percentage."
    },
    "value_per_conversion": {
      "type": "number",
      "minimum": 0,
      "description": "Average revenue per conversion (order value or deal value), in currency units."
    },
    "monthly_seo_cost": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Monthly SEO spend, in currency units."
    },
    "gross_margin_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Optional gross margin as a percentage. Leave out to measure on revenue."
    },
    "months": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Months to total over.",
      "default": 12
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "monthly_organic_visits_gain",
    "conversion_rate_pct",
    "value_per_conversion",
    "monthly_seo_cost"
  ]
}
🟢ai_crawler_access_check(domain)

Reads a website's public robots.txt and llms.txt and reports whether AI crawlers from OpenAI, Anthropic, Perplexity and Google (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended and others) are allowed, restricted or blocked.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Public domain to check, for example example.com."
    }
  },
  "required": [
    "domain"
  ]
}
🟢mdr_charges(sales_value, mdr_pct, transactions, fixed_fee_per_transaction, gst_pct, ...)

Calculates merchant discount rate (MDR) charges on card or payment gateway sales: the MDR fee, GST on that fee, total cost, effective rate and net settlement. Uses the MDR % the user gives; it does not look up provider rates.

Input Schema

{
  "type": "object",
  "properties": {
    "sales_value": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Total value of the transactions, in currency units."
    },
    "mdr_pct": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "MDR or TDR charged by the provider, as a percentage, for example 1.8."
    },
    "transactions": {
      "type": "integer",
      "minimum": 1,
      "description": "Optional. Number of transactions, needed only with a fixed fee per transaction."
    },
    "fixed_fee_per_transaction": {
      "type": "number",
      "minimum": 0,
      "description": "Optional fixed fee per transaction, in currency units."
    },
    "gst_pct": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "GST charged on the MDR fee, as a percentage.",
      "default": 18
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "sales_value",
    "mdr_pct"
  ]
}
🟢robots_txt_generator(ai_training, ai_search, ai_user_fetch, disallow_paths, sitemap_url)

Writes a robots.txt file that allows or blocks AI crawlers by purpose: model training (GPTBot, ClaudeBot, Google-Extended), AI search (OAI-SearchBot, Claude-SearchBot, PerplexityBot) and user-triggered fetches (ChatGPT-User, Claude-User, Perplexity-User), plus paths to keep private and a sitemap. Never blocks Googlebot.

Input Schema

{
  "type": "object",
  "properties": {
    "ai_training": {
      "type": "string",
      "enum": [
        "allow",
        "block"
      ],
      "description": "Whether AI model training crawlers may crawl the site.",
      "default": "allow"
    },
    "ai_search": {
      "type": "string",
      "enum": [
        "allow",
        "block"
      ],
      "description": "Whether AI search crawlers may crawl the site.",
      "default": "allow"
    },
    "ai_user_fetch": {
      "type": "string",
      "enum": [
        "allow",
        "block"
      ],
      "description": "Whether assistants may fetch pages when a user asks about them.",
      "default": "allow"
    },
    "disallow_paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Optional paths to keep out of all crawlers, each starting with /, for example /wp-admin/."
    },
    "sitemap_url": {
      "type": "string",
      "description": "Optional full sitemap URL, for example https://example.com/sitemap.xml."
    }
  }
}
🟢schema_generator(schema_type, data)

Builds valid schema.org JSON-LD for a page: FAQ, local business, organization, article or blog post, product, person or breadcrumb. Checks the properties Google lists as required for that type (per Google Search Central structured data docs, developers.google.com/search/docs/appearance/structured-data) and returns a ready-to-paste script tag.

Input Schema

{
  "type": "object",
  "properties": {
    "schema_type": {
      "type": "string",
      "enum": [
        "faq",
        "local_business",
        "organization",
        "article",
        "product",
        "person",
        "breadcrumb"
      ],
      "description": "Which schema to build."
    },
    "data": {
      "type": "object",
      "description": "Fields for that type. faq: questions [{question, answer}]. local_business: name, business_type (for example Dentist), address {street, locality, region, postal_code, country}, telephone, url, image, price_range, geo {latitude, longitude}, opening_hours [{days: [Monday...], opens: \"09:00\", closes: \"18:00\"}]. organization: name, organization_type, url, logo, description, legal_name, founding_date, email, telephone, same_as [urls], address. article: headline, article_type (Article, BlogPosting or NewsArticle), url, images [urls], date_published, date_modified, authors [{name, url, job_title}], publisher {name, logo}. product: name, description, images, brand, sku, price, currency, availability (InStock, OutOfStock, PreOrder, SoldOut), price_valid_until, rating_value, review_count. person: name, url, job_title, works_for, image, description, same_as. breadcrumb: items [{name, url}]."
    }
  },
  "required": [
    "schema_type",
    "data"
  ]
}
🟢content_seo_check(text, keyword, secondary_keywords)

Analyses text the user pastes: word, sentence and paragraph counts, reading time, approximate Flesch reading ease, long sentences and paragraphs, headings found, and focus keyword count, density and placement. Counts exactly, which assistants often get wrong.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "The article or page text, plain text, Markdown or HTML. Up to 60,000 characters."
    },
    "keyword": {
      "type": "string",
      "description": "Optional focus keyword or phrase."
    },
    "secondary_keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Optional extra keywords to count."
    }
  },
  "required": [
    "text"
  ]
}
🟢meta_tags_builder(title, description, url, image_url, site_name, ...)

Builds the HTML head tags for a page: title, meta description, canonical, Open Graph and Twitter card tags, with character counts and truncation warnings.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "Page title."
    },
    "description": {
      "type": "string",
      "description": "Meta description."
    },
    "url": {
      "type": "string",
      "description": "Canonical page URL."
    },
    "image_url": {
      "type": "string",
      "description": "Optional share image URL."
    },
    "site_name": {
      "type": "string",
      "description": "Optional site or brand name."
    },
    "twitter_handle": {
      "type": "string",
      "description": "Optional X (Twitter) handle, for example @upgrowth."
    },
    "page_type": {
      "type": "string",
      "enum": [
        "website",
        "article"
      ],
      "default": "website",
      "description": "Open Graph type."
    }
  },
  "required": [
    "title",
    "description",
    "url"
  ]
}
🟢youtube_earnings(monthly_views, rpm, cpm, monetized_playback_pct, avg_view_duration_minutes, ...)

Estimates YouTube ad earnings from monthly views and the RPM from YouTube Studio (or CPM, monetized playback % and the 55% long-form creator share), plus watch hours against the YouTube Partner Program threshold.

Input Schema

{
  "type": "object",
  "properties": {
    "monthly_views": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Views per month on long-form videos."
    },
    "rpm": {
      "type": "number",
      "minimum": 0,
      "description": "Revenue per 1,000 views from YouTube Studio, in currency units. Use this or cpm."
    },
    "cpm": {
      "type": "number",
      "minimum": 0,
      "description": "Ad CPM, in currency units. Needs monetized_playback_pct."
    },
    "monetized_playback_pct": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "Share of views that show an ad, as a percentage."
    },
    "avg_view_duration_minutes": {
      "type": "number",
      "minimum": 0,
      "description": "Optional average view duration in minutes, to work out watch hours."
    },
    "subscribers": {
      "type": "integer",
      "minimum": 0,
      "description": "Optional subscriber count."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "monthly_views"
  ]
}
🟢instagram_earnings(followers, posts_per_month, rate_per_post, rate_per_1000_followers, stories_per_month, ...)

Estimates monthly and yearly Instagram brand-deal income from the rates the user charges per post, per story or per 1,000 followers, and the cost per engagement a brand pays.

Input Schema

{
  "type": "object",
  "properties": {
    "followers": {
      "type": "integer",
      "minimum": 1,
      "description": "Follower count."
    },
    "posts_per_month": {
      "type": "number",
      "minimum": 0,
      "description": "Sponsored posts or reels per month."
    },
    "rate_per_post": {
      "type": "number",
      "minimum": 0,
      "description": "Fee per sponsored post, in currency units. Use this or rate_per_1000_followers."
    },
    "rate_per_1000_followers": {
      "type": "number",
      "minimum": 0,
      "description": "Fee per post per 1,000 followers, in currency units."
    },
    "stories_per_month": {
      "type": "number",
      "minimum": 0,
      "description": "Optional sponsored stories per month."
    },
    "rate_per_story": {
      "type": "number",
      "minimum": 0,
      "description": "Optional fee per story."
    },
    "avg_engagements_per_post": {
      "type": "number",
      "minimum": 0,
      "description": "Optional average likes plus comments plus saves plus shares per post."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "followers",
    "posts_per_month"
  ]
}
🟢engagement_rate(likes, comments, shares, saves, base_type, ...)

Calculates social media engagement rate for Instagram, YouTube, LinkedIn or any platform from likes, comments, shares and saves, by followers, reach, impressions or views.

Input Schema

{
  "type": "object",
  "properties": {
    "likes": {
      "type": "number",
      "minimum": 0
    },
    "comments": {
      "type": "number",
      "minimum": 0
    },
    "shares": {
      "type": "number",
      "minimum": 0
    },
    "saves": {
      "type": "number",
      "minimum": 0
    },
    "base_type": {
      "type": "string",
      "enum": [
        "followers",
        "reach",
        "impressions",
        "views"
      ],
      "default": "followers",
      "description": "What to divide by."
    },
    "base_value": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Followers, reach, impressions or views."
    },
    "posts": {
      "type": "integer",
      "minimum": 1,
      "default": 1,
      "description": "Number of posts the totals cover."
    }
  },
  "required": [
    "base_value"
  ]
}
🟢website_ad_revenue(monthly_pageviews, page_rpm, ads_per_page, cpm, fill_rate_pct, ...)

Estimates display ad revenue for a website or blog from monthly pageviews and page RPM, or from ad impressions per page, CPM and fill rate.

Input Schema

{
  "type": "object",
  "properties": {
    "monthly_pageviews": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "page_rpm": {
      "type": "number",
      "minimum": 0,
      "description": "Earnings per 1,000 pageviews (from AdSense reports), in currency units. Use this or cpm."
    },
    "ads_per_page": {
      "type": "number",
      "minimum": 0,
      "description": "Ad units per page, used with cpm."
    },
    "cpm": {
      "type": "number",
      "minimum": 0,
      "description": "Earnings per 1,000 ad impressions, in currency units."
    },
    "fill_rate_pct": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "default": 100,
      "description": "Share of ad requests filled."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "monthly_pageviews"
  ]
}
🟢ytd_growth(this_year_monthly, last_year_monthly, this_ytd_total, last_ytd_total, months_elapsed)

Compares year-to-date totals with the same period last year, from monthly values or YTD totals, and gives a simple full-year run rate.

Input Schema

{
  "type": "object",
  "properties": {
    "this_year_monthly": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 12,
      "description": "This year's values by month so far, January first (or first month of the financial year)."
    },
    "last_year_monthly": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 12,
      "description": "Last year's values for the same months."
    },
    "this_ytd_total": {
      "type": "number",
      "description": "Alternative: this year's YTD total."
    },
    "last_ytd_total": {
      "type": "number",
      "description": "Alternative: last year's total for the same period."
    },
    "months_elapsed": {
      "type": "integer",
      "minimum": 1,
      "maximum": 12,
      "description": "Months covered, needed with totals for the run rate."
    }
  }
}
🟢ppc_forecast(monthly_budget, cost_per_click, conversion_rate_pct, value_per_conversion, gross_margin_pct, ...)

Forecasts a paid search or social budget: clicks, conversions, cost per acquisition, revenue, ROAS, profit after ad spend and break-even CPA, from budget, CPC and conversion rate.

Input Schema

{
  "type": "object",
  "properties": {
    "monthly_budget": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "cost_per_click": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "conversion_rate_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Share of clicks that convert."
    },
    "value_per_conversion": {
      "type": "number",
      "minimum": 0,
      "description": "Optional revenue per conversion."
    },
    "gross_margin_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Optional gross margin for profit and break-even CPA."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "monthly_budget",
    "cost_per_click",
    "conversion_rate_pct"
  ]
}
🟢customer_lifetime_value(average_order_value, purchases_per_year, customer_lifespan_years, gross_margin_pct, annual_discount_rate_pct, ...)

Calculates customer lifetime value for repeat-purchase businesses such as D2C and ecommerce from average order value, purchases per year, lifespan and margin, with optional discounting and LTV to CAC.

Input Schema

{
  "type": "object",
  "properties": {
    "average_order_value": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "purchases_per_year": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "customer_lifespan_years": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "gross_margin_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "annual_discount_rate_pct": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "Optional, to discount future years."
    },
    "cac": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Optional customer acquisition cost."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "average_order_value",
    "purchases_per_year",
    "customer_lifespan_years",
    "gross_margin_pct"
  ]
}
🟢ecommerce_metrics(revenue, orders, sessions, customers, target_revenue, ...)

Calculates average order value, conversion rate, revenue per visitor and orders per customer, and the sessions needed to hit a revenue target.

Input Schema

{
  "type": "object",
  "properties": {
    "revenue": {
      "type": "number",
      "minimum": 0
    },
    "orders": {
      "type": "integer",
      "minimum": 1
    },
    "sessions": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Optional sessions or visitors in the same period."
    },
    "customers": {
      "type": "integer",
      "minimum": 1,
      "description": "Optional unique customers."
    },
    "target_revenue": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Optional revenue goal for the same period length."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "revenue",
    "orders"
  ]
}
🟢growth_projection(start_value, growth_rate_pct, periods, period_type, target_value)

Projects a value forward at a compound growth rate per period (exponential growth), shows each period, the doubling time and how long it takes to reach a target.

Input Schema

{
  "type": "object",
  "properties": {
    "start_value": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "growth_rate_pct": {
      "type": "number",
      "exclusiveMinimum": -100,
      "description": "Growth per period as a percentage; negative for decline."
    },
    "periods": {
      "type": "integer",
      "minimum": 1,
      "maximum": 120
    },
    "period_type": {
      "type": "string",
      "enum": [
        "month",
        "quarter",
        "year"
      ],
      "default": "month"
    },
    "target_value": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Optional target to reach."
    }
  },
  "required": [
    "start_value",
    "growth_rate_pct",
    "periods"
  ]
}
🟢acos_check(ad_spend, ad_sales, gross_margin_pct, total_sales, currency)

Calculates Amazon advertising cost of sales (ACoS), ROAS, break-even ACoS from margin, profit after ads, and TACoS against total sales.

Input Schema

{
  "type": "object",
  "properties": {
    "ad_spend": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "ad_sales": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "gross_margin_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Optional margin before ad costs."
    },
    "total_sales": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Optional total sales including organic, for TACoS."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "ad_spend",
    "ad_sales"
  ]
}
🟢share_of_voice(brand_name, brand_value, competitors, metric)

Calculates share of voice for a brand against competitors on any metric: AI assistant citations or mentions, search impressions, ad impressions, social mentions or press coverage.

Input Schema

{
  "type": "object",
  "properties": {
    "brand_name": {
      "type": "string"
    },
    "brand_value": {
      "type": "number",
      "minimum": 0
    },
    "competitors": {
      "type": "array",
      "maxItems": 20,
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "number",
            "minimum": 0
          }
        },
        "required": [
          "name",
          "value"
        ]
      }
    },
    "metric": {
      "type": "string",
      "description": "What was counted, for example ChatGPT citations or impressions."
    }
  },
  "required": [
    "brand_name",
    "brand_value",
    "competitors"
  ]
}
🟢break_even(fixed_costs, price_per_unit, variable_cost_per_unit, target_profit, currency)

Calculates break-even units and revenue from fixed costs, price and variable cost per unit, the contribution margin, and units needed for a target profit.

Input Schema

{
  "type": "object",
  "properties": {
    "fixed_costs": {
      "type": "number",
      "minimum": 0
    },
    "price_per_unit": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "variable_cost_per_unit": {
      "type": "number",
      "minimum": 0
    },
    "target_profit": {
      "type": "number",
      "minimum": 0,
      "description": "Optional profit goal."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "fixed_costs",
    "price_per_unit",
    "variable_cost_per_unit"
  ]
}
🟢campaign_roi(cost, attributed_revenue, gross_margin_pct, campaign_name, currency)

Calculates ROI for a marketing campaign or channel (content, email, events, influencer, recruitment marketing) on revenue and on gross profit.

Input Schema

{
  "type": "object",
  "properties": {
    "cost": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Total campaign cost."
    },
    "attributed_revenue": {
      "type": "number",
      "minimum": 0
    },
    "gross_margin_pct": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100,
      "description": "Optional margin for profit-based ROI."
    },
    "campaign_name": {
      "type": "string",
      "description": "Optional label."
    },
    "currency": {
      "type": "string",
      "description": "ISO currency code for display, for example INR, USD or AED. Defaults to INR.",
      "default": "INR"
    }
  },
  "required": [
    "cost",
    "attributed_revenue"
  ]
}
🟢attrition_rate(separations, headcount_start, headcount_end, period_months)

Calculates employee attrition or customer churn rate for a period from separations and headcount at the start and end, with a simple annualised rate.

Input Schema

{
  "type": "object",
  "properties": {
    "separations": {
      "type": "number",
      "minimum": 0,
      "description": "People or customers who left in the period."
    },
    "headcount_start": {
      "type": "number",
      "minimum": 0
    },
    "headcount_end": {
      "type": "number",
      "minimum": 0
    },
    "period_months": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 12,
      "default": 1
    }
  },
  "required": [
    "separations",
    "headcount_start",
    "headcount_end"
  ]
}
🟢book_strategy_call

Returns the link to book a free 30-minute growth strategy call with upGrowth. Use only when the user asks to speak with upGrowth.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded29 tools