blind-mcp
Click on "Install 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., "@blind-mcpwhat do Blind users say about Amazon's RTO policy?"
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.
blind-mcp
An MCP server for researching companies on Blind — so you can ask "how many days a week is Roku India in the office, and how hard is it enforced?" and get the actual threads instead of a search page full of referral spam.
research(company="Roku", question="how many days in office in India")
-> topic_used: "india"
-> 4 threads, each with Blind's own AI comment summary and every
comment tagged with the commenter's employerTools
Tool | What it does |
| The topics Blind itself suggests for a company — for Roku: |
| Post listings, optionally scoped to one topic |
| Search a company's posts by keyword — |
| One thread in full: body, Blind's AI summary, comments with employers |
| One-shot: picks the topic, ranks its posts against the question, returns the top threads in full |
Related MCP server: sec-mcp
Install
uv syncRegister with Claude Code:
uv tool install --editable . # puts `blind-mcp` on PATH
claude mcp add --scope user blind -- blind-mcpOr in claude_desktop_config.json:
{
"mcpServers": {
"blind": {
"command": "uv",
"args": ["run", "--directory", "/path/to/blind-mcp", "blind-mcp"]
}
}
}Do I need to log in?
No — and you probably shouldn't. This was measured, not assumed:
Post bodies, full comment threads, Blind's AI comment summaries, company listings, topic pages, reviews and salary pages all return HTTP 200 anonymously, with no gating.
Driving an authenticated session with automation tripped Blind's anomaly detection after roughly six navigations:
Automatic Logout — we noticed a login from a new device or location (code 2009), with a redirect to/session-out.
So a cookie buys no extra read access and costs you session stability. The only thing it would unlock is company-internal channels, which are gated to verified employees of that company.
If you still want it, set BLIND_COOKIE to your session cookie header (copy it
from a logged-in browser request in DevTools). There is no login flow — the
server only replays a cookie you supply, read once at startup and attached to
each request. It is off by default, and the client raises immediately if Blind
invalidates it rather than silently returning logged-out HTML.
The cookie itself is never written to disk, but responses fetched with it are
cached under a separate auth/ directory so authenticated and anonymous
results can never be served for each other. Don't commit the cookie.
Being a good citizen
Blind's robots.txt disallows /search/ for every user-agent, so this server
has no search tool and refuses to fetch that path. It also:
sends an honest
User-Agent(no browser impersonation — Blind serves it a 200 anyway)caches every response on disk for 6h, so repeat questions cost zero requests
spaces requests ~1.5s apart
fetches
robots.txtfirst and fails closed if it can't be read
Configure via BLIND_MCP_CACHE_DIR, BLIND_MCP_CACHE_TTL,
BLIND_MCP_MIN_INTERVAL, BLIND_MCP_USER_AGENT.
Blind's Terms of Service restrict automated access. This reads public pages at human pace for personal research; bulk crawling is both a ToS problem and, given that Blind's value rests on anonymity, a privacy one. Don't build a dataset of posts joined to employers and nicknames.
Reading the output
Blind is anonymous and unverified. Weight claims by the commenter's employer
(company on each comment) and treat a single loud voice as one data point. In
testing, the Roku India RTO answer was corroborated by two independent
commenters and an unrelated Glassdoor review — that's when it's worth trusting.
Contributing
Small project, easy to contribute to. The cheapest useful change is a keyword
alias — one dict entry plus a test — and it's the change that most improves
answers, because research only finds threads whose words match yours.
Start with good first issue,
then CONTRIBUTING.md. Issues are labelled by size (size: XS
is under 30 minutes) and mentored means ask questions in the thread and
you'll get walked through it. First review within 48 hours.
Two hard rules, both explained in CONTRIBUTING: don't commit captured Blind pages (fixtures are generated), and don't weaken robots/cache/throttle for speed.
License
MIT
Available Tools
5 toolscompany_postsA
List posts about a company, optionally narrowed to one topic.
topic accepts a bare keyword from company_topics (e.g. "india", "wlb").
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| topic | No | ||
| company | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It clearly discloses a read-only listing behavior and adds an important constraint: `topic` must be a bare keyword from company_topics, not an arbitrary string. It does not detail pagination or ordering, but these are minor for this straightforward query and the output schema defines the result format.
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?
The description is two focused sentences: the first states the primary purpose, the second clarifies the only non-obvious parameter. No filler or repetition.
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 simple list tool, the description covers the key behavior and the topic constraint, and an output schema exists to define the response shape. It falls slightly short of full completeness because the pagination parameters are undocumented, but the defaults and names make them reasonably inferable.
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 description coverage is 0%, so the description must explain parameters. It only documents `topic` (with examples), while leaving `page`, `limit`, and `company` unaddressed. `company` is required and inferable, and `page`/`limit` have defaults, but their semantics (e.g., page size, offset) are not defined anywhere in the schema or description.
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?
The description opens with the specific verb 'List' and the resource 'posts about a company', making the core action unambiguous. It also states the optional narrowing by topic, which distinguishes it from sibling tools like company_topics (which presumably lists topics) and read_post (which reads a single post).
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?
The description establishes the context: use this tool to list posts about a company, with an optional topic filter. It also directs the agent to source `topic` values from company_topics, giving a concrete prerequisite. However, it does not explicitly contrast with alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
company_topicsA
List the discussion topics Blind itself suggests for a company.
These are the highest-signal entry points -- e.g. Roku exposes india, wlb,
culture, layoffs, interview, rsu. Use one as the topic for company_posts.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that this is a read-only listing operation and explains the selection behavior: topics are 'Blind itself suggests' and are 'highest-signal entry points.' This adds meaningful behavioral context, although it does not mention potential edge cases such as companies with no suggested topics.
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?
The description is compact and front-loaded: the core statement appears in the first sentence, followed by a helpful purpose rationale and concrete examples. Every sentence earns its place, and the reference to company_posts adds actionable guidance without bloat.
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 simple one-parameter tool with an output schema, the description covers the main usage flow: retrieve suggested topics, then pass one to company_posts. The main gap is the missing company identifier format, but the overall tool behavior and integration with the sibling are sufficiently explained.
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 description coverage is 0%, so the description needed to compensate by explaining the `company` parameter, but it only says 'for a company.' It does not clarify the expected format (e.g., display name vs. slug), case sensitivity, or whether the company must match a known entity. The Roku example is about topic values, not the parameter format.
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?
The description uses a specific verb ('List') with a clear resource ('discussion topics Blind itself suggests for a company'). It includes concrete examples (Roku's topics: india, wlb, culture, layoffs) and explicitly connects to the sibling company_posts by explaining that one of these topics should be used as its `topic`, making the tool's purpose unmistakable.
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?
The description clearly tells the agent when to use this tool: to get the highest-signal entry points before calling company_posts. It explicitly names the relevant sibling and how the result should be consumed. It does not enumerate exclusions or alternatives like read_post/find/research, so it stops just short of full explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findA
Find a company's posts about one keyword.
This is how you search Blind. The company topic path accepts any keyword,
so find("Intuit", "maternity") returns exactly the maternity threads --
which paging the main listing will not surface, since they can be years
deep. Prefer one distinctive noun ("maternity", "rto", "refresher");
vague words like "policy" match hundreds of loosely-related posts.
Returns no posts when nothing matches, rather than falling back to the generic listing, so an empty result is a real answer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| company | Yes | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses exact-match behavior on the topic path, the no-fallback empty-result semantics, and the risk of vague keywords, which are non-obvious and useful.
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?
The description is front-loaded with the one-sentence purpose, followed by only behaviorally relevant details. Every sentence adds information (example, keyword guidance, empty-result meaning) without redundancy.
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 read-style search with three parameters and an output schema, the description covers the important invocation distinctions, result semantics, and fallback behavior. Nothing necessary for a correct call 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?
The schema has 0% property descriptions, so the description must compensate. It richly explains the keyword parameter and illustrates company/keyword with the Intuit/maternity example, though the limit parameter is left to inference from its name and default.
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?
The opening sentence names a specific verb and resource ('Find a company's posts about one keyword') and the examples make the exact scope unmistakable. It also contrasts with the generic 'main listing' by saying this returns keyword-specific threads.
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?
It clearly positions itself as the way to search Blind and gives concrete keyword-selection advice. It mentions the 'main listing' as an alternative that fails to surface old threads, but it does not name sibling tools or state explicit when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_postA
Read one Blind post in full.
Returns the body, Blind's own AI summary of the comment thread, and the comments with each commenter's employer -- which is how you weigh a claim (an answer from someone at the company differs from a passer-by).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_comments | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It usefully describes the return payload (body, AI summary, comments with employer context) and the reasoning behind it. However, it does not disclose that max_comments limits how many comments are returned, despite the schema's default of 40, which could mislead an agent into expecting all comments.
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?
The description is compact and front-loaded: the core action comes first, then the return contents, then a concise rationale for the employer data. Every sentence contributes useful information without repetition or filler.
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?
The description covers the main purpose, the return values, and the practical use case (weighing claims). Since an output schema exists, return format details are not required here. The main gap is the lack of any mention of max_comments or URL expectations, which keeps it just short of complete.
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 description coverage is 0%, so the description must compensate for the two parameters. It implies that 'url' identifies a single post, but it never explains the expected URL format or the meaning/behavior of 'max_comments'. This leaves both parameters underspecified beyond their names.
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?
The description opens with a specific verb and resource ('Read one Blind post in full'), which clearly distinguishes it from sibling list/search tools like company_posts and find. It also specifies what the tool returns, making its purpose 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?
The description implies a clear use case: retrieving a single post by URL in order to read its full content and comments. It does not explicitly contrast with sibling tools or state when not to use it, but the 'one post in full' framing provides enough context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
researchA
Answer a question about a company by pulling the most relevant threads.
Probes the distinctive words in the question against Blind's keyword-scoped company pages, merges the hits, then returns the best threads in full with Blind's own AI summary and the comments that actually address the question.
Ask naturally: "how many days in office in India", "what is the maternity leave policy", "do they require a PhD".
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | ||
| question | Yes | ||
| max_posts | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the internal process (probing distinctive words, merging hits) and the exact output shape (best threads in full, Blind's AI summary, comments that address the question). This goes well beyond a generic 'research' label, though it does not mention error conditions or rate limits.
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?
The description is efficient and well-structured: a one-sentence summary, a two-sentence mechanism/outcome explanation, and example queries. Every sentence earns its place and there is no redundant fluff. The key purpose is front-loaded.
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?
Given the tool has an output schema and three simple parameters, the description covers the core purpose, mechanism, and return contents clearly. It is slightly incomplete for an agent because it does not explain the meaning of max_posts or explicitly differentiate from sibling tools, but it is still usable as-is.
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 description coverage is 0%, so the description must compensate. It effectively explains 'company' and 'question' through the purpose sentence and the example prompts, but 'max_posts' is never mentioned or contextualized. The compensation is partial: the two main parameters are clear, but the third is not addressed.
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?
The description opens with a specific verb-resource pairing: "Answer a question about a company by pulling the most relevant threads." It clearly differentiates itself from the sibling tools (company_topics, company_posts, read_post, find) by describing a cross-thread research capability that merges hits and returns a curated answer with AI summary and relevant comments. The natural-language examples reinforce what the tool does.
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?
The description strongly implies when to use this tool: whenever you have a natural-language question about a company, with examples showing the expected phrasing ("Ask naturally: ..."). However, it does not explicitly name alternatives or state when NOT to use this tool in favor of a sibling, so it stops short of full routing guidance.
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.
5 tool updates
v0.1.0- First observed
company_posts - First observed
company_topics - First observed
find - First observed
read_post - First observed
research
TDQS
Scored across 5 tools
The tools generally occupy distinct layers: topic discovery, listing, keyword search, question answering, and full post reading. The only mild overlap is between company_posts and find, since both return company posts, but their input styles (curated topic vs arbitrary keyword) make the split understandable.
Names are readable and consistently lowercase, but the pattern is mixed: company_topics and company_posts are noun-style resources, read_post is verb_noun, and find/research are bare verbs. There is no single predictable naming convention across the set.
Five tools is a well-scoped size for a read-only Blind search and research server. Each tool serves a meaningful step in the workflow without unnecessary bloat or duplication.
The toolset covers the full read-oriented workflow: discover company topics, list posts, search by keyword, ask a natural-language research question, and read a full post with comments. There are no obvious gaps for the stated domain.
Maintenance
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
Search job postings aggregated from companies' careers sites, plus each job's discussion thread.
Search job postings, companies, and technology stacks across 10M+ companies.
Semantic search over 3.5M+ live US job postings pulled straight from company ATSes. Read-only.
Read-only candidate intelligence — hiring questions answered from real interview transcripts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables searching and analyzing H-1B visa sponsoring companies using U.S. Department of Labor data. Supports filtering by job role, location, and salary with natural language queries to find direct employers and export results.16MIT
- AlicenseNot gradedqualityBmaintenanceProvides access to SEC EDGAR data through natural language, including company filings, financial statements, and company info, without requiring an API key.MIT
- AlicenseNot gradedqualityAmaintenanceEnables corporate disclosure research through official SEC EDGAR and GLEIF sources, providing tools for company resolution, filings, insiders, ownership, financials, and private raises via natural language.431Apache 2.0
- AlicenseAqualityBmaintenanceEnables querying open job postings directly from company applicant-tracking systems (Greenhouse, Ashby, Lever), finding a company's job board, listing and comparing roles, and accessing salary data, all without scraping or API keys.3MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/dheerajjha/blind-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server