Website Phrase and Business Model Classifier MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Website Phrase and Business Model Classifier MCP ServerClassify stripe.com as B2B SaaS and shopify.com as B2C store"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Website Phrase and Business Model Classifier MCP Server
An MCP server for the Mamba Labs Website Phrase and Business Model Classifier actor on Apify. Give it company domains. For each one it reads the homepage and up to 5 pages it links to, and returns one row: B2B, B2C, or both; whether the site presents itself as SaaS, an online store, an agency, a manufacturer, a wholesaler, a distributor, or a marketplace; and whether your own phrases appear, with the quoted text and the page as evidence.
What's Inside
Related MCP server: open-sales-stack
What it does
The rules are fixed and written out, not a language model, so the same pages always give the same answer. A site that does not say enough comes back unknown. A hit inside a negation ("we are not an agency") never counts. Unreachable, blocked, robots.txt disallowed, and empty sites come back free with a row_status saying so. All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-website-phrase-business-model-classifier": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-website-phrase-business-model-classifier"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The classify_website tool appears.
Prerequisites
Node.js 18 or newer.
An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.
Example prompts
"Which of these 40 domains are agencies, and which of them say they are a Clay agency?"
"Split this store list into B2B and B2C and show me the evidence for each."
"Do any of these suppliers say they do private label?"
Tool
classify_website. One tool. Example arguments:
{
"domains": ["lodgecastiron.com", "hubspot.com"],
"phrases": ["cast iron", "private label"]
}Inputs
Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers are sent as strings.
Input | Type | Description |
| array | Company domains, up to 500 |
| string | One domain |
| array | Your buyer phrases, up to 25 |
| array | Any of saas, ecommerce, agency, manufacturer, wholesaler, distributor, marketplace; empty means all |
| string | Pages per site, 1 to 10. Default 6 |
| string | Optional cost cap for the run |
| string | auto (default) or direct |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.0045 | $0.004275 | $0.00405 | $0.003825 |
| $0.0005 | $0.0005 | $0.0005 | $0.0005 |
Unreachable, blocked, robots.txt disallowed, empty, and error rows are free.
Your keys
The actor needs no key and holds none. It reads the company's own public web pages. Proxy traffic adds nothing to your price: Mamba Labs pays the platform costs of the run.
Full actor documentation
apify.com/mambalabs/website-phrase-business-model-classifier
License
MIT. See LICENSE.
Available Tools
1 toolclassify_websiteClassify company websitesARead-only
Classify company websites from their own pages. Give domains (up to 500) and optionally your own phrases. For each domain the actor reads the homepage and up to 5 linked pages (about, products, services, wholesale, manufacturing, industries, pricing) and returns one row: business_model b2b, b2c, both, or unknown with the signals found; is_saas, is_ecommerce, is_agency, is_manufacturer, is_wholesaler, is_distributor, is_marketplace; phrases_matched and phrases_negated; and top_evidence_text with top_evidence_url quoting the page. Rules are deterministic, no language model. Unreachable, blocked, robots.txt disallowed, and empty sites come back free with a row_status saying so. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per domain classified.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | One company domain, for example lodgecastiron.com. | |
| domains | No | Company domains or website addresses, up to 500. | |
| phrases | No | Your buyer phrases to look for, for example clay agency or private label. Whole words, plurals included, case ignored; a hit inside a negation does not count. Up to 25. | |
| max_pages | No | Pages read per site, homepage included, 1 to 10. Default 6. | |
| categories | No | Business categories to test. Empty means all seven. | |
| proxy_mode | No | auto (default) retries a refusing site through the Apify proxy at no extra cost; direct never uses a proxy. | |
| max_charge_usd | No | Optional. The run stops before a charge would pass this amount. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly, openWorld, non-idempotent, non-destructive): it discloses that rules are deterministic with no language model, that failed runs surface as errors carrying a run ID, that an APIFY_TOKEN is required, and that Apify charges per domain classified. This is exactly the cost/auth/behavior context an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Effectively one dense paragraph, but it is front-loaded with the core action and every clause carries new information (inputs, crawl scope, output fields, edge cases, auth, billing) with no filler. Slightly heavy to scan as a single block, which keeps it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema, the description enumerates the returned fields (business_model values, the seven boolean category flags, phrases_matched/phrases_negated, top_evidence_text/url, row_status) and covers failure and billing behavior. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it spells out the page types read, how phrase matching works (whole words, plurals included, case ignored, hits inside negations do not count), and the domain cap of 500. It adds enough beyond the schema to merit a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Classify company websites from their own pages') and immediately defines the input unit (domains) and the output unit (one row per domain). No siblings exist, so no differentiation is needed, and the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: supply up to 500 domains, optionally your own phrases, and notes that unreachable/blocked/robots-disallowed/empty sites are returned free rather than failing. It does not state any explicit when-not-to-use condition, but with no siblings there is little to exclude.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
classify_website
Related MCP Connectors
Find emails, phone numbers and social profiles on a list of company websites. One row per domain.
1Turn a company domain into a structured B2B sales brief from their public website.
Extracts verified emails, social links, 40+ tech stack signals, pricing tiers, and company summary
Extracts verified emails, social links, 40+ tech stack signals, pricing tiers, and company summar.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables scraping of emails, phone numbers, and social profile links from website domains. Supports batch processing of up to 20 domains and can find company websites by keyword/company name.2MIT
- AlicenseAqualityDmaintenanceCollection of B2B sales intelligence MCP servers. Includes website analysis, tech stack detection, hiring signals, review aggregation, ad tracking, social profiles, financial reporting and more for AI-powered prospecting12MIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time website audits, lead scoring, tech-stack detection, and local-business search for AI agents doing sales outreach and competitor research.MIT
- AlicenseAqualityAmaintenanceEnables AI clients to analyze any company domain and determine its AI maturity tier (commercialized, deployed, declared, or none) with supporting evidence, via a single tool backed by an Apify actor.1118 npmMIT