Skip to main content
Glama
ekas-io

open-sales-stack

by ekas-io

Open Sales Stack

Open source MCP servers for B2B sales research — built by Ekas

Give Claude the ability to research companies and prospects using public web data.

OSS github Demo


What's in here

Open Sales Stack contains MCP servers for sales research and skills that teach Claude how to use them in real workflows.

MCP Servers

MCP Server

What you get

Status

website-intel

Product info, pricing, team pages, company details — extracted as structured data from any website

✅ Ready

techstack-intel

CRM, marketing automation, analytics, chat, support tools — detected from page source

✅ Ready

social-intel

LinkedIn company profiles, people profiles, company posts

✅ Ready

hiring-intel

Open roles across Indeed, LinkedIn, Glassdoor, Google Jobs, ZipRecruiter, and direct careers pages

✅ Ready

ad-intel

Active campaigns, ad creatives, targeting signals — from LinkedIn Ad Library and Meta Ad Library

✅ Ready

review-intel

Star ratings, review counts, pros/cons themes — from G2, Capterra, and Glassdoor

🔄 In Progress

funding-intel

Funding rounds, investors, total raised, valuations — from Crunchbase and public filings

🔄 In Progress

news-intel

Recent press coverage, product launches, leadership changes, M&A activity

🔄 In Progress

financial-reporting-intel

10-K/10-Q filings, revenue, growth rate, operating margins, guidance — for public companies

🔄 In Progress

firmographic-intel

Employee count, headcount growth, HQ location, founding year, industry, SIC/NAICS codes, legal entity name — all from public sources

🔄 In Progress

github-intel

Public repos, stars, contributors, commit activity, open issues, tech stack signals — from GitHub public API

🔄 In Progress

Skills

Skill

What it does

Status

Qualify High Inbound Volume

Researches accounts across 5 signals (website, SDR hiring, LinkedIn ads, funding, product launches) to qualify whether they have high inbound lead volume — saves results to Apollo

✅ Ready

An API key from OpenAI, Anthropic, or Google Gemini is required for LLM-based extraction. Beyond that, no additional API keys are needed. Each MCP runs locally on your machine. Your IP, your requests — no proxy infrastructure, no rate limiting concerns.


Related MCP server: Meta Ads MCP

Setup

You'll need two things installed before starting:

Then run these commands in your terminal:

# 1. Clone the repo
git clone https://github.com/ekas-io/open-sales-stack.git
cd open-sales-stack

# 2. Run setup (installs everything and prompts you to choose your LLM provider)
bash scripts/setup.sh

# 3. Verify your setup
bash scripts/verify.sh

# 4. Add all MCPs to Claude
bash scripts/add-to-claude.sh --all

By default, the script adds MCPs to Claude Code if the claude CLI is available, otherwise to Claude Desktop. You can override this:

bash scripts/add-to-claude.sh --all --desktop   # force Claude Desktop
bash scripts/add-to-claude.sh --all --code      # force Claude Code

The setup script will ask you to choose between OpenAI, Anthropic, or Gemini and prompt for your API key. It configures everything in .env automatically.

If you want to change the default model later, edit the LLM_PROVIDER value in your .env file. See .env.example for supported format.

During setup, you'll also be asked how you'd like to authenticate with LinkedIn (for social-intel):

  1. Skip (default) — configure later; company scraping works without login

  2. Browser login — a browser window opens, you log in manually

  3. Credentials — provide your email + password, saved locally for headless login

See the social-intel README for more details.

If you only want specific MCPs:

bash scripts/add-to-claude.sh --website-intel --social-intel --hiring-intel

Verify in Claude

Once added, ask Claude:

"What MCP tools do you have access to?"

You should see your installed tools listed.


How the MCPs work together

Each MCP is independent — use one or use all. But they're designed to chain naturally in Claude. Here's what a typical company research flow looks like:

You: "Research Acme Corp for me"

Claude calls: website-intel    → scrapes acmecorp.com, extracts product info, pricing, team
Claude calls: techstack-intel  → detects they use HubSpot, Drift, Segment
Claude calls: hiring-intel     → finds 3 open SDR roles on their Greenhouse page
Claude calls: social-intel     → finds their VP Sales on LinkedIn, pulls bio and recent posts
Claude calls: review-intel     → pulls G2 rating (4.2/5, 47 reviews), Glassdoor sentiment
Claude calls: ad-intel         → 12 active LinkedIn ad campaigns, 5 on Meta
Claude calls: funding-intel    → Series B, $24M raised, led by Accel
Claude calls: firmographic-intel → 320 employees, 40% headcount growth YoY
Claude calls: news-intel       → 3 recent press mentions, product launch last month

Claude: "Here's what I found about Acme Corp..."

You don't need to orchestrate this. Claude reads the tool descriptions and decides which to call based on your request.


Skills

Skills are instruction files that teach Claude how to use research data for sales workflows. Drop them into your Claude project knowledge or reference them in prompts.

Skill

What it teaches Claude

Lead Qualification

Evaluate whether a company matches your ICP based on research signals

Prospect Research

Full account + contact level research methodology

LinkedIn Recon

Read a prospect's LinkedIn profile and posts for outreach signals

Cold Email Personalization

Turn research into personalized outreach copy

MCPs get the data. Skills tell Claude what to do with it.


Each MCP in detail

Every package has its own README with tool descriptions, input/output schemas, and usage examples. Browse the packages/ directory, or see detailed use cases on our website: ekas.io/open-sales-stack


Contributing

Found a bug? Want to add a new research MCP? PRs welcome. See the packages/ directory for the existing pattern.


Custom sales automation

These tools cover common research workflows. If you need AI automation built for your team's specific sales stack — CRM integration, lead routing, qualification scoring, automated outreach — we build that.

ekas.io — AI engineering for B2B sales teams.


License

MIT

Available Tools

1 tool
website_intel_extractA

Scrape or crawl a webpage and extract structured data as JSON using a custom schema. Use this tool when you know the specific URL of a website and need to extract particular information in a well-defined, structured format.

Two modes are available: • 'scrape' (default) — single-page extraction with full JS rendering. • 'crawl' — multi-page extraction that follows links up to a page limit.

You MUST provide three things:

  1. The target URL

  2. A JSON Schema object defining the exact shape of the data you want returned

  3. A natural-language prompt describing what to extract

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the page to scrape or the starting page to crawl. Must include `http://` or `https://`. Example: `https://stripe.com/about`; `https://company.com/pricing`
modeNoExtraction mode. `"scrape"` renders and extracts a single page. `"crawl"` follows internal links from the starting URL up to `limit` pages, useful for discovering content across a site section. Example: `scrape`; `crawl`scrape
limitNoMaximum number of pages to visit when `mode` is `"crawl"`. Clamped to 1–10. Ignored in `"scrape"` mode. Example: `5`
promptYesNatural-language instruction telling the LLM what information to extract from the page and how to populate the schema fields. Example: `Extract the company name, the year it was founded, and the number of employees listed on this about page.`
schemaYesJSON Schema object defining the exact structure of data to extract. Use standard JSON Schema types (string, number, boolean, array, object). Each property should have a type and description. Example: `{"type": "object", "properties": {"company_name": {"type": "string"}, "founded_year": {"type": "number"}, "employee_count": {"type": "string"}}}`

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It explains the two modes ('scrape' with JS rendering, 'crawl' with page limit), the requirement for a schema and prompt, and the return format (structured JSON). It does not mention rate limits, authentication, or side effects, but for a read operation like scraping, these gaps are minor. The description is sufficient for an agent to understand what the tool does and its boundaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise yet comprehensive. It uses a bullet-like structure for modes and requirements, making it easy to parse. Each sentence serves a purpose: stating the tool's function, usage context, modes, and mandatory inputs. There is no fluff or redundancy. It is well-organized and front-loaded with the core action and requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, modes, nested schema) and the presence of an output schema (which reduces the need to explain return values), the description is complete. It covers all aspects: what the tool does, when to use it, the two modes, the three required inputs, and examples for each parameter. The agent has all the information needed to invoke the tool correctly without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning every parameter has a description in the schema. The description adds value by explaining the modes, the necessity of three things, and providing clear examples for each parameter. For instance, it clarifies the difference between 'scrape' and 'crawl' and gives use-case examples for the prompt and schema. This extra context goes beyond the schema, justifying a score above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Scrape or crawl a webpage and extract structured data as JSON using a custom schema.' It provides specific verbs (scrape/crawl) and the resource (webpage), making it unambiguous. With no sibling tools to differentiate, it achieves maximum clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies when to use the tool: 'when you know the specific URL of a website and need to extract particular information in a well-defined, structured format.' It also outlines two modes and the three required inputs. Although it does not explicitly state when not to use it or compare to alternatives, the context is clear enough for an agent to decide. The lack of sibling tools reduces the need for exclusions, so a 4 is appropriate.

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. Dates show when Glama detected each change.

  1. 1 tool updatev0.0.2
    • First observedwebsite_intel_extract

TDQS

A4.1/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or confusion. The tool's purpose is clearly defined.

Naming Consistency5/5

The single tool uses a clear snake_case name that follows a verb_noun pattern, which is consistent and readable.

Tool Count1/5

The server is named 'open-sales-stack', implying a broad sales automation toolkit, but provides only a single web scraping tool. This is a severe mismatch between scope and tool count.

Completeness1/5

The server offers only webpage extraction, leaving out essential sales stack functionalities such as lead management, CRM integration, or deal tracking. The tool surface is severely incomplete for the implied domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    A Model Context Protocol implementation for the HubSpot API that provides a standardized interface for accessing and managing CRM data, including companies, contacts, deals, and other objects with comprehensive CRUD operations and association management.
    88
    35
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A Model Context Protocol server that allows AI models to access, analyze, and manage Meta advertising campaigns, enabling LLMs to retrieve performance data, visualize ad creatives, and provide strategic insights for Facebook and Instagram platforms.
    37
    1,234
    Business Source 1.1
  • A
    license
    Not graded
    quality
    D
    maintenance
    This project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for LinkedIn Ads (beta): https://www.cdata.com/download/download.aspx?sku=EBZK-V&type=beta
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Helps users find suitable LinkedIn job opportunities by automatically scraping listings, analyzing compatibility with user profiles using AI, and sending custom match reports via email.
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ekas-io/open-sales-stack'

If you have feedback or need assistance with the MCP directory API, please join our Discord server