Gentic Startup — Documentation
Create an idea, research the market, validate it, generate names, check domains, research competitors, build a full brand identity, deploy a branded landing page with lead capture on your own domain, and launch Meta ads — all through your AI agent. Every tool call is scoped to an idea, so you can explore multiple concepts in parallel and pick up exactly where you left off. Built for solo founders, side-project builders, home-based businesses, and vibe-coders. Not for VC-backed startups.
1. Getting Started
Sign Up & Get Your API Key
Before you can use Gentic Startup, you need an API key to authenticate your requests.
- Go to gentic.co/startup and create an account.
- Create an organization from your dashboard. API keys and billing are scoped to the organization.
- Generate an API key and use it as a Bearer token in your MCP client.
2. Connecting to the MCP Server
The server is available at https://mcp.gentic.co/startup. For Claude Code:
claude mcp add gentic-startup \
--transport http \
https://mcp.gentic.co/startup \
--header "Authorization: Bearer YOUR_API_KEY"For Claude Web and ChatGPT you can also connect via OAuth — no API key needed. See the connect section on the landing page for other MCP clients (n8n, OpenClaw).
3. Agent Skill
For the best results, pair the MCP server with the Gentic Startup agent skill. The MCP server gives your agent tool access; the skill teaches it the optimal workflow order. Both the raw SKILL.md and a ready-to-upload .skill bundle are generated on demand from the live manifest, so they always reflect the current tools and pricing.
Add the skill directly via URL:
https://gentic.co/startup/SKILL.mdOr upload a .skill bundle to Claude Managed Agents:
https://gentic.co/startup/gentic-startup.skillDownload this file and upload it wherever Claude Managed Agents asks for a .skill file. It's a zip bundle generated on demand from the latest SKILL.md.
4. When to Apply
- User is exploring a new business idea and wants a structured gut-check before committing time.
- User wants market signal — Reddit sentiment, Google Trends interest, or web coverage — before building.
- User needs to name a business, product, or side project and wants candidates with domain suggestions.
- User wants to check domain availability and pricing before buying.
- User wants a competitive landscape overview for a bootstrapped business.
- User needs a brand identity foundation (positioning, voice, colors, fonts, persona).
- User wants to ship a branded landing page with built-in email lead capture to a live URL.
- User wants to connect a custom domain they own so a landing page serves from their own URL.
- User wants to generate on-brand ad images before launching paid campaigns.
- User wants to launch, monitor, or iterate Meta ad campaigns (Facebook/Instagram).
- User wants to retrieve or revisit results from earlier startup tool calls.
- User wants to track multiple business ideas in parallel and see which ones are exploring, validated, active, or paused.
- User wants to mark an idea as the one they're actively building (or shelve one to revisit later).
5. Workflow
1. Start by creating an idea with `create_idea` (free)
Before most other tools, call `create_idea` with a unique kebab-case `idea_slug` (e.g. `pet-subscription-box`, `ai-tutor-app`) and a human-readable `name`. Optionally pass a `description`. Most subsequent tools require the same `idea_slug`, so all research, validations, names, competitor findings, brand identities, landing pages, and ads accumulate against that idea. Use `list_ideas` (free) any time to see what's already there before creating a new one — pass `include_paused: true` to include shelved ideas.
2. Run market research with `search_web`, `search_reddit`, and `google_trends`
Three complementary signals, all org-scoped and persisted. `search_web` (5¢/call) uses Serper.dev for current news, reviews, competitors, and press. `search_reddit` (5¢/result, min 5¢) pulls consumer discussions with filterable subreddits, sort order, and time window — great for raw pain-point language. `google_trends` (10¢/call) returns interest-over-time and regional breakdowns for 1-5 keywords. Replay any prior run with `get_research_results` (free) — filter by `run_id`, `source`, or `limit`.
3. Validate the idea with `validate_business_idea` ($0.15/call)
Pass the `idea_slug` plus the full `businessIdea` (what it is, who it's for, how it makes money) and optional `founderContext` (skills, budget, time availability, location, audience). Scores 5 criteria and returns a verdict (Strong / Promising / Needs Work / Rethink), strengths, risks, and concrete next steps. Frame the verdict honestly — it is tuned for bootstrappers, not VC growth stories. Pass `webhook_url` to run async (30-90s otherwise).
4. Generate names with `generate_startup_names` ($0.15/call)
Pass the `idea_slug` plus `businessDescription`, `targetEmotion` (the single dominant feeling — relief, momentum, wonder, belonging), `brandTone` (playful↔serious, innovative↔traditional), `nonStarters` (words or associations to avoid), and `industry`. Returns 20 names across 5 categories with memory/meaning/range scores and a top 3. Pair with `check_domain_availability` to verify favorites. Pass `webhook_url` to run async.
5. Check domains with `check_domain_availability` (free)
Scoped to an `idea_slug`. Two modes, usable together: pass `domainNames` (up to 50) for exact availability on specific domains, and/or a `keyword` for TLD-wide search. Use `tldFilter` to restrict keyword results (e.g. `['com', 'io', 'co']`). Returns purchasability, pricing from Name.com's live API, and TLD info. Free — run this aggressively.
6. Research competitors with `research_competitors` ($0.15/call)
Pass the `idea_slug` plus `businessDescription`, optional `industry`, `knownCompetitors` (names/sites you already know), and `focusAreas` (pricing, customer acquisition, support weaknesses). Identifies 6-10 competitors across direct, indirect, and adjacent categories, maps positioning and pricing, and surfaces differentiation opportunities. Pass `webhook_url` to run async.
7. Build brand identity with `generate_brand_identity` ($0.15/call)
Pass the `idea_slug` plus `businessDescription` and optional `businessName`, `industry`, `brandPreferences` (reference brands, desired tone), and `targetAudience`. Returns positioning (statement, elevator pitch, taglines), personality (archetype, voice, values), visual direction (color palette with hex, typography with free font suggestions, logo direction), a target persona, and the brand story. Pass `webhook_url` to run async.
8. Persist brand choices with `save_brand_style_guide` (free)
Pass the `idea_slug` plus any subset of brand fields (`primary_color`, `secondary_color`, `accent_color`, the `*_color_name` variants, `heading_font`, `body_font`, `voice`, `personality_traits`, `visual_mood`, `logo_direction`). Omitted fields keep their current value if a guide already exists. The saved guide is applied automatically to any landing page deployed with that `idea_slug`.
9. Deploy a landing page with `deploy_landing_page` ($7.50/call)
Pass a `slug` (3-64 chars, lowercase alphanumeric + hyphens), a `title`, and a complete self-contained `html` document. Optionally pass `idea_slug` to auto-inject the idea's brand style guide, `description`, or `reference_url` for provenance. Set `ignore_brand_style_guide: true` to skip CSS injection. The page goes live instantly at `{org-slug}.gentic.run/{slug}` with a built-in lead capture endpoint. Use `list_landing_pages` (free) to see everything currently deployed.
10. Iterate cheaply with `patch_landing_page` (50¢/call)
For copy fixes, image swaps, or color tweaks, call `get_landing_page_html` (free) to read the current HTML plus its `content_hash`, then `patch_landing_page` with `page_id` and an `edits` array of `{ old_string, new_string, replace_all? }`. Pass the hash as `expected_content_hash` for optimistic concurrency. 15× cheaper than replacing the whole page — reach for `replace_landing_page` ($7.50) only for layout changes or full rewrites.
11. Capture and export leads (all free)
Every deployed page includes a lead capture endpoint at `POST /api/leads/:orgSlug/:pageId` (accepts `email` required, plus optional `name`, `source`, `metadata`). Query submissions inline with `get_landing_page_leads` (paginated, max 500/page). Export a signed CSV with `export_landing_page_leads` — tell the user the link expires in **1 hour**. `delete_landing_page` soft-deletes the page but **preserves all lead data**.
12. Connect a custom domain: `connect_custom_domain` → `verify_custom_domain` → serve
Once the landing page is live, call `connect_custom_domain` (25¢) with a fully-qualified `domain` (e.g. `acme.com`) — this registers the mapping and kicks off a Fly Let's Encrypt cert. The domain starts in `pending` state. Poll `verify_custom_domain` (free) with the same domain to check cert provisioning; once ready, the mapping flips to `verified` and landing pages start serving from the custom host. `list_custom_domains` (free) shows all domains with current verification status. `disconnect_custom_domain` (free) removes the cert and stops serving. Mention the 25¢ cost on connect before running.
13. Generate ad creative with `generate_ad_asset` ($1/image)
Pass a `prompt` (image description) plus optional `inspiration_image_urls` (up to 5 reference ads for style) and `brand_image_urls` (up to 5 brand assets — logos, product shots). Control output with `aspect_ratio`, `image_size` (1K/2K/4K), and `count` (1-10 images). Billed **per image** at $1.00 each (min $1.00) — confirm `count` before firing. Pass `webhook_url` to run async.
14. Browse Meta ad accounts with `get_meta_ids` and `get_meta_pages` (free)
Navigate top-down with `get_meta_ids`: `level: "adaccounts"` → `"campaigns"` (with `parent_id`) → `"adsets"` → `"ads"` → `"adcreatives"`. Pass `date_preset` or `time_range` to include spend inline. `get_meta_pages` lists Facebook Pages connected to the authenticated user — you'll need a page_id for ad creation. **Critical**: all Meta IDs must be passed as **quoted strings** — bare numbers get rounded and silently mis-target.
15. Pull insights with `fetch_meta_insights` (10¢/call)
Query ad performance with `level` (`campaign`/`adset`/`ad`), `ids` as a comma-separated quoted string, and either `date_preset` OR `time_range` (never both). Add `breakdowns` like `"age,gender"` when the user wants slices. Default `fields` cover impressions, spend, clicks, CTR, actions, conversions — only override when the user specifies. Mention the 10¢ cost before running many calls in a row.
16. Launch Meta campaigns: campaign → adset → image ad
`create_meta_campaign` (free) is created in `PAUSED` status with `OUTCOME_SALES` by default — never un-pause automatically. Budgets are in **cents as quoted strings** (`"500000"` = $5,000). `create_meta_adset` (free) holds the targeting (geo, age, interests) and inherits CBO budget from the campaign (or sets its own). Upload imagery first with `upload_meta_image` (free, needs a publicly accessible URL) to get an `image_hash`. Then `create_meta_image_ad` ($1/call) combines the hash with copy, CTA, and landing page URL — Advantage+ enhancements auto-disabled. Confirm all inputs before firing the $1 call.
17. Track progression with `update_idea_status` and `list_ideas` (free)
Use `update_idea_status` to move an idea through the lifecycle: `exploring` → `validated` → `active` (this is the one you're building!) → `paused` (didn't work out, revisit later). Pass the `idea_slug` plus the target `status`. `list_ideas` returns every idea in your org with current status and tool-result counts; pass `include_paused: true` to surface shelved ones.
18. Retrieve and export results (all free)
`get_startup_results` returns saved output for a given `idea_slug`, newest-first — pass `toolName` to filter (e.g. only `generate_startup_names` runs) and `limit` (1-50). `get_research_results` does the same for web/Reddit runs. `export_startup_report` renders any saved result as a markdown document with a permanent download link — pass a specific `resultId`, or `idea_slug` + `toolName` to export the most recent of that type.
19. Async via webhook_url (optional but recommended)
`validate_business_idea`, `generate_startup_names`, `research_competitors`, `generate_brand_identity`, and `generate_ad_asset` each accept `webhook_url`. Without it, the tool blocks 30-90 seconds waiting on Gemini (or longer for batch image generation). With it, the tool returns immediately with `{ job_id, status: "processing" }` and POSTs the result to your webhook when done. Webhook payload: `{ job_id, tool_name, status: "completed" | "failed", result_data?, error? }`.
6. Tool Reference
35 tools, rendered live from the Gentic MCP manifest. Parameter tables come directly from each tool's JSON Schema.
check_domain_availability
Check domain name availability and get alternative suggestions. Two modes: (1) pass specific domainNames to check exact availability, (2) pass a keyword to search for available domains across TLDs. You can use both together. Returns purchasability, pricing, and TLD info for each result.
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Slug identifying the idea this tool call belongs to (e.g. 'pet-subscription-box'). Create an idea first with create_idea. |
domainNames | string[] | Specific domain names to check availability for (e.g. ['mybrand.com', 'mybrand.io']). Max 50. |
keyword | string | Keyword to search for available domains (e.g. 'mybrand'). Returns suggestions across TLDs. |
tldFilter | string[] | Limit keyword search results to specific TLDs (e.g. ['com', 'io', 'co']). Only applies to keyword search. |
connect_custom_domain
Connect a customer-owned domain (e.g. acme.com) to serve this org's landing pages. Provisions a Let's Encrypt cert via Fly and returns the CNAME record the customer must add. After the CNAME propagates (usually a few minutes), call verify_custom_domain to finalize.
| Parameter | Type | Description |
|---|---|---|
domainrequired | string | Fully-qualified domain the customer wants to use, e.g. 'acme.com' or 'www.acme.com' |
create_idea
Create a new business idea to explore. All startup tools (validation, naming, brand identity, etc.) are scoped to an idea. Create an idea first, then run tools against it. Ideas start in 'exploring' status.
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Short kebab-case slug for this idea (e.g. 'pet-subscription-box', 'ai-tutor-app'). Must be unique. |
namerequired | string | Human-readable name for the idea (e.g. 'Pet Subscription Box') |
description | string | Brief description of the idea |
create_meta_adset
Create a new Meta ad set within a campaign. Define targeting, budget, optimization, and scheduling. IMPORTANT: All IDs (campaign_id, ad_account_id, bid_amount, daily_budget) MUST be quoted strings, NEVER bare numbers.
This tool takes no parameters.
create_meta_campaign
Create a new Meta advertising campaign. Defaults to PAUSED status and OUTCOME_SALES objective. IMPORTANT: All IDs (ad_account_id, daily_budget) MUST be quoted strings, NEVER bare numbers.
This tool takes no parameters.
create_meta_image_ad
Create a new Meta static image ad. Provide image_hash (from upload_meta_image) or image_url. All Advantage+ enhancements are disabled. IMPORTANT: All IDs (adset_id, page_id) MUST be quoted strings, NEVER bare numbers.
This tool takes no parameters.
delete_landing_page
Remove a landing page from public hosting. Lead data is preserved and still queryable.
| Parameter | Type | Description |
|---|---|---|
page_idrequired | string | Page ID to delete |
deploy_landing_page
Deploy a landing page to a live URL at {org-slug}.gentic.run/{page-slug}. Provide the complete HTML content, a URL slug, and a title. The page will be publicly accessible immediately.
| Parameter | Type | Description |
|---|---|---|
slugrequired | string | URL path segment (lowercase, alphanumeric + hyphens, 3-64 chars) |
titlerequired | string | Page title for display and metadata |
htmlrequired | string | Complete, self-contained HTML document for the landing page |
description | string | Brief description of the page's purpose |
reference_url | string | Original reference URL used for generation |
idea_slug | string | Idea slug to pull brand style guide from. If provided, injects the idea's brand CSS into the page. |
ignore_brand_style_guiderequired | boolean | Skip injecting the brand style guide CSS into this page (default: false) default: false |
disconnect_custom_domain
Disconnect a custom domain. Removes the Fly-issued cert, deletes the DB mapping, and stops serving landing pages on this domain.
| Parameter | Type | Description |
|---|---|---|
domainrequired | string | The custom domain to disconnect |
export_landing_page_leads
Export collected leads as a downloadable CSV file. Returns a signed URL that expires in 1 hour.
| Parameter | Type | Description |
|---|---|---|
page_id | string | Specific page ID (if omitted, exports leads from all pages) |
export_startup_report
Export a saved startup result as a formatted markdown document. Renders naming research, business validation, competitive analysis, brand identity, or domain reports into polished markdown files and returns a permanent download link. Provide either a specific resultId or a toolName to export the most recent result of that type.
| Parameter | Type | Description |
|---|---|---|
idea_slug | string | The idea to export from. Required when using toolName. Not needed when using resultId. |
resultId | string | The specific result ID to export (from get_startup_results). If omitted, exports the most recent result for the given toolName. |
toolName | string | Export the most recent result for this tool. Required if resultId is not provided. enum: generate_startup_names, validate_business_idea, check_domain_availability, research_competitors, generate_brand_identity |
fetch_meta_insights
Get Meta ad performance insights for campaigns, ad sets, or ads. Supports date filtering, custom fields, and breakdowns. IMPORTANT: All IDs MUST be quoted strings (e.g. ids: "120239005302490769"), NEVER bare numbers — JavaScript rounds large integers.
This tool takes no parameters.
generate_ad_asset
Generate ad images asynchronously. Supports batch generation — use the 'count' parameter to generate multiple images in one call (e.g. count=5 for 5 images). Do NOT call this tool multiple times to generate multiple images; instead, call it once with the desired count. Optionally provide inspiration_image_urls with competitor/reference ads to emulate their style. Returns job_id(s) immediately. The user will receive an email notification when the job completes. Use list_asset_jobs to check status and results.
| Parameter | Type | Description |
|---|---|---|
promptrequired | string | Detailed text prompt describing the ad image to generate |
inspiration_image_urlsrequired | string[] | 0-5 reference/competitor ad URLs to use as style inspiration. The AI will emulate the visual style, layout, and aesthetic of these images — but NOT copy their content. default: [] |
brand_image_urlsrequired | string[] | 0-5 brand asset URLs (product photos, logos) to incorporate into the generated image default: [] |
aspect_ratiorequired | string | Aspect ratio for the generated image enum: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 · default: "1:1" |
image_sizerequired | string | Image resolution: 1K (1024px), 2K (2048px), or 4K (4096px) enum: 1K, 2K, 4K · default: "4K" |
countrequired | integer | Number of images to generate in parallel (1-10, default 1). IMPORTANT: To generate multiple images, set this parameter instead of calling the tool multiple times. 1 – 10 · default: 1 |
webhook_url | string | Optional webhook URL to receive a POST request when the job completes. The payload includes job_id, status, asset_url, prompt, and other metadata. |
generate_brand_identity
Generate a complete brand identity foundation for a business. Covers positioning (statement, elevator pitch, taglines), brand personality (archetype, voice, values), visual direction (color palette with hex codes, typography with free font suggestions, logo direction), target audience persona, and brand story (mission, vision, origin narrative). Designed for bootstrapped founders who need to build a brand without a design agency. Pass a webhook_url to run async.
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Slug identifying the idea this tool call belongs to (e.g. 'pet-subscription-box'). Create an idea first with create_idea. |
businessDescriptionrequired | string | What the business does, its value proposition, and who it serves. Include any existing brand elements (name, colors, etc.) if you have them. Max 5000 characters. |
businessName | string | The business/brand name, if already decided. Helps tailor positioning and taglines. |
industry | string | The industry or category (e.g. 'home bakery / desserts', 'SaaS / developer tools'). Helps inform visual and tone direction. |
brandPreferences | string | Any existing preferences: colors you like, brands you admire, tone you want (e.g. 'warm and approachable like Mailchimp', 'minimal and premium like Aesop'). Max 2000 characters. |
targetAudience | string | Who the business serves — demographics, psychographics, or customer description. Max 1000 characters. |
webhook_url | string | Optional webhook URL to receive a POST when the job completes. Payload includes job_id, tool_name, status, and result_data. When provided, the tool returns immediately with a job_id instead of waiting. |
generate_startup_names
Generate creative startup/business name candidates with professional naming frameworks. Produces 20 names across 5 categories (descriptive, experiential, evocative, invented, identity), scores each on memory/meaning/range, suggests domain strategies, and picks a top 3. Pair with check_domain_availability to verify domain options for your favorites. Note: always verify trademark availability and cross-language meanings independently — AI-generated linguistic checks are directional, not definitive. Pass a webhook_url to run async — the tool returns immediately with a job_id and POSTs results to the webhook when done.
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Slug identifying the idea this tool call belongs to (e.g. 'pet-subscription-box'). Create an idea first with create_idea. |
businessDescriptionrequired | string | What the business does, its unique value proposition, and who it serves. The more detail, the better the names. Max 5000 characters. |
targetEmotion | string | The single dominant emotion the brand should evoke (e.g. 'relief', 'momentum', 'wonder', 'belonging', 'rebellion', 'control', 'delight'). Helps anchor the naming direction. |
brandTone | string | The brand's personality and tone. Use spectrums: playful↔serious, innovative↔traditional, accessible↔exclusive. E.g. 'playful and accessible, slightly irreverent' or 'serious and premium, but approachable'. |
nonStarters | string | Words, styles, or associations to avoid. E.g. 'nothing with AI in the name, no pharmaceutical-sounding names, avoid anything similar to competitor XYZ'. Max 1000 characters. |
industry | string | The industry or category (e.g. 'home bakery / desserts', 'SaaS / developer tools', 'fitness / wellness'). Helps differentiate from competitors. |
webhook_url | string | Optional webhook URL to receive a POST when the job completes. Payload includes job_id, tool_name, status, and result_data. When provided, the tool returns immediately with a job_id instead of waiting. |
get_landing_page_html
Fetch the current HTML of a deployed landing page. Pair with patch_landing_page to make small targeted edits (copy fixes, image swaps, color tweaks) without regenerating the whole page. The returned content_hash can be passed to patch_landing_page as expected_content_hash for optimistic concurrency.
| Parameter | Type | Description |
|---|---|---|
page_idrequired | string | Page ID to fetch |
get_landing_page_leads
Query collected leads (email submissions) for a specific landing page. Returns results in reverse chronological order with pagination.
| Parameter | Type | Description |
|---|---|---|
page_idrequired | string | Page ID to query leads for |
limit | number | Max results (default: 100, max: 500) max 500 · default: 100 |
offset | number | Pagination offset (default: 0) default: 0 |
get_meta_ids
Get Meta Ad IDs hierarchically. Start with level="adaccounts" to discover accounts, then drill down: campaigns → adsets → ads → adcreatives. IMPORTANT: All IDs MUST be passed as quoted strings (e.g. "120239005302490769"), NEVER as bare numbers — JavaScript rounds large integers and the call will fail silently with a wrong ID.
This tool takes no parameters.
get_meta_pages
Get list of Facebook Pages associated with the authenticated user. Returns page IDs needed for creating ads.
This tool takes no parameters.
get_research_results
Retrieve stored research results across sources (Reddit, web). Pass a run_id to get full results from a specific search, or omit it to list recent research runs with metadata.
| Parameter | Type | Description |
|---|---|---|
run_id | string | Specific research run ID to retrieve. Omit to list recent runs. |
source | string | Filter listing to a single source. Omit to list across all sources. enum: reddit, web |
limit | number | Max results to return. Defaults to 25. 1 – 100 |
get_startup_results
Retrieve saved results from previous startup tool calls (naming, validation, domain checks, competitor research). Returns results newest-first. Filter by tool name to see only naming results, only validations, etc.
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Slug identifying the idea this tool call belongs to (e.g. 'pet-subscription-box'). Create an idea first with create_idea. |
toolName | string | Filter by tool name. Omit to see all saved startup results. enum: generate_startup_names, validate_business_idea, check_domain_availability, research_competitors, generate_brand_identity |
limitrequired | integer | Number of results to return (default 10, max 50). 1 – 50 · default: 10 |
google_trends
Get Google Trends data for keywords — interest over time, related queries, and interest by region. Use this to identify trending topics, compare keyword popularity, and spot emerging market opportunities. Returns trend data and stores results for later retrieval.
| Parameter | Type | Description |
|---|---|---|
keywordsrequired | string[] | Keywords to analyze (1-5). Multiple keywords are compared against each other, e.g. ['minoxidil', 'finasteride', 'hair transplant']. |
geo | string | Country code to scope results, e.g. 'US', 'GB', 'CA'. Omit for worldwide. |
timeRange | string | Time range for trend data. Defaults to '12m' (past 12 months). enum: 3m, 6m, 12m, 5y |
includeRelatedQueries | boolean | Include top and rising related queries. Defaults to true. |
includeRegions | boolean | Include interest by region/country. Defaults to false. |
list_custom_domains
List all custom domains connected to this organization along with their verification status.
This tool takes no parameters.
list_ideas
List all business ideas for this organization with their status and tool result counts.
| Parameter | Type | Description |
|---|---|---|
include_pausedrequired | boolean | Include paused ideas (default: false) default: false |
list_landing_pages
List all landing pages for the organization with metadata and lead counts.
| Parameter | Type | Description |
|---|---|---|
include_deleted | boolean | Include deleted pages (default: false) default: false |
patch_landing_page
Apply small, targeted string-replacement edits to an existing landing page's HTML without regenerating the whole page. Call get_landing_page_html first to fetch current content. Each edit's old_string must appear exactly once in the HTML (or set replace_all: true) — include enough surrounding context to make it unique. Pass new_string: '' to delete the matched substring. Use this for copy fixes, image src swaps, color tweaks. For full rewrites, use replace_landing_page.
| Parameter | Type | Description |
|---|---|---|
page_idrequired | string | Page ID to patch |
editsrequired | object[] | Sequential edits. Each sees the result of prior edits. |
expected_content_hash | string | Optional sha256 of the HTML the edits were authored against (from get_landing_page_html). If provided and the stored content has changed, the patch fails without writing. Detects stale reads — not a lock; concurrent patches between the hash check and write are still possible. |
replace_landing_page
Replace an existing landing page's HTML with a full new document and/or update its metadata. Use this for layout changes, major restructures, or metadata-only updates (title, description). For small edits (copy fixes, image swaps, color tweaks), prefer patch_landing_page — it is much cheaper and faster because it does not require regenerating the whole page.
| Parameter | Type | Description |
|---|---|---|
page_idrequired | string | Page ID to replace |
html | string | New full HTML content. If omitted, existing content is unchanged. |
title | string | New title |
description | string | New description |
idea_slug | string | Idea slug to pull brand style guide from. If provided, injects the idea's brand CSS into the page. |
ignore_brand_style_guiderequired | boolean | Skip injecting the brand style guide CSS into this page (default: false) default: false |
research_competitors
Research the competitive landscape for a business idea. Identifies 6-10 competitors (direct, indirect, adjacent), analyzes their positioning, pricing, strengths and weaknesses, maps market maturity and consolidation, and surfaces differentiation opportunities a bootstrapper can act on. Pass a webhook_url to run async — the tool returns immediately with a job_id and POSTs results to the webhook when done.
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Slug identifying the idea this tool call belongs to (e.g. 'pet-subscription-box'). Create an idea first with create_idea. |
businessDescriptionrequired | string | What the business does, its value proposition, and who it serves. The more specific, the better the competitive analysis. Max 5000 characters. |
industry | string | The industry or category (e.g. 'home bakery / desserts', 'SaaS / developer tools', 'fitness / wellness'). Helps narrow the competitor search. |
knownCompetitors | string | Competitors you already know about (names, websites). Helps the analysis include them and find others in the same space. Max 2000 characters. |
focusAreas | string | Specific aspects to focus on (e.g. 'pricing strategy', 'how they acquire customers', 'their weaknesses in customer support'). Max 1000 characters. |
webhook_url | string | Optional webhook URL to receive a POST when the job completes. Payload includes job_id, tool_name, status, and result_data. When provided, the tool returns immediately with a job_id instead of waiting. |
save_brand_style_guide
Save or update a brand style guide for a specific idea. Sets brand colors, fonts, and tone that are automatically applied to future landing pages. You can set individual fields — any field you omit keeps its current value (if a guide already exists).
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | The idea this style guide belongs to |
primary_color | string | Primary brand color (hex, e.g. '#2D5A3D') |
secondary_color | string | Secondary brand color (hex) |
accent_color | string | Accent brand color (hex) |
primary_color_name | string | Name for the primary color (e.g. 'Forest Green') |
secondary_color_name | string | Name for the secondary color |
accent_color_name | string | Name for the accent color |
heading_font | string | Font family for headings (e.g. 'DM Serif Display') |
body_font | string | Font family for body text (e.g. 'Inter') |
voice | string | Brand voice description (e.g. 'Warm, approachable, and confident') |
personality_traits | string[] | Personality trait keywords (e.g. ['friendly', 'minimal', 'bold']) |
visual_mood | string[] | Visual mood keywords (e.g. ['warm', 'organic', 'handcrafted']) |
logo_direction | string | Logo direction notes |
search_reddit
Search Reddit for consumer discussions, problems, and sentiment around a product category or topic. Returns structured posts with title, body, score, subreddit, and URL. Results are stored for later retrieval. Billed per result.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | Search query — be descriptive for better results, e.g. 'hair loss treatment side effects' rather than 'hair loss' |
subreddits | string[] | Filter to specific subreddits (max 5), e.g. ['tressless', 'HaircareScience']. Omit for global search. |
sort | string | Sort order. Defaults to 'relevance'. enum: relevance, hot, new, top, comments |
timeFilter | string | Time filter for results. Defaults to 'all'. enum: hour, day, week, month, year, all |
limit | number | Number of results to return (1-100). Defaults to 25. 1 – 100 |
search_web
Search the web (Google) via Serper.dev for current information — news, competitors, reviews, sentiment, press coverage. Returns ranked organic results with title, URL, snippet, and date, plus an answer box / knowledge graph summary when available. Results are stored for later retrieval. Billed at a flat rate per call.
| Parameter | Type | Description |
|---|---|---|
queryrequired | string | Search query — be descriptive, e.g. 'iRESTORE laser cap reviews 2026' rather than 'iRESTORE' |
limit | number | Number of organic results to return (1-20). Defaults to 10. 1 – 20 |
country | string | Country code for geo-targeting, e.g. 'us', 'gb', 'ca'. Defaults to 'us'. |
language | string | Language code, e.g. 'en', 'es'. Defaults to 'en'. |
timeRange | string | Restrict to results published within this window. Omit for no time filter. enum: day, week, month, year |
update_idea_status
Update the status of a business idea. Use this to mark ideas as validated, active (this is the one!), or paused (didn't work out, revisit later).
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Slug identifying the idea this tool call belongs to (e.g. 'pet-subscription-box'). Create an idea first with create_idea. |
statusrequired | string | New status for the idea enum: exploring, validated, active, paused |
upload_meta_image
Upload an image to a Meta ad account for use in static image ads. Provide a public URL — we download the bytes and upload them to Meta as multipart form data.
| Parameter | Type | Description |
|---|---|---|
ad_account_idrequired | string | Ad account ID |
image_urlrequired | string | Public URL of the image (e.g. AWS S3 pre-signed URL) |
namerequired | string | Name/description for the image |
validate_business_idea
Evaluate a business idea for bootstrapped entrepreneurs. Scores the idea on 5 criteria (market demand, competition, feasibility, revenue clarity, customer reach) and returns a verdict (Strong/Promising/Needs Work/Rethink), strengths, risks, and concrete next steps. Designed for solo founders, side-project builders, small e-commerce brands, and home-based businesses — not VC-backed startups. Pass a webhook_url to run async — the tool returns immediately with a job_id and POSTs results to the webhook when done.
| Parameter | Type | Description |
|---|---|---|
idea_slugrequired | string | Slug identifying the idea this tool call belongs to (e.g. 'pet-subscription-box'). Create an idea first with create_idea. |
businessIdearequired | string | Describe the business idea. Include: what the product/service is, who it's for, and how it makes money. The more detail, the better the evaluation. Max 5000 characters. |
founderContext | string | Optional context about the founder: skills, budget, time availability, location, existing audience, or relevant experience. Helps tailor feasibility and next-step recommendations. Max 2000 characters. |
webhook_url | string | Optional webhook URL to receive a POST when the job completes. Payload includes job_id, tool_name, status, and result_data. When provided, the tool returns immediately with a job_id instead of waiting. |
verify_custom_domain
Check whether a pending custom domain's Fly-issued Let's Encrypt cert has been provisioned. Flips the mapping to 'verified' and starts serving landing pages on the custom domain once ready.
| Parameter | Type | Description |
|---|---|---|
domainrequired | string | The domain previously registered via connect_custom_domain |
7. Pricing
Pricing is pulled live from the Gentic MCP manifest. All prices are per call and deducted from your Gentic credits.
| Tool | Cost |
|---|---|
| check_domain_availability | Free |
| connect_custom_domain | 25¢ / call |
| create_idea | Free |
| create_meta_adset | Free |
| create_meta_campaign | Free |
| create_meta_image_ad | 100¢ / call |
| delete_landing_page | Free |
| deploy_landing_page | 750¢ / call |
| disconnect_custom_domain | Free |
| export_landing_page_leads | Free |
| export_startup_report | Free |
| fetch_meta_insights | 10¢ / call |
| generate_ad_asset | 100¢ / result (min 100¢) |
| generate_brand_identity | 15¢ / call |
| generate_startup_names | 15¢ / call |
| get_landing_page_html | Free |
| get_landing_page_leads | Free |
| get_meta_ids | Free |
| get_meta_pages | Free |
| get_research_results | Free |
| get_startup_results | Free |
| google_trends | 10¢ / call |
| list_custom_domains | Free |
| list_ideas | Free |
| list_landing_pages | Free |
| patch_landing_page | 50¢ / call |
| replace_landing_page | 750¢ / call |
| research_competitors | 15¢ / call |
| save_brand_style_guide | Free |
| search_reddit | 5¢ / result (min 5¢) |
| search_web | 5¢ / call |
| update_idea_status | Free |
| upload_meta_image | Free |
| validate_business_idea | 15¢ / call |
| verify_custom_domain | Free |
8. Notes
- Most tools require an `idea_slug`. Call `create_idea` first, then reuse the same slug across research, validation, naming, domains, competitors, brand identity, landing pages, and ads so results accumulate against one idea.
- Ideas flow through four statuses: `exploring` → `validated` → `active` → `paused`. Use `update_idea_status` to move between them and `list_ideas` to see the whole portfolio (pass `include_paused: true` to include shelved ones).
- Custom domains go through two steps: `connect_custom_domain` (25¢) registers the mapping and starts Fly cert provisioning in `pending` state; `verify_custom_domain` (free) polls until the cert is issued and flips the mapping to `verified`.
- Built for bootstrappers — solo founders, side-project builders, small e-commerce brands, home-based businesses, vibe-coders. Not tuned for VC-backed growth stories.
- Trademark and cross-language linguistic checks from AI are **directional, not definitive**. Always verify independently before committing to a name.
- Five tools (`validate_business_idea`, `generate_startup_names`, `research_competitors`, `generate_brand_identity`, `generate_ad_asset`) accept `webhook_url` for async execution — pass one to avoid blocking on Gemini / image generation.
- `check_domain_availability` is backed by Name.com's live pricing API — prices reflect actual registrar costs at the moment of the call.
- Landing pages deploy to `{org-slug}.gentic.run/{page-slug}`. HTML must be **complete and self-contained** — inline all CSS/JS. Prefer `patch_landing_page` (50¢) over `replace_landing_page` ($7.50) for small edits.
- Always call `get_landing_page_html` before `patch_landing_page` and pass the returned `content_hash` as `expected_content_hash` to avoid clobbering concurrent edits.
- Lead capture is built in at `POST /api/leads/:orgSlug/:pageId`. Soft-deleted pages preserve lead data. CSV export links expire in **1 hour**.
- All Meta IDs (ad account, campaign, adset, ad, creative) must be passed as **quoted strings** — JavaScript rounds large integers and causes silent mis-targeting. Budgets are in **cents as quoted strings** (`"270000"` = $2,700).
- All Meta campaigns, ad sets, and ads default to `PAUSED` — never un-pause automatically. Advantage+ creative enhancements are auto-disabled on `create_meta_image_ad` for full control.
- `generate_ad_asset` is billed **per image** at $1.00 (min $1.00). Confirm `count` before running — a 10-image batch is $10.
- All tools are organization-scoped — users only see their own ideas, research, landing pages, leads, custom domains, and ad accounts.