NeuralVerge MCP Server
OfficialProvides access to Crunchbase data for company research, enabling enrichment and lookup of company information through the NeuralVerge API.
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., "@NeuralVerge MCP ServerResearch the latest trends in renewable energy and provide a structured report"
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.
NeuralVerge MCP Server
An MCP (Model Context Protocol) server that wraps the full NeuralVerge API — AI Research, AI Extract, AI Agents, and Data Sources (LinkedIn, Crunchbase, Email enrichment and lookup, Phone enrichment and lookup, Email verification) — as MCP tools, so any MCP-compatible client (Claude Desktop, Claude Code, Cursor, ChatGPT/GPT clients with MCP support, and others) can call it directly.
This is an independent, unofficial wrapper around the NeuralVerge API. It is not affiliated with or endorsed by NeuralVerge.
Getting an API key
Before installing, you need a NeuralVerge account and an API key:
Sign up at app.neuralverge.ai (or via neuralverge.ai → "Get started").
Choose a plan (see Pricing below) — this determines your monthly points allowance.
Generate an API key from your account/API settings in the app.
Use that key as
NEURALVERGE_API_KEYin the Configuration step further down.
Related MCP server: Mixpeek MCP Server
Tools
Every NeuralVerge API endpoint is exposed as a 1:1 MCP tool. run_research and run_agent are asynchronous — they return a session_id immediately; call get_session_status every 2–5 seconds until status is complete or failed (NeuralVerge's own polling guidance). Every other tool returns its result synchronously.
AI Research
run_research
Starts the full multi-step research workflow: searches, analyzes sources, and returns a structured report. Async — returns a session_id.
Param | Type | Required | Description |
| string | Yes | The research task, in natural language. |
| string | No | Two-letter country code, e.g. |
| boolean | No | Whether web search runs during the task. |
| string | No | Depth tier for the research step (drives cost — see Pricing). |
| string | No | Model used to write the final report. |
| string | No | JSON-encoded schema pinning the structured output shape. |
Cost: 20–400 pts, depending on deepsearch_model depth tier.
run_agent
Runs a saved NeuralVerge agent — a reusable workflow with baked-in instructions and settings — by its agentId. Async — returns a session_id.
Param | Type | Required | Description |
| string (uuid) | Yes | ID of the saved agent to run. |
| string | Yes | Instructions for this specific run. |
| string | No | Two-letter country code. |
| boolean | No | Whether web search runs during the task. |
| string | No | Depth tier for the research step. |
| string | No | Model used to write the final report. |
Cost: same tiered pricing as run_research, based on the agent's configured depth.
get_session_status
Polls a session created by run_research or run_agent.
Param | Type | Required | Description |
| string (uuid) | Yes | Session ID returned by |
Returns status (queued/running/complete/failed) and, once complete, a results object with a human (Markdown summary) and machine (structured JSON) field. Polling itself is free.
run_search
Runs a synchronous web search and returns ranked results (title, URL, snippet). No polling needed.
Param | Type | Required | Description |
| string | Yes | Search query. |
| string | No | Country to bias results toward. |
| string | No | Language to bias results toward. |
| number | No | Maximum number of results to return. |
Cost: 5 pts.
AI Extract
run_extract
Loads a page by URL and extracts structured data according to natural-language instructions and/or a JSON schema. Synchronous.
Param | Type | Required | Description |
| string | Yes | URL of the page to load and extract from. |
| string | Yes | What to extract, in natural language. |
| string | No | Two-letter country code for locale-sensitive pages. |
| string | No | JSON-encoded schema pinning the output shape. |
Cost: 5 pts.
This is also the generic gateway NeuralVerge itself uses for every catalog data source that doesn't have its own dedicated endpoint (corporate registries, review sites, LinkedIn profiles without email) — point it at the right URL with the right extract_schema_json and it behaves like a dedicated source. See Data sources not exposed as dedicated tools below.
AI Agents
run_agent (see above, under AI Research) — NeuralVerge tags it "AI Agents" since it executes saved, reusable agent configurations rather than one-off instructions.
Data Sources — dedicated tools
These 11 catalog sources have their own dedicated endpoints/tools:
run_linkedin_email
LinkedIn profile lookup by URL, returning contact details including email when available (catalog: LinkedIn people profile + Email).
Param | Type | Required | Description |
| string | Yes | Full LinkedIn profile URL, e.g. |
Cost: 10 pts.
run_linkedin_domain
Finds a LinkedIn profile from a company name/domain plus a full name (catalog: LinkedIn profile by name and domain).
Param | Type | Required | Description |
| string | Yes | Company name or domain, e.g. |
| string | Yes | Full name of the person to find. |
Cost: 10 pts.
run_linkedin_company_search
Searches LinkedIn companies by query with optional filters.
Param | Type | Required | Description |
| string | Yes | Free-text company search query. |
| string[] | No | Size buckets, e.g. |
| string[] | No | Industry filters. |
| string[] | No | Location filters. |
| number | No | Max number of results. |
| string | No | Scraper depth, e.g. |
| number | No | Page offset. |
Cost: 5 pts per company returned.
run_linkedin_people_search
Searches LinkedIn people with an optional free-text query and advanced filters (company, title, seniority, industry, experience, location).
Param | Type | Required | Description |
| string | No | Free-text people search query. |
| number | No | Max number of results. |
| number | No | Page offset. |
| string | No | Scraper depth, e.g. |
| string[] | No | Location filters. |
| string[] | No | Current/past employer filters. |
| string[] | No | Current/past title filters. |
| string[] | No | Experience range filters. |
| string[] | No | Tenure filters. |
| string[] | No | Seniority filters. |
| string[] | No | Job function filters. |
| string[] | No | Industry filters. |
| string[] | No | Name filters. |
| string[] | No | Employer size filters. |
Cost: 100 pts per 25 results.
run_linkedin_company_employee
Searches employees of one or more given companies, using the same filter set as run_linkedin_people_search.
Param | Type | Required | Description |
| string[] | Yes | LinkedIn company URLs or names to search employees of. |
| string | No | Free-text search query. |
| — | No | Same semantics as |
Cost: 30 pts per run + 5 pts per profile returned.
run_email_enrichment
Enriches a known email with profile data (name, phones, company, position, LinkedIn/X/Telegram, work experience).
Param | Type | Required | Description |
| string | Yes | Email address to enrich. |
Cost: 10 pts.
run_email_validation
Validates deliverability of an email address (valid/invalid/risky, catch-all detection, mail provider, confidence).
Param | Type | Required | Description |
| string | Yes | Email address to validate. |
Cost: 1 pt — the cheapest call in the catalog.
run_email_finder
Finds a professional email address from a company domain, first name, and last name.
Param | Type | Required | Description |
| string | Yes | Company domain, e.g. |
| string | Yes | Person's first name. |
| string | Yes | Person's last name. |
Cost: 10 pts.
run_phone_enrichment
Enriches a known phone number with profile data (name, emails, company, LinkedIn/X/Telegram, carrier), worldwide.
Param | Type | Required | Description |
| string | Yes | Phone number in international format, e.g. |
Cost: 10 pts.
run_phone_enrichment_us
Validates and enriches a US phone number specifically: carrier, line type, activity score, litigator risk, and owner records (with addresses).
Param | Type | Required | Description |
| string | Yes | US phone number, e.g. |
Cost: 100 pts.
run_crunchbase_company
Fetches structured company data from a Crunchbase organization URL (website, location, founding year, employees, industries, funding, description).
Param | Type | Required | Description |
| string | Yes | Crunchbase organization URL, e.g. |
Cost: 15 pts.
Data sources not exposed as dedicated tools
NeuralVerge's catalog lists 29 data sources in total. The 11 above have dedicated endpoints/tools. The other 18 are all reached through run_extract — pass the source's own page URL as url and a matching extract_schema_json; the "Read more" page for each source on the catalog site has the exact schema and an example curl call. All of them cost 5 pts (the standard run_extract price), except where noted.
Company intelligence
Source | What it returns | Cost |
Capterra | Description, rating, use cases, alternatives, FAQs, features, pricing, integrations, support. | 5 pts |
Capterra reviews | User reviews. | 5 pts |
G2 | Product info, rating, reviews, discussions, pricing, features. | 5 pts |
Trustpilot | Review summary, rating, common topics, company details, contact info, similar companies. | 5 pts |
Corporate registry (official company registers, by country)
Source | Country | What it returns | Cost |
Companies House company | 🇬🇧 UK | Registered office, status, type, incorporation date, SIC codes, officers, persons with significant control. | 5 pts |
Companies House filings | 🇬🇧 UK | Filing date, description, document link. | 5 pts |
Companies House officers | 🇬🇧 UK | Officer name, correspondence address, role, appointment date. | 5 pts |
Ariregister company | 🇪🇪 Estonia | General info, VAT info, right of representation, contacts, shareholders, tax info, documents. | 5 pts |
CVR company | 🇩🇰 Denmark | Business info, ownership, financial statements, production units, registration history, employee counts. | 5 pts |
Czech Business Register search | 🇨🇿 Czech Republic | Structured results from a register search. | 5 pts |
INPI company | 🇫🇷 France | Identity, management/direction, establishments, observations and documents. | 5 pts |
KBO company | 🇧🇪 Belgium | General info, functions, entrepreneurial skill, characteristics, authorisations, entity links. | 5 pts |
KRS company | 🇵🇱 Poland | Basic/contact/address data, VAT confirmation, bankruptcy info, legal representatives. | 5 pts |
YTJ company | 🇫🇮 Finland | Business ID, name, company form, home municipality, line of business, registration history. | 5 pts |
LEI Lookup company | 🌐 Global | LEI registration details, company data, legal address. | 5 pts |
LEI Lookup search | 🌐 Global | Structured results from an LEI search. | 5 pts |
Social media (LinkedIn, without a dedicated tool)
Source | What it returns | Cost |
LinkedIn company profile | ID, name, country, locations, followers, employee count, about, specialties. | 5 pts |
LinkedIn people profile | Name, headline, about, location, current company, full role/education history, certifications, languages, recent posts + engagement. | 5 pts |
Example: fetching a UK company record via run_extract:
{
"url": "https://find-and-update.company-information.service.gov.uk/company/08804411",
"instructions": "Extract data from Companies House profile",
"settings": {
"country_code": "us",
"extract_schema_json": "{ ... }"
}
}Pricing
NeuralVerge uses simple, points-based pricing — one pool of points covers research, extraction, and every data source. See neuralverge.ai/pricing for the current numbers.
Plans
Plan | Price | Points / month |
Lite | $20/mo | 20,000 |
Base | $50/mo | 50,000 |
Core (Popular) | $100/mo | 100,000 |
Pro | $250/mo | 250,000 |
Ultima | $500/mo | 500,000 |
Enterprise | $1,000/mo | 1,000,000 |
Action costs
Action | Cost |
| 5 pts |
| 5 pts |
| 20–400 pts, priced by task depth (see below) |
Most dedicated Data Source tools | 1–15 pts (see per-tool cost above) |
| 100 pts per 25 results |
| 30 pts/run + 5 pts/profile |
| 100 pts |
AI research depth tiers
Tier | Cost | Speed | Description |
Lite | 20 pts | 30s–90s | Lightweight and fast |
Base | 50 pts | 1m–2m | Efficient for many tasks |
Core | 100 pts | 2m–4m | Balanced and strong for many tasks |
Pro | 200 pts | 3m–7m | Exploratory deep search |
Ultima | 400 pts | 5m–12m | Extensive deep search |
Plans can be changed anytime; the new points allowance applies on the next billing cycle. Points reset every cycle.
Requirements
Node.js >= 18
A NeuralVerge API key (Bearer token) — see Getting an API key above and docs.neuralverge.ai/authentication
Installation
npm install
npm run buildThis compiles TypeScript sources in src/ to dist/.
Configuration
The server reads its configuration from the environment:
Variable | Required | Description |
| Yes | Your NeuralVerge API bearer token (see Getting an API key). |
| No | Override the NeuralVerge API base URL. Defaults to |
| No |
|
| No | Port for |
| No | HTTP path for the MCP endpoint. Defaults to |
| No | If set, |
Copy .env.example to .env for local reference, but note the server itself reads process environment variables — most MCP clients pass these via their own config, not via a .env file.
Transports & client compatibility
This server implements both MCP transports, selected via MCP_TRANSPORT, because different clients require different ones:
Client | Transport it needs | Works with this server? |
Claude Desktop, Claude Code | stdio (spawns a local process) | ✅ |
Cursor | stdio (spawns a local process, same | ✅ |
ChatGPT (Developer Mode / custom connectors) | Remote Streamable HTTP or SSE over HTTPS — cannot spawn local stdio commands | ✅ |
Any other MCP client | stdio or Streamable HTTP | ✅ pick whichever transport it speaks |
stdio (Claude Desktop, Claude Code, Cursor)
These clients spawn the server as a local subprocess and talk JSON-RPC over its stdin/stdout — no networking involved. Add this to your client's MCP config (claude_desktop_config.json for Claude Desktop, .cursor/mcp.json for Cursor — the shape is identical):
{
"mcpServers": {
"neuralverge": {
"command": "node",
"args": ["/absolute/path/to/MCP/dist/index.js"],
"env": {
"NEURALVERGE_API_KEY": "your_api_key_here"
}
}
}
}Streamable HTTP (ChatGPT / remote clients)
ChatGPT's MCP connectors only accept remote servers over Streamable HTTP or SSE — they cannot launch a local node/npx process the way Claude Desktop and Cursor do. To use this server from ChatGPT, run it in HTTP mode and make it reachable over HTTPS:
MCP_TRANSPORT=http MCP_HTTP_PORT=8787 MCP_HTTP_AUTH_TOKEN=some_shared_secret \
NEURALVERGE_API_KEY=your_api_key_here node dist/index.jsThis starts a stateless Streamable HTTP server (fresh MCP session per request, no server-side session storage) at http://localhost:8787/mcp, plus a GET /health check. To reach it from ChatGPT you need a public HTTPS URL — either:
deploy it to any Node host (Fly.io, Render, a VPS, a container platform, etc.), or
tunnel your local instance for testing (e.g.
ngrok http 8787or a Cloudflare Tunnel).
Then in ChatGPT: enable Developer Mode (Settings → Connectors → Advanced), add a connector pointing at https://your-host/mcp, and set the Authorization: Bearer <MCP_HTTP_AUTH_TOKEN> header if you set one.
Security note: NEURALVERGE_API_KEY lives on the server and is shared by everyone who can reach the HTTP endpoint — it is not per-ChatGPT-user. Always set MCP_HTTP_AUTH_TOKEN (or put the server behind your own auth) before exposing it publicly; otherwise anyone with the URL can spend your NeuralVerge points.
Manual testing
You can exercise the server with the official MCP Inspector:
NEURALVERGE_API_KEY=your_api_key_here npm run inspectorThe Inspector's "HTTP" connection mode also works against the http transport (point it at http://localhost:8787/mcp), which is a convenient way to sanity-check the ChatGPT-facing path without a real ChatGPT connector.
Error handling
The NeuralVerge API returns these status codes, which this server surfaces as MCP tool errors with a descriptive message:
Status | Meaning |
400 | Bad Request — invalid body/parameters. Not retryable without fixing the request. |
401 | Unauthorized — missing/invalid/expired token. Check |
402 | Payment Required — plan or usage limits reached (out of points). |
404 | Not Found — invalid session id or inaccessible resource. |
500 | Internal Error — upstream/provider issue. Safe to retry. |
Project structure
src/
client.ts # thin fetch wrapper: auth header, error mapping
tools.ts # all 16 MCP tool definitions (input schemas + handlers)
index.ts # MCP server bootstrap (stdio transport, or Streamable HTTP if MCP_TRANSPORT=http)License
MIT — see LICENSE.
Available Tools
16 toolsget_session_statusA
Returns the current status of an AI Research or AI Agent session (queued/running/complete/failed) and the final result (human-readable summary plus machine-readable JSON) once processing completes.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session identifier returned by run_research or run_agent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the conditional nature of the final result ('once processing completes') and lists the possible statuses, which is valuable. It does not mention side effects, but the verb 'Returns' strongly implies a read-only operation.
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?
A single sentence with no fluff, front-loaded with the core action. Every clause adds useful detail about what is returned and when.
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 getter with no output schema, the description fully explains the return value (status and result format). It covers the scope of the tool sufficiently and leaves no major gaps for an agent to invoke it correctly.
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 already provides a fully descriptive comment for session_id (100% coverage), so the description adds no extra parameter information. Baseline 3 is appropriate because the schema does the heavy lifting and the description does not contradict or expand it.
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 clearly states it 'Returns the current status' of a session, enumerating the exact statuses and the final result. It is unmistakably a status-checking tool, distinct from the run_* sibling tools that initiate sessions.
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 usage after starting a session (via run_research or run_agent) by referencing those session types, and the schema clarifies the session_id source. However, it does not explicitly state when not to use it or mention alternatives, though none really exist for this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_agentA
Runs a saved NeuralVerge agent (a reusable, preconfigured workflow) by its agentId and returns a session_id immediately. Poll get_session_status with that session_id until status is 'complete' or 'failed'.
| Name | Required | Description | Default |
|---|---|---|---|
| agentId | Yes | UUID of the saved agent to run. | |
| settings | Yes | Agent run settings. | |
| instructions | Yes | Instructions passed to the agent for this run. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the asynchronous behavior (returns session_id immediately instead of waiting for completion) and explicitly instructs to poll until 'complete' or 'failed'. This is critical context since no annotations exist. It does not cover side effects like cost or auth, but the core execution model is well explained.
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 exactly two sentences with the primary action and return value in the first and the polling instruction in the second. There is no filler, and it is front-loaded with the key information, making it highly concise and well-structured.
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 that there is no output schema, the description appropriately explains the return value (session_id) and the necessary follow-up polling workflow. It complements the schema by covering the overall lifecycle. It could mention error handling beyond 'failed', but the current guidance is sufficient for the tool's moderate complexity.
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 already provides 100% coverage with descriptions for all three parameters (agentId, settings, instructions), so the baseline is 3. The tool description adds no extra parameter semantics beyond mentioning agentId in the narrative, which does not enhance the schema's own 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 clearly states the action (runs a saved agent), the resource (a preconfigured NeuralVerge agent identified by agentId), and the immediate result (returns a session_id). It also distinguishes this tool from siblings like run_research or run_search by focusing on running a reusable, preconfigured workflow rather than a specific task.
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 provides clear context: you use this tool when you have a saved agentId and want to execute it. It also instructs to poll get_session_status afterward, which is a useful follow-up guidance. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_crunchbase_companyA
Fetches structured company data (website, location, founding year, employees, industries, funding, description) from a Crunchbase company URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Crunchbase organization URL, e.g. https://www.crunchbase.com/organization/openai |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It accurately indicates a read operation and lists the data fields returned, but it does not disclose any potential errors (e.g., invalid URL), rate limits, or the exact return format, leaving some uncertainty.
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 a single, concise sentence that front-loads the action and resource. Every word earns its place, with no unnecessary detail.
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 fetch tool, the description covers the purpose and lists the expected output fields. Since there is no output schema, the description provides necessary context, though it omits details about error handling and exact return structure.
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 input schema fully describes the single parameter 'url' with a concrete example, achieving 100% coverage. The description adds no additional parameter semantics beyond what the schema already provides.
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 clearly states the tool's function: it fetches structured company data from a Crunchbase company URL. The verb 'Fetches' is specific, and the resource and source are explicitly defined, distinguishing it from sibling tools like run_linkedin_company_search.
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 makes the usage context clear: use this tool when you have a Crunchbase company URL and need company data. It does not explicitly mention alternatives or exclusions, but given the narrow scope, the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_email_enrichmentA
Enriches a known email address with associated profile data (name, phone, company, position, LinkedIn/X profiles) when available.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address to enrich. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It notes data is returned 'when available', but does not state whether the operation is read-only, requires special authentication, can fail for invalid/disposable emails, or what side effects (if any) occur. This opacity could lead an agent to misuse the tool or misinterpret errors.
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 a single, front-loaded sentence that conveys purpose and key data fields without excess words. No fluff or repetition—every element earns its place.
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 tool's core function and expected outputs, but with no output schema and no annotations, it omits return format (e.g., JSON structure), error behavior for invalid emails, and any rate-limit or permission notes. Given the tool's simplicity (one parameter), this is sufficient but not rich; there is clear room for additional context.
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 provides 100% coverage for the sole parameter 'email' with a clear description. The tool description adds only the qualifier 'known' and the list of profile data, which does not materially enhance parameter understanding beyond the schema. Baseline 3 is appropriate given full schema coverage.
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 specifies a clear action ('Enriches') and resource ('known email address'), and enumerates the exact data returned (name, phone, company, position, LinkedIn/X profiles). This distinguishes it from sibling tools like run_email_validation (validates) and run_email_finder (finds), 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 when to use this tool: when you already have a known email and want associated profile data. However, it does not explicitly contrast with alternatives (e.g., run_email_finder when you lack an email, run_phone_enrichment for phone-only data) or state when not to use it. The context is clear but under-specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_email_finderB
Finds a professional email address for a person given their company domain, first name, and last name.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Company domain, e.g. openai.com | |
| last_name | Yes | Person's last name. | |
| first_name | Yes | Person's first name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the high-level outcome and does not mention what happens when no email is found, whether the result is verified, limitations, rate limits, or any other behavioral details an agent would need to handle edge cases.
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 a single, clear, front-loaded sentence with no filler. Every word earns its place, and it is appropriately concise for the simplicity of the tool.
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 simple lookup nature and complete schema, the description covers the basic purpose and inputs. However, since there are no annotations and no output schema, it omits return-value details and not-found or error behavior, leaving some ambiguity for an agent choosing and invoking the tool.
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 input schema already describes all three parameters with 100% coverage, so the baseline is 3. The description merely restates 'company domain, first name, and last name' without adding extra format details, constraints, or relationships beyond what the schema already provides.
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 ('Finds') and a clear resource ('a professional email address for a person'), and lists the three required inputs. It clearly communicates the tool's function, but it does not explicitly differentiate from similar sibling tools like run_email_enrichment or run_linkedin_email.
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?
There is no guidance on when to choose this tool over alternatives such as run_email_enrichment or run_email_validation. The phrase 'given their company domain, first name, and last name' implies a precondition, but there are no explicit use cases, exclusions, or alternative recommendations, which is a significant gap given the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_email_validationA
Validates an email address and returns deliverability signals (valid/invalid/risky, catch-all detection, provider, confidence).
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address to validate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of explaining behavior. It discloses the return types, which is useful, but it does not mention whether this is a real-time network check, whether any email is sent, or any side effects or limitations. Basic transparency is present but not rich.
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 a single, concise sentence that front-loads the primary action and immediately lists the output categories. No redundant or vague wording is present.
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?
With only one parameter and no output schema, the description adequately explains the return values by enumerating deliverability signals, which is essential for the user. It could go slightly deeper (e.g., confidence scale), but for a simple tool it is sufficiently 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 coverage is 100%: the only parameter 'email' is already well described as 'Email address to validate.' The description adds no extra parameter semantics beyond that, so the baseline of 3 applies.
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 clearly states the tool's function ('Validates an email address') and lists specific output signals (valid/invalid/risky, catch-all detection, provider, confidence). This verb+resource combination distinguishes it from sibling tools like email finder or enrichment, which serve different purposes.
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 usage when an email address needs deliverability checking, but it does not explicitly contrast with alternatives such as run_email_finder or run_email_enrichment. Sibling distinction is left to the tool name and context rather than stated in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_extractA
Loads a webpage by URL and extracts structured data from it according to natural-language instructions and/or a JSON schema. Synchronous — returns the result immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the page to load and extract data from. | |
| settings | Yes | Extraction settings. | |
| instructions | Yes | Natural-language description of what to extract. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is synchronous ('returns the result immediately') and that it performs a read-like operation, but it does not mention rate limits, timeout behavior, or error handling. While it is not destructive, a little more context on runtime constraints would improve transparency.
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 only two sentences, front-loads the core purpose, and includes a relevant behavioral note about being synchronous. There is zero filler, and every word contributes to the understanding of the tool.
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 no output schema, the description adequately indicates that the result will be extracted structured data, but it does not specify the exact response structure. For a relatively straightforward extraction tool, this is sufficient; however, a detail about the response format would make it fully 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?
The input schema already provides 100% coverage, with descriptions for all three parameters. The description adds a helpful synthesis by explaining that instructions and/or a JSON schema guide extraction, but it does not add new details about parameter formats or edge cases. The baseline of 3 is appropriate because the schema does most of the work.
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 clearly identifies the tool as one that loads a webpage and extracts structured data, using specific verbs ('loads', 'extracts') and resources ('URL', 'structured data'). It is distinct from sibling tools like run_search or run_research, which focus on other operations, so there is no confusion about its purpose.
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 when to use the tool: whenever structured data extraction from a webpage is needed, with input via natural-language instructions and/or a JSON schema. It does not explicitly mention alternatives or exclusions, but the context is clear enough for an agent to select this tool for extraction tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_linkedin_company_employeeA
Searches LinkedIn employees of one or more given companies, using the same people-style filters as run_linkedin_people_search.
| Name | Required | Description | Default |
|---|---|---|---|
| companies | Yes | LinkedIn company URLs or names to search employees of. | |
| locations | No | ||
| startPage | No | ||
| maxResults | No | ||
| industryIds | No | ||
| scraperMode | No | ||
| searchQuery | No | Free-text search query. | |
| pastJobTitle | No | ||
| functionFilter | No | ||
| seniorityLevelFilter | No | ||
| currentJobTitleFilter | No | ||
| companyHeadcountFilter | No | ||
| yearsOfExperienceFilter | No | ||
| yearsAtCurrentCompanyFilter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'Searches' with no details on output, authentication, rate limits, or side effects. This is a minimal disclosure for a tool that likely performs network requests and returns data, so significant behavioral context is missing.
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 exactly one sentence, front-loaded with the primary action, and every phrase adds meaning. The reference to the sibling tool is concise and avoids repeating filter names. No fluff or 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?
With 14 parameters, no output schema, and no annotations, the description is far too sparse. It doesn't mention required vs optional fields, result format, or any usage examples. The only context is the link to run_linkedin_people_search, which is helpful but insufficient for such a complex tool.
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 only 14%, so the description should compensate by explaining parameters. It only mentions 'one or more given companies' (covering the required companies param) and vaguely references 'people-style filters' without listing any specific filter names or meanings. This does little to help an agent select parameters correctly.
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 ('Searches'), a clear resource ('LinkedIn employees of one or more given companies'), and explicitly distinguishes itself from the sibling run_linkedin_people_search by scoping to companies. The phrase 'using the same people-style filters' further clarifies it's a variant of people search, not a general search.
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 defines when to use this tool: when you need employees of specific companies. It references run_linkedin_people_search to indicate filter compatibility, implying an alternative for general people searches. However, it does not explicitly state exclusions or when not to use it, so it misses a complete when/where-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_linkedin_company_searchA
Searches LinkedIn companies by a text query with optional filters (size, industry, location).
| Name | Required | Description | Default |
|---|---|---|---|
| maxItems | No | Maximum number of results to return. | |
| locations | No | Location filters. | |
| startPage | No | Page offset to start from. | |
| companySize | No | Company size buckets, e.g. ['51-200']. | |
| industryIds | No | Industry filters. | |
| scraperMode | No | Scraper depth mode, e.g. 'short' or 'full'. | |
| searchQuery | Yes | Free-text company search query. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states 'searches', implying a read-only operation, but does not disclose pagination behavior, scraper depth implications, authentication needs, or return format. This is minimal transparency for a tool with no annotation support.
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 a single, concise sentence that captures the core function and key filter dimensions. It is front-loaded with the action and resource, with no filler or 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?
The tool has 7 parameters, no output schema, and no annotations. The description is brief but covers the main purpose. However, it omits behavioral context such as pagination, result format, and how parameters like scraperMode affect behavior, making it only partially complete for an agent to invoke correctly.
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 100%, so the structured schema already explains all parameters. The description adds a high-level summary (size, industry, location) that maps to specific parameters but does not add new semantic detail beyond what the schema provides.
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 clearly states the tool searches LinkedIn companies using a text query with optional filters (size, industry, location). It uses a specific verb and resource, and the mention of size/industry/location distinguishes it from sibling tools like people search and company employee search.
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 usage when a company search is needed, but it provides no explicit timing guidance or alternatives. It does not mention when not to use this tool or point to sibling tools, so usage is inferred rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_linkedin_domainA
Finds a LinkedIn profile matching a company name or domain plus a full name.
| Name | Required | Description | Default |
|---|---|---|---|
| full_name | Yes | Full name of the person to find. | |
| company_or_domain | Yes | Company name or domain, e.g. openai.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must bear the full burden of disclosing behavioral traits. It only states that it 'finds' a profile, without mentioning output format, potential limitations (e.g., profile may not exist), whether it performs a live search, or if any external rate limits apply. This is a significant gap for an agent deciding whether to invoke the tool.
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 a single, well-structured sentence that front-loads the action ('Finds') and the key inputs. Every word earns its place, with no redundant padding.
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 tool has no output schema and no annotations, so the description must also convey what the agent can expect in return. It does not mention the return format (e.g., profile URL, profile details, or null). For a two-parameter lookup, this is a clear but incomplete description; the agent might not know how to use the result.
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% because both parameters (full_name and company_or_domain) have inline descriptions. The tool description adds no new meaning beyond what the schema already provides. Per the rubric, with high schema coverage, a baseline of 3 is appropriate.
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 clearly states the tool's purpose: to find a LinkedIn profile using a company name or domain plus a full name. This is specific and distinguishes it from sibling tools like run_linkedin_people_search (which likely searches by name only) and run_linkedin_company_search.
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 provides clear context for when to use the tool: when you have both a company/domain and a full name. However, it does not explicitly name alternatives or when not to use it, unlike the high-scoring TDQS example. The context is clear but lacks explicit exclusion or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_linkedin_emailA
Looks up a LinkedIn profile by its full profile URL and returns contact details, including an email address when available.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Full LinkedIn profile URL, e.g. https://www.linkedin.com/in/john-doe/ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It honestly notes that email is returned only 'when available', which is a useful caveat, but it does not address failure modes, rate limits, or whether other contact details are always present. This is minimal but nonzero transparency.
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 a single, efficient sentence that states the action, input, and output without any redundant or filler wording.
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 one-parameter tool without an output schema, the description gives the essential invocation context and a key caveat about email availability. It does not detail the exact response structure or error handling, but the tool's simplicity makes the description reasonably 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?
The input schema already provides a thorough description of the 'username' parameter (full URL with example), giving 100% coverage. The description only reaffirms that the tool uses a full profile URL, adding marginal meaning beyond the schema, so it meets the baseline.
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 ('looks up') and resource ('LinkedIn profile'), with a clear outcome ('returns contact details, including an email address'). It distinguishes itself from sibling search tools by specifying the input must be a full profile URL, making its scope unique.
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 states the input condition ('by its full profile URL'), which implies when to use this tool versus people or company search. However, it does not explicitly name alternatives or provide exclusion guidance, so it stops short of full comparative instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_linkedin_people_searchA
Searches LinkedIn people using an optional free-text query and a rich set of advanced filters (company, title, seniority, location, experience, industry).
| Name | Required | Description | Default |
|---|---|---|---|
| lastNames | No | ||
| locations | No | ||
| startPage | No | Page offset to start from. | |
| firstNames | No | ||
| maxResults | No | Maximum number of results to return. | |
| industryIds | No | ||
| pastCompany | No | ||
| scraperMode | No | Scraper depth mode, e.g. 'short' or 'full'. | |
| searchQuery | No | Free-text people search query. | |
| pastJobTitle | No | ||
| currentCompany | No | ||
| functionFilter | No | ||
| seniorityLevelFilter | No | ||
| currentJobTitleFilter | No | ||
| companyHeadcountFilter | No | ||
| yearsOfExperienceFilter | No | ||
| yearsAtCurrentCompanyFilter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that the tool 'searches' and does not mention output format, pagination, rate limits, authentication needs, or whether the operation is read-only. This is a significant gap for a search tool.
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 a single, well-structured sentence that is front-loaded with the main action and scope. It contains no redundant information and is appropriately concise for its purpose.
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's complexity (17 parameters), lack of annotations, and absence of an output schema, the description is far too thin. It does not explain how results are returned, how filters interact, what the pagination behavior is, or any other details that would help an agent use the tool effectively.
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 input schema has 17 parameters with only 24% description coverage. The description adds a general 'rich set of advanced filters' and lists a few categories (company, title, seniority, location, experience, industry), but does not provide meaningful detail for most parameters such as firstNames, lastNames, pastCompany, yearsOfExperienceFilter, or scraperMode. It fails to compensate for the low schema coverage.
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 clearly states the tool's function: it searches LinkedIn people with an optional free-text query and advanced filters. This distinguishes it from sibling tools like run_linkedin_company_search and run_linkedin_company_employee, which target different resources.
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 provides clear context for when to use the tool: when searching for LinkedIn people, with support for various filters. It does not explicitly mention alternatives or exclusions, but the scope is unambiguous given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_phone_enrichmentB
Enriches a known phone number with associated profile data (name, email, company, LinkedIn/X profiles, carrier) when available.
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | Phone number in international format, e.g. +1234567890 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'when available', indicating that data may not always be present, but does not disclose any other behavioral traits such as data sources, rate limits, or error handling for invalid numbers.
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 a single, clear, and front-loaded sentence. Every word serves a purpose, with no redundancy 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?
Given the tool's simplicity (one parameter, no output schema), the description adequately covers the core functionality and lists expected data fields. It could mention behavior when no data is found, but 'when available' partially addresses this.
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 description covers the only parameter fully (phone number in international format). The description adds minimal extra meaning beyond the schema, essentially restating that the number is 'known' without additional context.
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 ('enriches') and resource ('known phone number'), and lists the associated profile data types. It clearly states the tool's function, but does not explicitly differentiate from the sibling tool 'run_phone_enrichment_us', so it loses a point.
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?
Usage context is implied: use when you have a known phone number and want associated profile data. However, there is no explicit guidance on when not to use it or how it differs from siblings like 'run_phone_enrichment_us'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_phone_enrichment_usA
Validates and enriches a US phone number with carrier, line type, activity score, litigator risk, and owner details.
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | US phone number, e.g. 12069735100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses the tool validates and enriches, but does not explicitly state whether it is read-only, what happens on invalid input, or if any rate limits or permissions apply. This is a moderate disclosure level for a likely read-only enrichment tool.
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 a single sentence that is front-loaded with the verb 'Validates and enriches' and is entirely free of filler. Every word adds value, and it fits the tool's simple scope.
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 its simplicity (1 parameter, no output schema), the description is nearly complete. It covers what the tool does and the input requirement. It lacks guidance on when to use this vs. run_phone_enrichment for international numbers, and does not mention error handling, but for a basic enrichment tool this is satisfactory.
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% - the single parameter 'phone' has a clear description and example. The tool description adds only that it's a US phone number, which is already in the schema, so no extra meaning is provided beyond reinforcing the 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 clearly states the tool validates and enriches a US phone number, listing specific outputs: carrier, line type, activity score, litigator risk, and owner details. It distinguishes from sibling tools like run_phone_enrichment (non-US) and other enrichment tools by focusing on US phone numbers and specific enrichments.
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 explicitly says 'US phone number', giving clear context that this tool is for US numbers. However, it does not explicitly state when NOT to use it or mention alternatives like run_phone_enrichment for non-US numbers. The clear context earns a 4, but absence of exclusions keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_researchA
Starts the full NeuralVerge AI research workflow (multi-step search, analysis, and structured reporting) and returns a session_id immediately. Poll get_session_status with that session_id until status is 'complete' or 'failed'.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | Yes | Research run settings. | |
| instructions | Yes | Main research task, in natural language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the operation is asynchronous (returns session_id immediately), that it is multi-step, and that the eventual status can be 'complete' or 'failed'. However, it does not mention potential side effects, prerequisites, or what happens after completion, leaving some transparency gaps for an operation that starts a large workflow.
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 sentences long, front-loaded with the main purpose, and includes essential follow-up action (poll get_session_status). Every word adds value, with no redundancy 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?
Given the tool's async complexity and lack of annotations/output schema, the description covers the essential flow: start the workflow, receive a session_id, and poll until a terminal status. It could mention what the final result looks like or the scope of the workflow, but it is reasonably complete for an entry-point tool, especially since get_session_status is a sibling that likely covers the rest.
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 100%, so the schema already fully documents the 'instructions' and 'settings' parameters. The description adds no additional parameter-specific meaning; it only restates that instructions are a natural-language task and settings are for the run. This meets the baseline for high schema coverage but does not exceed it.
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 clearly states the tool 'Starts the full NeuralVerge AI research workflow' with a specific verb and resource, and distinguishes it from sibling tools by highlighting the multi-step, full-workflow nature and the immediate return of a session_id. It explicitly mentions polling get_session_status, which clarifies its unique role among the sibling tools.
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 provides clear usage context: it is the entry point for the full research workflow and should be followed by polling get_session_status. It does not explicitly list when to avoid using it or alternatives, but the distinction from more specific search/extract tools is implied. This is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_searchA
Runs a synchronous web search and returns a structured list of ranked results (title, url, snippet) immediately, without polling.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. | |
| settings | Yes | Search settings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the synchronous execution and immediate return of structured results, which is valuable. However, it does not address safety (e.g., whether it is read-only), rate limits, authentication requirements, or error behavior, leaving gaps in behavioral transparency.
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 a single sentence that front-loads the core action and return format. It includes only essential details like synchronous execution and no polling, with no redundant or vague wording. It is well-structured and easily scannable.
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 relatively simple tool, the description covers the main purpose, return structure, and synchronous behavior, while the schema covers parameters. Given the absence of annotations and output schema, it is reasonably complete, though it could briefly explain how settings (like max_results) affect the result set or mention any constraints.
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 100% for the top-level parameters (query and settings both have descriptions), so the baseline is 3. The description does not add any additional meaning to the parameters, and the nested settings properties (country, language, max_results) remain minimally documented, but the high schema coverage makes this acceptable.
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 the specific verb 'runs' and resource 'web search', and specifies the output as a structured list of ranked results (title, url, snippet). This clearly distinguishes it from sibling tools like run_research or run_agent, though it does not explicitly name alternatives. The purpose is unambiguous and actionable.
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 provides clear usage context by stating the search is synchronous and returns immediately 'without polling', implying it is suitable for quick, direct search needs. However, it does not explicitly exclude alternatives or mention when to prefer this over run_research or other sibling tools, so it misses the 'when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Multiple tools target similar actions (email finder vs LinkedIn email, people vs company employee search, phone vs US phone enrichment), and async workflows (research vs agent) are easy to confuse. Descriptions help clarify, but boundaries between tools are not always sharp.
Strong run_ prefix creates a consistent feel, but suffixes mix verb-style (search, extract) and noun-style (email_finder, phone_enrichment_us) naming. The outlier get_session_status breaks the run_ pattern, and run_linkedin_domain is misleading (it does not search by domain).
With 16 tools, this is slightly above the typical 3-15 range, but the server covers distinct domains (research, search, LinkedIn, email, phone, Crunchbase), so each tool earns a place. The count feels justified for a comprehensive enrichment platform, though it borders on heavy.
Core data retrieval surfaces are well covered: research workflow, search, extraction, LinkedIn, email, phone, and company data. Notable gaps include no agent management (list/create agents) and no session control (cancel/pause), but most practical workflows are supported.
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
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Discover and call 10,000+ production APIs from one MCP server. Pay-per-call billing for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceExposes over 19,000 Apify Actors as MCP tools for web scraping, data extraction, and OSINT automation. It enables AI agents to dynamically discover and execute scrapers to collect structured data and crawl web content.

Mixpeek MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceAutomatically loads Mixpeek's OpenAPI spec and exposes its endpoints as MCP tools, enabling natural language interaction with Mixpeek's API via standard MCP clients.391MIT- AlicenseNot gradedqualityDmaintenanceExposes Futurepedia AI tool crawling and universal web page parsing as MCP tools for assistants.MIT
- FlicenseNot gradedqualityDmaintenanceExposes any REST API as MCP tools, enabling AI agents to discover and call existing HTTP endpoints without modifying the original API.
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/neuralverge/neuralverge-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server