Best for founders and small growth teams working in Claude, ChatGPT or Cursor who want live Google, AI-answer, Reddit and lead data without a login per source. It replaces tab-hopping between dashboards for ad hoc questions. It is young, run by one person, and answers when asked rather than monitoring. Up to 5 calls run at once per provider family.
What changed
- · New feature Open-source marketing skills repository published source
Manifold MCP is a hosted, read-only Model Context Protocol server that gives an AI agent live marketing data from 13 tool groups: Google search, Search Console, Bing, Analytics, AI answers, ads, Reddit, TikTok, Instagram, Facebook, YouTube, LinkedIn and X. Agents connect to one URL with OAuth or an API key and pay per call in prepaid credits.
Maker: Manifold · Protocol: MCP · Auth: oauth
Compatible agents: Claude, Claude Code, ChatGPT (MCP app, developer mode), Cursor, Codex, Gemini CLI, Grok and Grok Bot, OpenCode, Any MCP client that supports remote servers
Required runtime: None to run locally: the server is hosted at mcp.manifoldmcp.com over streamable HTTP, An MCP client that supports remote servers
About Manifold MCP
Manifold MCP is a hosted Model Context Protocol (MCP) server, the open standard that lets an AI app call outside tools, built by Manifold, a one-person company that Jesse Sibley, a London growth engineer, started in September 2026. Think of it as a connector rather than an app: the work happens in the chat, and your agent calls Manifold from inside Claude, ChatGPT or Cursor. The product documents 81 tools that cover search data, your own site analytics, AI answers, lead lookups, ad libraries and seven social and community platforms. Every one of them looks something up, and the vendor states that none posts, sends or edits anything. It is not related to Manifold Markets, the prediction market that has MCP servers of its own.
Everything runs through one URL over streamable HTTP. A client signs in with OAuth 2.1 and PKCE, which the server advertises through standard protected-resource metadata, or a script sends an API key as a bearer token. Credits, keys and usage belong to a workspace, so a team shares one balance. The vendor says search, keyword, backlink and AI answer data come from DataForSEO, and that the social and ad library tools read the platforms' public data. Two tools are slow, a site crawl and the AI answers run, so they return a task id that a free get_task call reads later. Every result carries a meta block with the credits charged, and any call can be capped with max_credits or priced first with dry_run.
The agents that can use it are the ones that speak remote MCP: Claude, Claude Code, ChatGPT, Cursor, plus Codex, Gemini CLI, Grok and OpenCode. Typical jobs are asking which keywords a page ranks 5 to 15 for, finding the gap against a competitor, checking whether ChatGPT and Gemini recommend a brand, finding Reddit threads that ask for a product, reading a rival's live Meta and Google ads, and finding a prospect's work email. A separate MIT repository of task-sized skills tells an agent which tools to call in what order for jobs such as an SEO audit or a lead list.
Billing is prepaid credits with no seat fee, so a call costs what its parameters imply and the agent sees that number before it spends. The plan ladder and per-call examples are in the pricing section below. Plan limits are the same on every tier today, and there is no overage: calls stop when credits run out.
Because it is new, treat it as promising but unproven. For email lookups the closest match in the directory is Hunter, and Manifold's domain-email tool even takes Hunter's department names as filters. For raw search results, look at SearchApi; for search built for agent retrieval, Exa; and to route many connectors through one gateway, Composio. Teams that want a per-user sales platform may prefer Apollo.io, those that want an enrichment workspace may prefer Clay, enterprise social listening is the territory of Brandwatch, and content teams can pair keyword data with an editor such as Surfer SEO. Browse the search skills, or ask Smart Match which data connector fits your stack.
Key Features
- Thirteen tool groups behind one link: Search, site analytics, AI answers, leads, ads and seven social and community platforms share one server URL and one credit balance, so a chain of lookups needs no second login.
- Price shown before the call: Each tool states its cost, dry_run returns the estimate for free, and max_credits refuses any call whose estimate is higher, which is the control an agent that loops needs.
- Five AI engines on demand: aeo_run_ai_answers asks ChatGPT, Claude, Gemini, Perplexity and Google AI Overviews any prompt (AI Mode is optional) and reports which brands each answer names, in what position, and which pages it cites.
- Free reads of your own sites: The Search Console, Bing Webmaster Tools and Google Analytics 4 tools cost 0 credits because they read accounts you connect, though they are rate limited per workspace.
- Async technical crawl: seo_run_technical_crawl audits up to 1,000 pages and returns a task id; get_task reads the result for 30 days, and turning on JavaScript rendering multiplies the price by ten.
- Typed errors that mostly cost nothing: Ten typed results such as BudgetExceeded, NoData, NotConnected and ConcurrencyLimit tell the agent what to do next, and most are not charged.
- Cache discount: A cached answer costs 25% of the live price, rounded up with a minimum of one credit, and nothing when the workspace already paid for the same answer.
- Open skills for whole jobs: The MIT-licensed manifoldmcp/marketing-skills repository packages jobs like an SEO audit or a lead list as skills that name the tools and their order.
Use Cases
- Find keywords a page could win: Ask which keywords a domain ranks 5 to 15 for, pull the live results page and run a keyword gap against a competitor, then get a ranked fix list for the page.
- Check what AI assistants say about a brand: Run a buyer prompt through five AI engines, read which brands are named and which pages are cited, and test whether the site lets AI crawlers in.
- Find Reddit threads asking for your product: Search posts and comments, watch chosen subreddits for new posts that match your terms, read the whole thread and draft a reply for you to review and post yourself.
- Study a competitor's live ads: Pull the ads an advertiser runs on Meta, TikTok, LinkedIn or Google, see what each says and how long it has been live, and write new copy against it.
- Build an outreach list with verified emails: Search people by title and company, read their LinkedIn posts for a buying signal, then reveal a work email only for the ones worth a message.
- Audit your own site from Search Console and Analytics: Read clicks, rankings, sitemaps, indexing and crawl issues from Google and Bing, then sessions and conversions by channel from GA4, at no credit cost.
Install
claude mcp add --transport http manifold https://mcp.manifoldmcp.com/mcp
Requirements
- An MCP client with remote-server support, such as Claude, ChatGPT in developer mode, Cursor, Claude Code, Codex or Gemini CLI
- Sign in with Google or email through the client's OAuth prompt, or send an API key (mk_live_...) from the app's API keys page as a bearer token
- A workspace with credits: new accounts start with free credits and need no card
- For the Search Console, Bing and Analytics tools, connect those accounts in the app first, or the tool returns NotConnected
Actions
Get keyword ideas (seo_search_keywords)
Candidate keywords around a seed, with volume, difficulty, intent, CPC and trend for each. Cost: 5 + 5 per 100 keyword ideas.
tool: seo_search_keywords
arguments:
seed: crm for startups
mode: suggestions
limit: 50seed(string) — required: The seed keyword to expand. Required.mode(string): Which kind of keyword ideas to return. "suggestions" contains the seed | "related" SERP-similar | "ideas" same category, default suggestions.limit(number): Most keyword ideas to return. Default: 100, max 1000.
Check keyword metrics (seo_get_keyword_metrics)
Volume, difficulty, intent, CPC and 12-month trend for keywords you already have, with AI-engine prompt volume on request. Cost: 5 + 5 per 100 keywords with source labs; 24 flat with source google_ads; ai_volume adds 4 + 4 per 100 keywords.
tool: seo_get_keyword_metrics
arguments:
keywords:
- crm for startups
- hubspot alternative
ai_volume: truekeywords(array) — required: The keywords to look up. Required, max 1000.source(string): Which volume source to use. "labs" | "google_ads", default labs; google_ads is Google Keyword Planner's own volume, slower.ai_volume(boolean): Add AI-engine prompt volume for each keyword. Default: False.
Get search results for a query (seo_get_serp)
The top organic results and SERP features Google shows for one query. Cost: 1 credit per 10 results, +1 with ai_overview.
tool: seo_get_serp
arguments:
keyword: hubspot alternative
depth: 10
ai_overview: truekeyword(string) — required: Query to fetch results for. Required.depth(number): How many results to return. Default: 10, max 100.ai_overview(boolean): Include Google's AI overview and its cited sources. Default: false.
Get a site's position for a keyword (seo_get_position)
Where one target ranks for one keyword, scanning the top 100 server-side. Cost: 6 credits flat.
tool: seo_get_position
arguments:
keyword: hubspot alternative
target: example.comkeyword(string) — required: Query to check the ranking for. Required.target(string) — required: Site whose rank you are checking. Required; example.com covers subdomains, www.example.com is that host, a URL is that page.
Get a domain overview (seo_get_domain_overview)
Traffic estimate, ranked keyword count, position spread, top pages and domain rank for one domain. The canonical source of domain rank. Cost: 5 credits; +56 with history.
tool: seo_get_domain_overview
arguments:
target: competitor.comtarget(string) — required: Domain or URL to size up. Required.history(boolean): Include 12 months of history. Default: False.
Get a domain's ranked keywords (seo_get_ranked_keywords)
Keywords a domain or one page ranks for in the top 100, with position, URL and metrics. Cost: 5 + 5 per 100 ranked keywords.
tool: seo_get_ranked_keywords
arguments:
target: competitor.com
limit: 200target(string) — required: Domain or page whose rankings you want. Required; a domain covers subdomains, a URL is that page only.limit(number): Most ranked keywords to return. Default: 100, max 1000.
Find search competitors (seo_get_serp_competitors)
Domains that share search results with a target, with how many keywords overlap. SERP competitors, not business competitors. Cost: 5 + 5 per 100 competing domains.
tool: seo_get_serp_competitors
arguments:
target: example.com
limit: 20target(string) — required: Site to find search rivals for. Required.limit(number): Most competing domains to return. Default: 100, max 1000.
Find keyword gaps (seo_get_keyword_gap)
Keywords one competitor ranks for in the top 100 that the target does not rank for at all. Cost: 5 + 5 per 100 gap keywords.
tool: seo_get_keyword_gap
arguments:
target: example.com
competitor: competitor.com
limit: 100target(string) — required: Your own site, the one missing the keywords. Required.competitor(string) — required: The competitor domain to compare against. Required, one domain.limit(number): Most gap keywords to return. Default: 100, max 1000.
Get a backlink summary (seo_get_backlink_summary)
Link totals for a domain or page: backlinks, referring domains, dofollow share, link types and domain rank. Cost: 10 credits flat.
tool: seo_get_backlink_summary
arguments:
target: example.orgtarget(string) — required: Domain or page to summarise links for. Required; a domain includes subdomains unless include_subdomains is false.include_subdomains(boolean): Subdomain handling for the summary. Default: true.
Get backlinks (seo_get_backlinks)
Individual backlinks pointing at a domain or page, strongest referring domain first. Cost: 10 + 1.5 per 100 backlinks.
tool: seo_get_backlinks
arguments:
target: https://competitor.com/blog/best-crm
limit: 50target(string) — required: Domain or page whose individual links you want. Required.include_subdomains(boolean): Whether subdomains are included in the link list. Default: true.limit(number): Most backlinks to return. Default: 100, max 1000.
Get referring domains (seo_get_referring_domains)
Domains linking to a target, one row per domain, with domain rank, link counts and spam score. Cost: 10 + 1.5 per 100 referring domains.
tool: seo_get_referring_domains
arguments:
target: example.net
limit: 100target(string) — required: Domain or page whose linking domains you want. Required.include_subdomains(boolean): Include subdomains when counting linking domains. Default: true.limit(number): Most referring domains to return. Default: 100, max 1000.
Get domain ratings in bulk (seo_get_domain_ratings)
Domain rank and Ahrefs DR for a list of domains, up to 1,000 per call. The cheap way to rate a list. Cost: 1 + 2.5 per 100 domains, for domain_rank; ahrefs_dr adds nothing.
tool: seo_get_domain_ratings
arguments:
targets:
- example.com
- competitor.com
- blog.example.nettargets(array) — required: Domains to rate. Required, max 1000.
Get traffic estimates in bulk (seo_get_traffic_estimates)
Estimated monthly organic and paid traffic across a batch, up to 1,000 domains per call. Cost: 50 + 50 per 100 domains.
tool: seo_get_traffic_estimates
arguments:
targets:
- example.com
- competitor.comtargets(array) — required: Domains to estimate traffic for. Required, max 1000.
Get an on-page snapshot (seo_get_page)
An on-page snapshot of one URL: title, meta description, canonical, robots, headings, word count, schema types and link counts. Fetched live, free. Cost: 0 credits, rate limited.
tool: seo_get_page
arguments:
url: https://example.com/pricingurl(string) — required: Page to take a snapshot of. Required, http or https.
Run a technical audit (seo_run_technical_crawl)
Crawl a site for technical SEO issues. Slow: it returns a task_id that get_task later turns into the crawl report. Cost: 3 credits per 100 pages; 30 per 100 pages rendered.
tool: seo_run_technical_crawl
arguments:
target: example.com
max_pages: 500target(string) — required: Domain to crawl. Required.max_pages(number) — required: How many pages the crawl visits. Required, max 1000 on the Free plan.render(boolean): Run JavaScript while crawling. False; true executes JavaScript and costs 10x.
List your connected sites (console_list_properties)
List the Search Console and Bing sites you have connected; every other console tool takes one of them as its property. Cost: 0 credits.
tool: console_list_properties
arguments:
engine: allengine(string): Which accounts to list sites for: all, google or bing.
Get your search analytics (console_get_search_analytics)
Clicks, impressions, CTR and average position from the user's own Search Console or Bing data, grouped by query, page, country, device or date. Cost: 0 credits.
tool: console_get_search_analytics
arguments:
property: sc-domain:example.com
dimensions:
- query
- page
start_date: 2026-08-01
end_date: 2026-08-31property(string) — required: Search Console or Bing site to report on. Required.engine(string): Which engine to report on: google or bing.dimensions(array): The dimensions to group by. ["query"]; Bing takes one of query, page, date.start_date(string): Earliest date in the report. Default: 28 days before end_date.end_date(string): Last day in the report. Default: 3 days ago, the freshest complete day.search_type(string): The Search Console search type. Default: "web"; Google.filters(array): Dimension, operator and expression filters. Google only.limit(number): Most result rows to return. 100, cap 1000; Google serves 25,000 per query.
Get your sitemaps (console_get_sitemaps)
The sitemaps submitted for one of the user's properties, with when they were read, how many URLs they carry and their errors. Cost: 0 credits.
tool: console_get_sitemaps
arguments:
property: https://www.example.com/property(string) — required: Site whose sitemaps you want. Required.engine(string): Which engine to read sitemaps from: google or bing.
Inspect a URL in Google (console_inspect_url)
Google's index status for one URL of the user's property: indexed or not and why, last crawl, canonical, mobile usability and rich results. Cost: 0 credits, Google only.
tool: console_inspect_url
arguments:
property: sc-domain:example.com
url: https://www.example.com/pricingproperty(string) — required: Site that the inspected URL belongs to. Required.url(string) — required: Page to inspect, under the property. Required.
Get crawl issues from Bing (console_get_crawl_issues)
URLs Bing had trouble crawling on the user's property: HTTP errors, redirects, robots.txt blocks, DNS and timeouts, with the inbound link count of each. Cost: 0 credits, Bing only.
tool: console_get_crawl_issues
arguments:
property: https://example.comproperty(string) — required: Bing site URL to read crawl issues for. Required.limit(number): Most crawl issues to return. Default: 100.
List your Analytics properties (analytics_list_properties)
List the GA4 properties you have connected; the Analytics tools take one of them as their property. Cost: 0 credits.
tool: analytics_list_properties
arguments:
Get a property's dimensions and metrics (analytics_get_fields)
Every dimension and metric one Google Analytics 4 property reports, with the api_name analytics_get_report takes, custom dimensions and metrics included. Cost: 0 credits.
tool: analytics_get_fields
arguments:
property: properties/123456789
limit: 1000property(string) — required: GA4 property whose fields you want. Required, from analytics_list_properties.limit(number): Most property fields to return. Default: 100, cap 1000.
Get an Analytics report (analytics_get_report)
A Google Analytics 4 report from the user's own property: any metrics by any dimensions over a date range, optionally against a second range. Cost: 0 credits.
tool: analytics_get_report
arguments:
property: properties/123456789
metrics:
- sessions
- keyEvents
dimensions:
- sessionDefaultChannelGroup
start_date: 2026-09-01
end_date: 2026-09-30
compare_start_date: 2026-08-01
compare_end_date: 2026-08-31property(string) — required: GA4 property to report on. Required.metrics(array): The metrics to return. ["sessions"], up to 10: sessions, totalUsers, newUsers, engagedSessions, engagementRate, averageSessionDuration, screenPageViews, keyEvents, conversions, eventCount, totalRevenue, purchaseRevenue, transactions.dimensions(array): The dimensions to group by. [], up to 9: date, sessionDefaultChannelGroup, sessionSource, sessionMedium, sessionSourceMedium, sessionCampaignName, landingPage, landingPagePlusQueryString, pagePath, pageTitle, eventName, country, deviceCategory; analytics_get_fields lists the rest.start_date(string): Start of the reporting window; defaults to four weeks before end_date.end_date(string): End of the reporting window; defaults to yesterday.filters(array): Filters by dimension, operator (equals, not_equals, contains, not_contains, begins_with, ends_with, regex, not_regex) and value; case-insensitive and all must match.order_by(object): How to sort the rows. Field, desc true; default the first metric, highest first.limit(number): Most report rows to return. Default: 100, cap 1000.
Run AI answers for a prompt (aeo_run_ai_answers)
What AI engines answer for a prompt, with the brands they mention and the sources they cite. Slow: poll get_task with the returned task_id to collect the answers. Cost: Per prompt, 6 credits each for claude and perplexity, 2 each for chatgpt, gemini, ai_overview and ai_mode.
tool: aeo_run_ai_answers
arguments:
prompts:
- best crm for startups
brands:
- HubSpot
- pipedrive.comprompts(array) — required: The prompts to ask the AI engines. Required, max 10, each max 500 characters.engines(array): Which AI engines to ask. Default chatgpt, claude, gemini, perplexity, ai_overview; also ai_mode.brands(array): Brands or domains to detect in the answers, max 10.
Search AI prompts (aeo_search_prompts)
Prompts people ask an AI engine (ChatGPT or Google AI Overview) about a topic or brand, from the provider's index of observed answers. Not keywords. Cost: 30 + 30 per 100 AI prompts.
tool: aeo_search_prompts
arguments:
domain: example.com
limit: 50keyword(string): Topic or brand to find AI prompts about. Give keyword or domain; one is required.domain(string): Site to find AI prompts for. Give domain or keyword; one is required.engine(string): Which engine to search prompts on: chatgpt or ai_overview. Default: chatgpt.limit(number): Most AI prompts to return. Default: 50, max 500.
Get AI readiness for a site (aeo_get_site_readiness)
Whether a site is set up for AI answer engines, from about seventeen live fetches of its origin, free. Checks what the engines document as gating their answers: robots.txt access for every known AI crawler (search, user fetch, training), CDN or WAF rules that turn away the answer crawlers' user agents before robots.txt is read, content present in the raw HTML without JavaScript on the homepage and on one page sampled from the sitemap, noindex and snippet directives, then freshness signals, redirect chains, sitemap, title and description, structured data, and llms.txt. Cost: 0 credits, rate limited.
tool: aeo_get_site_readiness
arguments:
target: example.comtarget(string) — required: Domain or URL to check for AI readiness. Required; fetches go to its origin.
Search companies (leads_search_companies)
Companies matching a name, keywords, location or headcount. Cost: 4 credits per page of 100 companies.
tool: leads_search_companies
arguments:
keywords:
- payments
locations:
- London
employee_ranges:
- 51,200name(string): Company name to match. Optional.keywords(array): The keywords to look up. Optional.industries(array): Company industries to match. Optional.locations(array): Company locations to match. Optional.employee_ranges(array): Company size ranges to match. Default: "min,max".limit(number): Most companies to return. Default: 100.
Get a company profile (leads_get_company)
The full firmographic record of one company, by domain. Cost: 1 credit.
tool: leads_get_company
arguments:
domain: acme.comdomain(string) — required: The domain to look up. Required.
Search people (leads_search_people)
People matching title, seniority and company filters. No email. Cost: 4 credits per page of 100 people.
tool: leads_search_people
arguments:
titles:
- head of marketing
industries:
- fintech
locations:
- London
limit: 50titles(array): Job titles to match. Optional.seniority(array): Seniority levels to match. Options: Junior | senior | executive.company_domains(array): Company domains to match. Optional.industries(array): Industries of the person's employer to match. Optional.locations(array): Locations of the people to match. Optional.keywords(string): The keywords to look up. A job title word such as "marketing" is matched against the current title; other words against the whole profile.limit(number): Most people to return. Default: 100.
Get a person profile (leads_get_person)
The full record of one person: real name, title, seniority, company, location, LinkedIn and employment history. No email. Cost: 3 credits when matched, 1 on NoData.
tool: leads_get_person
arguments:
first_name: Jordan
last_name: Blake
domain: northstaranalytics.ioid(string): LinkedIn profile link taken from a people search row; the quickest way to fetch one person.first_name(string): Given name; use it with last_name and domain if there is no id.last_name(string): Family name; use it with first_name and domain if you lack an id.domain(string): Employer website that pins down which person you mean, used together with the name.linkedin_url(string): LinkedIn profile link, an alternative to id. Anything else passed as id is InvalidTarget at no charge.
Find a person's work email (leads_get_email)
Find and verify the work email of one named person. The only paid reveal keyed by a person; it runs a waterfall of sources and stops at the first verified hit. Cost: 6 credits on a hit, 1 on NoData.
tool: leads_get_email
arguments:
first_name: Priya
last_name: Nair
domain: acme.comid(string): LinkedIn profile link from a people search row; it also fills in the name and domain for you.first_name(string): Person's given name; pair it with last_name and domain.last_name(string): Surname of the person; pair it with first_name and domain.domain(string): Employer website to search for the address.
Verify an email address (leads_get_email_status)
Whether an email address the user already has will deliver. Cost: 1 credit.
tool: leads_get_email_status
arguments:
email: jane@acme.comemail(string) — required: The email address to check. Required.
Get a domain's email addresses (leads_get_domain_emails)
Email addresses known for a website's domain, with name, role, confidence and where each was seen. The contact-finding tool for link outreach. Cost: 2 credits per domain + 6 per 10 addresses returned.
tool: leads_get_domain_emails
arguments:
domains:
- example.com
department:
- marketing
- communication
type: alldomains(array) — required: The domains to search. Required, max 20.department(array): Departments to match. All; one of Hunter's departments, and any other value is InvalidTarget; outreach usually wants marketing and communication, and editors at publications usually sit under communication.seniority(array): Seniority levels to match. Default: All.type(string): Which kind of address to return. "all"; generic means role addresses such as press@, often the only working one on a small site.limit(number): Most emails per domain to return. Default: 30 per domain, cap 100.
Search ads (ads_search_ads)
Ads running on a platform's public library, by keyword or brand. Cost: 1 credit per page.
tool: ads_search_ads
arguments:
platform: facebook
query: creatine gummies
active_only: trueplatform(string) — required: Which ad library to search: facebook, tiktok or linkedin. Required.query(string) — required: Keyword to look for in ad text. Required.country(string): ISO code of the country to search in. Optional.active_only(boolean): Keep only ads that are live now. Default: false.
Find advertisers (ads_search_advertisers)
The advertisers matching a brand name in Google's ad library, with their ids. Cost: 1 credit.
tool: ads_search_advertisers
arguments:
platform: google
query: lululemon
region: USplatform(string) — required: Which ad library to read. Required, "google".query(string) — required: Brand name to find advertisers for. Required.region(string): ISO country code of the region. Optional, an ISO country code.
Get an advertiser's ads (ads_get_advertiser_ads)
Every ad one advertiser is running, from a platform's public library. Cost: 1 credit per page, or 25 on google with details.
tool: ads_get_advertiser_ads
arguments:
platform: google
advertiser: lululemon.complatform(string) — required: Which ad library to read an advertiser from: facebook, tiktok, linkedin or google. Required.advertiser(string) — required: The advertiser to read. Required: a page id or name on facebook, an advertiser name on tiktok, a company name or id on linkedin, a domain or advertiser id on google.country(string): Optional ISO country code that narrows the advertiser's ads.active_only(boolean): Keep only the advertiser's ads that are live now. Default: false.details(boolean): Add the creative text. False; google only, adds the creative text and costs 25 credits.
Get an ad (ads_get_ad)
One ad from a platform's public library, with its creative text and where it sends people. Cost: 1 credit.
tool: ads_get_ad
arguments:
platform: facebook
id: "1185617869915074"platform(string) — required: Which ad library the ad id belongs to: facebook, tiktok, linkedin or google. Required.id(string) — required: The ad library record id. Required: an ad id on facebook and tiktok, the ad URL on linkedin and google.
Search Reddit posts (reddit_search_posts)
Reddit posts matching a query, ranked by the search across all of Reddit or inside one community. Each call returns one page of posts for 1 credit.
tool: reddit_search_posts
arguments:
query: hubspot alternative
sort: new
time_range: monthquery(string) — required: Text to find in post titles and bodies (2 to 200 characters). Required.subreddit(string): Limit the post search to one community. Optional.sort(string): Post order: relevance (default), new, top or comment_count.time_range(string): Post window: day, week, month or year (default: all).
Search Reddit comments (reddit_search_comments)
Comment text on Reddit that matches a query, from all of Reddit or one named community. One page of comments per call, 1 credit.
tool: reddit_search_comments
arguments:
query: best crm for a two person team
time_range: yearquery(string) — required: Text to find inside comments, 2 to 200 characters. Required.subreddit(string): Community to restrict the comment search to. Optional.sort(string): Comment order: new, top, comment_count or relevance (the default).time_range(string): Comment window: all (default), day, week, month or year.
Get new posts in subreddits (reddit_get_new_posts)
Every post created in the given subreddits inside a time window, oldest first. The check-in tool: complete for the window it reports, unlike search. Cost: 1 credit per subreddit per page.
tool: reddit_get_new_posts
arguments:
subreddits:
- startups
- SaaS
since: 24h
match:
- crm
- pipelinesubreddits(array) — required: The subreddits to watch. Required, up to 10.since(string): How far back to read: "30m", "6h", "2d" or an ISO 8601 timestamp, max 7 days. Default: "24h".pages(number): Pages to read per subreddit, 1 to 3. Default: 1.match(array): Terms a post must contain. Optional terms; keeps posts whose title or body holds one, case insensitive.
Get a Reddit post (reddit_get_post)
One Reddit thread in full: the whole post body, its score, its flair and how big the community is. Cost: 1 credit.
tool: reddit_get_post
arguments:
url: https://www.reddit.com/r/startups/comments/1lfbo7u/what_crm_do_you_use/url(string) — required: Thread whose post you want, as a link from a row's url. Required.
Get a thread's comments (reddit_get_comments)
The comments on one Reddit thread, flattened in reading order with their reply depth. Cost: 1 credit per call, one page of the thread.
tool: reddit_get_comments
arguments:
url: https://www.reddit.com/r/SaaS/comments/1lfbo7u/what_crm_do_you_use/
max_credits: 5url(string) — required: Link to the thread whose replies you want, taken from the row's url. Required.
Find subreddits for a topic (reddit_search_subreddits)
The communities that discuss a topic, counted from one page of search results. Cost: 1 credit.
tool: reddit_search_subreddits
arguments:
query: cold email deliverability
time_range: yearquery(string) — required: Community search text, 2 to 200 characters. Required.time_range(string): Community window: year, month, week or day; all by default.
Get a subreddit (reddit_get_subreddit)
One community: how big it is, how busy it is, and the rules it posts, as the moderators wrote them. Cost: 1 credit.
tool: reddit_get_subreddit
arguments:
subreddit: SaaSsubreddit(string) — required: The subreddit to read. Required, the name without the r/ prefix, for example "startups".
Get a TikTok account (tiktok_get_profile)
One TikTok account: its follower count, its lifetime likes and how many videos it has posted. Cost: 1 credit.
tool: tiktok_get_profile
arguments:
handle: "@gymshark"handle(string) — required: TikTok handle to look up; the @ is optional. Required.
Get an account's videos (tiktok_get_videos)
Videos posted by one TikTok account, newest or most viewed first. Each page of TikTok videos costs 1 credit.
tool: tiktok_get_videos
arguments:
handle: gymshark
sort: popularhandle(string) — required: Required: the TikTok account whose videos are listed.sort(string): Account video order: latest (default) or popular.
Get a TikTok video (tiktok_get_video)
One TikTok video with its engagement: views, likes, comments, shares and its length. Cost: 1 credit; 10 if the vendor has to fetch the video file.
tool: tiktok_get_video
arguments:
url: https://www.tiktok.com/@gymshark/video/7517114944362499342url(string) — required: TikTok video link to open. Required.
Get a video's comments (tiktok_get_comments)
Comments on one TikTok video. Each page of TikTok comments costs 1 credit.
tool: tiktok_get_comments
arguments:
url: https://www.tiktok.com/@gymshark/video/7517114944362499342
max_credits: 5url(string) — required: TikTok video whose comments you want, as a link. Required.
Search TikTok videos (tiktok_search_videos)
TikTok videos matching a keyword, ranked by the platform's own search. Each page of TikTok results costs 1 credit.
tool: tiktok_search_videos
arguments:
query: creatine gummies
since: month
sort: popularquery(string) — required: The TikTok search text. Required.since(string): Posting window, default month (day, week, year or all also work).sort(string): Result order: relevance, latest or popular. Default: relevance.
Get a video's transcript (tiktok_get_transcript)
Spoken words of one TikTok video, as text. Cost: 1 credit, or 11 with ai_fallback.
tool: tiktok_get_transcript
arguments:
url: https://www.tiktok.com/@gymshark/video/7517114944362499342
ai_fallback: trueurl(string) — required: TikTok video link to transcribe. Required.ai_fallback(boolean): Transcribe the audio when the platform holds no transcript. False; true transcribes the audio when TikTok holds no transcript, adds 10 credits and covers videos up to 2 minutes.
Get an account's followers (tiktok_get_followers)
The accounts that follow one TikTok account, with their own follower counts. Each page of followers costs 1 credit.
tool: tiktok_get_followers
arguments:
handle: gymshark
max_credits: 3handle(string) — required: Account whose followers are listed. Required.
Get an account's audience (tiktok_get_audience)
Where one TikTok account's audience is, by country. Cost: 26 credits, because the vendor charges 26 for this one call.
tool: tiktok_get_audience
arguments:
handle: gymsharkhandle(string) — required: Account whose audience split is reported. Required.
Get an Instagram account (instagram_get_profile)
One Instagram account: followers, posts and whether it is a business account. Cost: 1 credit.
tool: instagram_get_profile
arguments:
handle: nikehandle(string) — required: Required: Instagram handle to look up, @ optional.
Get an account's posts (instagram_get_posts)
Newest posts from one Instagram account. Each page of posts costs 1 credit.
tool: instagram_get_posts
arguments:
handle: gymsharkhandle(string) — required: Instagram account whose posts you want. Required.
Get an account's reels (instagram_get_reels)
Newest reels from one Instagram account. Each page of reels costs 1 credit.
tool: instagram_get_reels
arguments:
handle: nikehandle(string) — required: Instagram account whose reels you want. Required.
Get a post or reel (instagram_get_post)
One Instagram post or reel with its caption and its engagement. Cost: 1 credit; 10 if the media has to be fetched by the vendor.
tool: instagram_get_post
arguments:
url: https://www.instagram.com/p/DKSMEpKRd6h/url(string) — required: Required: link of the Instagram post or reel to open.
Get a post's comments (instagram_get_comments)
The comments on one Instagram post or reel. Cost: 1 credit per page, or 15 with include_replies.
tool: instagram_get_comments
arguments:
url: https://www.instagram.com/p/DKSMEpKRd6h/
include_replies: falseurl(string) — required: Instagram post or reel whose comments are returned, as a link. Required.include_replies(boolean): Also fetch replies to each comment. False; true costs 15 credits and is charged even when no reply comes back, because the vendor looks up every comment separately.
Search posts by hashtag (instagram_search_posts)
Instagram posts under one hashtag. Each page of hashtag posts costs 1 credit.
tool: instagram_search_posts
arguments:
query: "#gymshark"
since: weekquery(string) — required: The Instagram search text. Required, the hashtag, with or without the #.since(string): Hashtag post window. Default: month. Alternatives: day, week, year, all.
Get a reel's transcript (instagram_get_transcript)
Text of what is said in one Instagram reel. Cost: 1 credit.
tool: instagram_get_transcript
arguments:
url: https://www.instagram.com/reel/DKSMEpKRd6h/url(string) — required: Link of the Instagram reel to transcribe. Required.
Get a Facebook page (facebook_get_profile)
One Facebook page: its followers, its category, its address and its website. Cost: 1 credit.
tool: facebook_get_profile
arguments:
url: https://www.facebook.com/gymsharkhandle(string): Facebook page name to look up (url works too).url(string): Facebook page link to look up (handle works too).
Get a page's posts (facebook_get_posts)
Newest posts from one Facebook page. Each page of its posts costs 1 credit.
tool: facebook_get_posts
arguments:
handle: nikehandle(string): Facebook page name to pull the feed of, or give url instead.url(string): Facebook page link to pull the feed of, or give handle instead.
Get a Facebook post (facebook_get_post)
One Facebook post with its reactions, comments, shares and views. Cost: 1 credit.
tool: facebook_get_post
arguments:
url: https://www.facebook.com/reel/1535656380759655url(string) — required: Required: address of the Facebook post or reel.
Get a post's comments (facebook_get_comments)
Comments on one Facebook post. Each page of comments costs 1 credit.
tool: facebook_get_comments
arguments:
url: https://www.facebook.com/reel/1535656380759655
max_credits: 5url(string) — required: Facebook post link to read comments for. Required.
Get a group's posts (facebook_get_group_posts)
Newest posts inside one Facebook group. Each page of group posts costs 1 credit.
tool: facebook_get_group_posts
arguments:
url: https://www.facebook.com/groups/742354120555345url(string) — required: Required: link of the Facebook group to read.
Get a video's transcript (facebook_get_transcript)
The speech in one Facebook video or reel, transcribed to text. Cost: 1 credit.
tool: facebook_get_transcript
arguments:
url: https://www.facebook.com/reel/1535656380759655
language: enurl(string) — required: Facebook video link to transcribe. Required.
Get a YouTube channel (youtube_get_channel)
One YouTube channel: subscribers, total views and when it joined. Cost: 1 credit.
tool: youtube_get_channel
arguments:
handle: "@ThePatMcAfeeShow"handle(string) — required: YouTube channel handle; include the @ or not. Required.
Get a channel's videos (youtube_get_videos)
Videos on one YouTube channel, most recent or most watched first. Each page of YouTube videos costs 1 credit.
tool: youtube_get_videos
arguments:
handle: "@ThePatMcAfeeShow"
sort: popularhandle(string) — required: Required: the YouTube channel whose uploads are listed.sort(string): Channel upload order: popular or latest (the default).
Get a YouTube video (youtube_get_video)
One YouTube video with its views, likes, comments and length. Cost: 1 credit.
tool: youtube_get_video
arguments:
url: https://www.youtube.com/watch?v=5EWaxmWgQMIurl(string) — required: YouTube video link whose stats you want. Required.
Get a video's comments (youtube_get_comments)
Comments on one YouTube video, most liked first. Each page of YouTube comments costs 1 credit.
tool: youtube_get_comments
arguments:
url: https://www.youtube.com/watch?v=5EWaxmWgQMI
max_credits: 5url(string) — required: YouTube video link; its comments are returned. Required.
Search YouTube videos (youtube_search_videos)
YouTube videos matching a keyword, ranked by YouTube's own search. Each page of YouTube results costs 1 credit.
tool: youtube_search_videos
arguments:
query: best crm for agencies
since: yearquery(string) — required: The YouTube search text. Required.since(string): Upload window, default month; choose day, week, year or all instead.sort(string): Result order: relevance or popular. Default: relevance. YouTube has no newest-first search, so latest runs as relevance and since does the narrowing.
Get a video's transcript (youtube_get_transcript)
The transcript of one YouTube video, as text. Cost: 1 credit.
tool: youtube_get_transcript
arguments:
url: https://www.youtube.com/watch?v=5EWaxmWgQMI
language: enurl(string) — required: YouTube video link to transcribe. Required.
Get a LinkedIn profile (linkedin_get_profile)
One LinkedIn person: their headline, location, followers and connections. Cost: 1 credit.
tool: linkedin_get_profile
arguments:
url: https://www.linkedin.com/in/williamhgatesurl(string): LinkedIn profile link, or give handle instead.handle(string): Text after /in/ in a LinkedIn profile address, or give url instead.
Get a company page (linkedin_get_company)
One LinkedIn company page: headcount, industry, location and website. Cost: 1 credit.
tool: linkedin_get_company
arguments:
handle: shopifyhandle(string): LinkedIn company slug for the lookup; url works as well.url(string): LinkedIn company link for the lookup; handle works as well.
Get a company's posts (linkedin_get_company_posts)
Newest posts from one LinkedIn company page. Each page of company posts costs 1 credit.
tool: linkedin_get_company_posts
arguments:
handle: notionhandle(string): LinkedIn company slug whose newest posts you want, or give url instead.url(string): LinkedIn company link whose newest posts you want, or give handle instead.
Get a LinkedIn post (linkedin_get_post)
One LinkedIn post with its text, its author and its engagement. Cost: 1 credit.
tool: linkedin_get_post
arguments:
url: https://www.linkedin.com/posts/aagupta_what-you-need-to-know-ai-agents-activity-7354600338621906944-RvXRurl(string) — required: The LinkedIn link to read. Required, the post URL.
Search LinkedIn posts (linkedin_search_posts)
LinkedIn posts matching a keyword, ranked by LinkedIn's own search. Each page of LinkedIn results costs 1 credit.
tool: linkedin_search_posts
arguments:
query: rfp automation
since: weekquery(string) — required: The LinkedIn search text. Required.since(string): How recent the posts must be: month by default, or day, week, year, all.
Get an X account (twitter_get_profile)
One X account: followers, following, how much it posts and its bio. Cost: 1 credit.
tool: twitter_get_profile
arguments:
handle: "@stripe"handle(string) — required: Required: X handle to look up, with or without @.
Get an account's posts (twitter_get_tweets)
The recent posts on one X account, newest first. Cost: 1 credit.
tool: twitter_get_tweets
arguments:
handle: vercelhandle(string) — required: X account whose recent posts you want. Required.
Get a post on X (twitter_get_tweet)
One post on X with its replies, reposts, likes and views. Cost: 1 credit.
tool: twitter_get_tweet
arguments:
url: https://x.com/stripe/status/1834021269559501236url(string) — required: The X link to read. Required, the post URL.
Get async task result (get_task)
Fetch the result of a slow tool (seo_run_technical_crawl or aeo_run_ai_answers) by its task_id. Returns TaskPending with a new poll_after_s while the task runs. Cost: free.
tool: get_task
arguments:
task_id: task_01J...task_id(string) — required: The task_id returned by the slow tool.
Submit feedback (submit_feedback)
Report an error, wrong data or a feature request to the Manifold team. Cost: free, 20 reports per workspace per day.
tool: submit_feedback
arguments:
kind: error
tool: seo_get_serp
request_id: 3f1c9a2e-8d4b-4c6f-9e1a-7b2d5c8f0a13
message: seo_get_serp returned ProviderUnavailable five times in ten minutes.kind(string) — required: One of error, wrong_data, feature_request or other.message(string) — required: What went wrong or what you want.tool(string): The tool the report is about.request_id(string): The request_id from the call's meta, which lets the team find that exact call.
How to Invoke
Registered once as a remote MCP server; the agent finds the tools through tools/list and calls them by name, for example seo_get_serp or reddit_search_posts. Every tool also accepts max_credits and dry_run, most accept provider, and list tools page with cursor. Results return data plus a meta block (credits_charged, cached, request_id) and hints for the next call; the crawl and AI answers tools return a task_id that get_task reads.
Pricing
Prepaid credits, no seat fee (manifoldmcp.com/pricing and /docs/plans, read 12 October 2026). Free: 250 credits once, no card. Pro: $20 a month for 2,500 credits (0.80 cents each), then $40 for 5,500, $80 for 12,000 and $150 for 24,000 (0.63 cents). Max: $250 for 42,000 credits (0.60 cents), then $500 for 90,000, $1,000 for 190,000 and $2,000 for 400,000 (0.50 cents). Top-ups on Pro and Max run $10 to $500 at 100 credits a dollar and never expire; plan credits reset monthly and are spent first. There is no overage: calls stop when the balance is empty. Per-call examples are in the cost answer below.
Strengths
- The documented tools only read, so a mis-prompted agent cannot publish a post, send an email or edit a record through this server.
- Spend is controllable per call: free price checks and a hard cap make a runaway agent loop cheap to contain.
- Search Console and Analytics reads cost nothing, which suits teams that mainly want their own numbers in chat.
- No per-seat fee, so a whole team shares one workspace balance instead of buying logins.
Weaknesses
- It is a one-person company that began in September 2026; the about page says the founder writes the code and answers support, and no independent reviews or coverage turned up in the search done for this page.
- The free credits arrive once, not monthly, and credits cannot be bought at all without a Pro or Max plan, so the free allowance is a trial rather than a standing tier.
- OAuth always spends the personal workspace; paying from a team balance in a client needs an API key made in that workspace.
- Data depth rests on upstream providers, so figures can differ from Ahrefs or Semrush: its domain rank uses a separate scale and is not Ahrefs Domain Rating.
- It looks things up when asked and does not monitor or schedule, so tracking a brand over time means the agent or a scheduler must call it repeatedly.
- Limits are identical on every plan for now, including 5 calls in flight per provider family and about 120 requests a minute per workspace.
Frequently Asked Questions
What does Manifold MCP actually cost?
The bill is the plan rate times the call. At the starter Pro rate a 10-result Google results page is about 0.8 cents, 100 keyword ideas about 8 cents and a four-engine AI answer check of 16 credits about 13 cents. Watch the extras: a found work email is 6 credits (1 when nothing is found), Instagram replies add 15 credits, Google ad creative text adds 25, and a JavaScript-rendered crawl costs ten times a plain one.
Can you use Manifold MCP without paying?
Only once: every new workspace gets 250 free credits with no card, which the pricing page converts into 250 results-page checks, 25 runs of 100 keyword ideas or 15 four-engine AI answer checks. Nothing renews monthly. These stay at 0 credits on any plan: the Search Console, Bing and Analytics tools that read your own accounts, the AI readiness check, the page snapshot and any dry run.
What are Manifold MCP's closest competitors?
Hunter fits when verified emails are the whole job, SearchApi when you want raw search results as JSON for your own code, and Tomba when you also want phone lookup and enrichment. The vendor names Ahrefs, Semrush, SE Ranking, Profound, Peec, Otterly and Exa as the products it competes with, and HokAI lists Exa as a tool. No independent head-to-head comparison existed when this page was written.
How does Manifold MCP compare to Hunter in 2026?
Hunter is the better standing deal if emails are the only job, because its free plan renews at 50 credits a month while Manifold's free credits arrive once. Manifold wins when the email is the last step of a chain that starts with an SEO gap, a Reddit thread or a LinkedIn post, since one balance pays for every step. A team already paying for Hunter can keep it for email and add Manifold for the search, AI-answer and social lookups around it.
How do you set up Manifold MCP?
Paste the server address into the custom connector screen in Claude, switch on developer mode in ChatGPT, or run the one-line Claude Code command, then approve the browser sign-in once, which also creates your account and workspace. A machine with no browser, such as a CI runner, sends an API key as a bearer header instead. To route many connectors through a single gateway, look at Composio. By the vendor's own account the whole connection takes about a minute.
Top Alternatives
- Hunter: Pick Hunter when verified emails are the only job and you want a free plan that renews; pick Manifold MCP when the email is one step in an SEO, Reddit or ads workflow paid from one balance.
- SearchApi: Pick SearchApi for raw search-result JSON across Google, Maps, Amazon and TikTok inside your own code; pick Manifold MCP when the agent also needs backlinks, AI answers and Reddit in the same chat.
- Orthogonal Find Leads: Pick Orthogonal Find Leads for pay-per-call prospect searches across many B2B providers; pick Manifold MCP when prospecting should start from a LinkedIn post or Reddit thread and end with a verified email.
- Find Twitter Influencers: Pick Find Twitter Influencers for a ranked shortlist of X creators with engagement stats; pick Manifold MCP when your creators live on TikTok, YouTube or Instagram, where it reads profiles, top videos and transcripts.
- Tomba: Pick Tomba for a deep contact-data toolset with phone lookup and enrichment on a credit slider; pick Manifold MCP when email lookup is one tool among SEO, social and ad data.