Skip to main content
Glama
DINQ-labs

openpeoplerouter

Official
by DINQ-labs

OpenPeopleRouter

One MCP interface for people discovery. Bring your own provider accounts.

Find candidates, researchers, creators, industry experts and business contacts; enrich profiles and companies; resolve identities and discover contact details. Use unified capability tools first, then search the provider endpoint catalog when you need a platform-specific API.

This is an independent, self-hosted project. It has no DINQ login requirement, customer database, credit wallet, markup, payment gateway or hosted deployment dependency. You supply provider API keys and pay the providers directly. DINQ is an optional hosted provider, like a separate paid account you can choose.

中文说明 · Provider configuration · Architecture

Run locally

Requires Python 3.11+ and uv. From your checkout:

uv sync
cp .env.example .env
# Edit .env locally: add only the provider keys you want to use.
uv run openpeoplerouter providers
uv run openpeoplerouter check
uv run openpeoplerouter serve

The default transport is MCP stdio. It waits for an MCP client and is not an interactive chat prompt. Environment variables override .env values.

For an MCP client supporting command-based servers, use this configuration with the absolute path to your checkout and your installed uv executable:

{
  "mcpServers": {
    "openpeoplerouter": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/openpeoplerouter", "run", "openpeoplerouter", "serve"]
    }
  }
}

This is a generic MCP configuration example; individual clients can use different configuration formats. No provider key needs to be pasted into a conversation.

Related MCP server: fetchcraft-mcp

Tools

Tool

Purpose

people_search

Find people by criteria or source URL

people_enrich

Enrich a known person's profile

companies_search

Find companies

companies_enrich

Enrich a company's profile

social_profile

Read social account profiles

people_identity_resolve

Resolve identities across platforms

people_from_image

Discover image sources

people_contact_find

Find or verify contact details

capabilities

Inspect coverage and available providers

find_tool

Discover endpoints when unified capabilities are insufficient

endpoint

Inspect arguments and provider documentation

call_tool

Execute a provider endpoint with your own credentials

The initial catalog contains 29 direct HTTP providers and 1,641 endpoint definitions. Definitions do not mean every API is enabled, tested, free or available on your plan. Unified routing needs both a configured provider and a matching adapter. Some capabilities require DINQ or another custom provider adapter. Use capabilities and find_tool to inspect availability.

Provider control

# Optional allowlist: only these providers may be called.
OPENPEOPLEROUTER_PROVIDERS=hunter,tikhub,openalex
HUNTER_API_KEY=your-own-key
TIKHUB_API_KEY=your-own-key

Set vendor on a unified call to select one provider or endpoint. Set waterfall=false to try only the first eligible endpoint. The default can call multiple providers on misses/errors; merging capabilities can call multiple providers even after a hit. Provider charges may apply to each request. There is no central credit budget or automatic invoice reconciliation. Catalog pricing is informational, may be outdated and may differ from your plan.

Optional DINQ provider

DINQ_API_KEY=your-own-dinq-key
# Include dinq if you use an allowlist:
OPENPEOPLEROUTER_PROVIDERS=dinq,hunter

Select vendor="dinq" in a unified tool call. This sends the request to the public hosted PeopleRouter MCP at https://router.dinq.me/test using your DINQ API key. DINQ's own plan and charges apply. It is never selected automatically, and other providers work without a DINQ account. The bridge has protocol tests; no paid DINQ request is made during installation or CI.

HTTP / Docker

# In .env, set OPENPEOPLEROUTER_TOKEN to a long random secret first.
uv run openpeoplerouter serve --transport http --host 0.0.0.0
# Or:
docker compose up --build -d

MCP endpoint: http://127.0.0.1:8093/mcp. Supply Authorization: Bearer <OPENPEOPLEROUTER_TOKEN> when enabled. Docker publishes only to localhost by default. Use your own TLS reverse proxy for remote access. This is a single-owner instance: clients share the configured provider keys. It does not implement per-user accounts or OAuth. Public binding requires a token.

Develop

uv run pytest -q
uv build

Tests use synthetic responses and in-process MCP clients. They do not spend provider credits. The catalog ships inside the Python package, so installation has no dependency on a sibling repository or the original private project.

To add a provider, see the provider guide.

OpenMailConnect — a standalone, self-hosted MCP server for Gmail and SMTP, maintained by DINQ Labs under Apache-2.0. It provides Gmail search, reading, threads, drafts and sending, plus SMTP sending. Use OpenPeopleRouter to discover people and OpenMailConnect to work with your own mailbox; both can be configured independently in the same MCP client.

OpenMailConnect is optional and is not bundled with OpenPeopleRouter. Follow its installation guide to set up your own Gmail OAuth application or SMTP credentials. It requires no DINQ account or PeopleRouter credits. Sending email requires the user's authorization.

License

Apache-2.0. See LICENSE and NOTICE. Catalog portions originate from the Apache-2.0-licensed treg project; attribution is retained. Provider services, datasets and subscriptions are governed by their own terms, not by this software license.

Available Tools

12 tools
call_toolB

Execute a discovered endpoint using your provider key. Provider charges may apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNo
endpoint_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It does usefully disclose that provider charges may apply and that the provider key is used for authentication, but it does not address potential side effects, failure modes, or rate limits. This is adequate but not comprehensive for a tool that executes arbitrary endpoints.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core action is front-loaded, and the cost warning is relevant and earns its place. The structure is appropriately tight given the tool's simplicity.

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

Completeness2/5

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

For a tool with no annotations and a low-detail schema description, the description leaves key context missing: how endpoint_id relates to the discovery flow, what 'args' should contain, and when this tool is appropriate relative to siblings. An output schema exists, so return values are somewhat covered, but the invocation context is under-specified.

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

Parameters2/5

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. It does not explain that 'endpoint_id' identifies a previously discovered endpoint or that 'args' contains the endpoint-specific arguments. The parameter names are somewhat self-evident, but the description adds almost no semantic value beyond the schema.

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

Purpose4/5

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

The description uses a specific verb ('Execute'), a clear resource ('discovered endpoint'), and mentions the provider key. It is distinguishable from the sibling tools like find_tool and endpoint, though it does not explicitly contrast itself with them.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, and no mention of prerequisites such as first using the 'endpoint' or 'find_tool' sibling to discover an endpoint. The phrase 'discovered endpoint' implies a prerequisite but does not state it explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

capabilitiesA

List unified capabilities, inputs and configured providers. No provider request.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral disclosure burden. It clearly states 'No provider request,' which is a meaningful trait indicating no external side effects. It does not mention read-only status explicitly, but 'List' and the negative statement provide good transparency.

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

Conciseness5/5

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

The description is a single sentence that front-loads the verb and object, followed by a useful negative clarification. Every word earns its place; there is no fluff or redundancy.

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

Completeness5/5

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

Given the tool's simplicity (zero parameters, output schema present), the description is complete. It covers purpose, scope, and a key behavioral trait, so an agent has enough information to select and invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters and the schema coverage is 100%, so there is nothing for the description to add about parameter semantics. The baseline for zero-parameter tools is 4, and no additional detail is needed.

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

Purpose4/5

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

The description uses a specific verb ('List') and names the resources ('unified capabilities, inputs and configured providers'), making the tool's purpose clear. However, it does not explicitly distinguish itself from sibling tools like find_tool or endpoint, and 'unified capabilities' is somewhat ambiguous.

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

Usage Guidelines3/5

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

The description implies usage: an agent should call this when it needs to know available capabilities, inputs, or providers. However, it does not provide explicit when-to-use guidance or alternatives, only the negative clarification 'No provider request.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

companies_enrichB

Enrich a company from its domain, name, LinkedIn URL or a work email — treg picks the provider and names the one that served Use vendor to pin a provider. Returns outcome, normalized output, raw provider data and _meta.tried. Provider API charges are billed directly to your provider account.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoThe company's name
emailNoA work email address
domainNoThe employer's domain, no www and no @
vendorNoPin one vendor or endpoint id instead of routing
websiteNoThe company's website
waterfallNoFalse stops at the first vendor instead of trying the next
linkedin_urlNohttps://www.linkedin.com/in/<slug>
linkedin_handleNoThe <slug> from a LinkedIn URL, without the /in/

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses automatic provider routing, the return payload components (outcome, normalized output, raw provider data, _meta.tried), and that provider API charges are billed to the provider account. The typo and lack of failure/rate-limit details keep it from a 5.

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

Conciseness3/5

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

The description is compact and front-loaded with the core purpose, but the sentence 'treg picks the provider and names the one that served Use vendor to pin a provider' is a run-on with missing punctuation and an unclear subject, forcing the agent to parse around the typo.

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

Completeness3/5

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

The output schema covers return values, and the description covers routing and billing. However, with 8 optional parameters and no required field, the description never states that at least one identifier (domain, name, email, LinkedIn URL, etc.) must be provided, which is critical for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema: 'Use vendor to pin a provider' is redundant with the vendor parameter's schema text, and it doesn't clarify combinations or any minimum identifier requirement.

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

Purpose4/5

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

The description states a specific operation ('Enrich a company') and lists several accepted identifier inputs (domain, name, LinkedIn URL, work email), which distinguishes it from companies_search. However, the phrase 'treg picks the provider and names the one that served Use vendor to pin a provider' is typo-laden and confusing, and it doesn't explicitly contrast with sibling enrichment tools like people_enrich.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance or mention of alternatives. The only directive is 'Use vendor to pin a provider,' which is about parameter choice, not about when to choose this tool over companies_search or people_enrich. An agent is left to infer appropriate usage from the tool name and 'enrich' wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

endpointA

Inspect an endpoint's arguments, provider documentation and availability before calling it.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpoint_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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 conveys a read-only inspection behavior and lists the information returned, but it does not mention permissions, side effects, or explicitly state that the endpoint is not executed.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the action, and contains no filler. Every word contributes to explaining the tool's purpose.

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

Completeness3/5

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

The tool is simple with one parameter and an output schema, so the description covers the overall purpose and return categories. However, the endpoint_id parameter is undocumented in both the schema and the description, and there are no annotations, leaving the definition not fully self-sufficient.

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

Parameters2/5

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

Schema description coverage is 0%, and the description never mentions endpoint_id, its format, or how to obtain it. Since endpoint_id is required to invoke the tool, this is a significant gap that the description does not compensate for.

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

Purpose5/5

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

The description states a specific verb, 'inspect', and a clear resource: an endpoint's arguments, provider documentation, and availability. The phrase 'before calling it' also distinguishes it from the sibling call_tool, so an agent can tell when this tool is relevant.

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

Usage Guidelines4/5

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

The description gives clear usage context by framing this as a pre-call inspection step. It does not explicitly name alternatives or exclusions, but the 'before calling it' instruction is enough to guide an agent toward using this before call_tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_toolA

Find provider endpoints when unified capabilities cannot meet the need. Searches API metadata, not people.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry behavioral context. It only states that it searches API metadata, but it does not disclose what a successful result looks like, whether it performs any side effects, or any limitations beyond the schema constraints.

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

Conciseness5/5

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

The description is extremely concise: two sentences with no fluff. It front-loads the core purpose and immediately clarifies scope with the 'not people' note.

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

Completeness3/5

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

Given its simplicity (2 params, no nested objects) and the output schema existence, the description is minimally adequate. However, it does not explain what the output looks like or provide usage examples, leaving some ambiguity about query formulation.

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

Parameters2/5

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

Schema coverage is 0%, and the description does not explain the meaning of 'query' or 'limit' beyond their basic types. The query parameter's purpose is implied but not elaborated, and limit is left entirely to the schema defaults.

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

Purpose5/5

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

The description clearly states the tool's purpose: to find provider endpoints when unified capabilities are insufficient. It explicitly distinguishes itself from people-related tools with 'Searches API metadata, not people.'

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

Usage Guidelines4/5

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

It provides clear context: use when unified capabilities cannot meet the need. It does not name specific alternatives, but the sibling list and the clarification about not searching people imply 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.

people_contact_findA

How to reach one person: their work email, their phone when you ask for it, and whether an address you already hold is real. Use vendor to pin a provider. Returns outcome, normalized output, raw provider data and _meta.tried. Provider API charges are billed directly to your provider account.

ParametersJSON Schema
NameRequiredDescriptionDefault
wantNoemail | phone | verify | both. A phone costs several times an email, so it is only looked for when asked for. Passing an email you already hold and want='verify' checks it rather than finding one. (default email)
emailNoA work email address
domainNoThe employer's domain, no www and no @
vendorNoPin one vendor or endpoint id instead of routing
companyNoThe employer's name
full_nameNoThe person's full name
last_nameNoFamily name; pair it with first_name
waterfallNoFalse stops at the first vendor instead of trying the next
first_nameNoGiven name; pair it with last_name
linkedin_urlNohttps://www.linkedin.com/in/<slug>
company_websiteNoThe employer's website, when you have a URL rather than a bare domain
linkedin_handleNoThe <slug> from a LinkedIn URL, without the /in/

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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 the return shape (outcome, normalized output, raw provider data, _meta.tried), the fact that provider charges are billed directly, and the conditional behavior around phone lookups. It could mention failure handling or required identifiers, but for a read-style contact lookup this is solid transparency.

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

Conciseness5/5

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

The description is four tight sentences with no filler. It front-loads the core purpose, then covers provider selection, return data, and billing. Every sentence adds useful information.

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

Completeness3/5

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

The description covers purpose, output, and billing, and an output schema exists, so return values are documented elsewhere. However, with 12 optional parameters and no annotations, it does not state what minimum identifiers are needed or how to choose among full_name, domain, email, etc. That leaves some invocation ambiguity for the agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all 12 parameters in detail. The description reinforces vendor, phone, and verify semantics, but it adds little beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with 'How to reach one person', which states the tool's specific job: finding contact details for a single individual. It further specifies email, phone, and verification of an existing address, and the phrase 'one person' distinguishes it from sibling tools like people_search or people_enrich.

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

Usage Guidelines4/5

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

It gives clear context: this is for reaching one person, and it notes that phone is only fetched when requested. It also advises using vendor to pin a provider. However, it does not explicitly name alternative tools or state when not to use this tool, though the 'one person' framing implies the distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

people_enrichB

Everything known about one person: title, employer, location, profile links. Use vendor to pin a provider. Returns outcome, normalized output, raw provider data and _meta.tried. Provider API charges are billed directly to your provider account.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoA work email address
domainNoThe employer's domain, no www and no @
vendorNoPin one vendor or endpoint id instead of routing
companyNoThe employer's name
x_handleNo@handle, or https://x.com/<handle>
full_nameNoThe person's full name
last_nameNoFamily name; pair it with first_name
waterfallNoFalse stops at the first vendor instead of trying the next
first_nameNoGiven name; pair it with last_name
github_urlNohttps://github.com/<login>
scholar_urlNohttps://scholar.google.com/citations?user=<id>
linkedin_urlNohttps://www.linkedin.com/in/<slug>
linkedin_handleNoThe <slug> from a LinkedIn URL, without the /in/

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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 adds useful context by stating that the tool returns 'outcome, normalized output, raw provider data and _meta.tried' and that 'Provider API charges are billed directly to your provider account,' revealing that it invokes paid external providers. It does not, however, state whether the operation is read-only or what failure modes look like, and it omits any mention of the routing/waterfall behavior that the schema describes.

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

Conciseness4/5

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

The description is four short sentences, front-loaded with the core purpose and followed by a parameter hint, return shape, and a critical billing caveat. It is tight and free of fluff, though it covers slightly more ground than the two-sentence ideal seen in top-tier tools.

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

Completeness3/5

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

Given the tool's complexity—13 optional parameters, vendor routing, and no annotations—the description gives a reasonable overview but leaves gaps. It introduces the vendor pinning concept and billing, and the output schema covers return values, but it does not explain prerequisites (e.g., whether at least one identifier must be supplied), the default routing/waterfall behavior, or how this tool differs from its many people-related siblings, so an agent may not fully know how to formulate a call.

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

Parameters3/5

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

Since schema description coverage is 100%, the parameters are already well documented and the baseline is 3. The description adds little beyond the schema: 'Use vendor to pin a provider' loosely restates the schema's description of the vendor parameter ('Pin one vendor or endpoint id instead of routing') without adding new semantic detail, so the value added over the schema is marginal.

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

Purpose4/5

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

The description opens with 'Everything known about one person: title, employer, location, profile links,' which clearly communicates that this tool retrieves a comprehensive profile for an individual. However, it does not explicitly name or contrast sibling tools like people_search or people_identity_resolve, so an agent must infer the distinction from the phrase 'everything known' rather than being told when this tool is the right choice.

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

Usage Guidelines3/5

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

The description offers no explicit guidance on when to use people_enrich versus alternatives such as people_search or people_contact_find. It implies its place through 'Everything known about one person,' but does not state exclusions or scenarios, such as 'use people_search to find people, use people_enrich once you have an identifier.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

people_from_imageB

Where a photo appears on the web, and who it is: pages carrying the exact image, and the social profiles among them. Use vendor to pin a provider. Returns outcome, normalized output, raw provider data and _meta.tried. Provider API charges are billed directly to your provider account.

ParametersJSON Schema
NameRequiredDescriptionDefault
vendorNoPin one vendor or endpoint id instead of routing
image_urlNo
waterfallNoFalse stops at the first vendor instead of trying the next

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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 does useful work by disclosing the output contract ('outcome, normalized output, raw provider data and _meta.tried') and the cost model ('Provider API charges are billed directly to your provider account'). It does not mention auth, rate limits, or failure behavior, but for a search-style tool the disclosed billing and raw-data behavior are meaningful.

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

Conciseness4/5

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

The description is concise and front-loaded with the tool's purpose. It delivers the key output and billing facts in four short sentences with no filler. Slight jargon like '_meta.tried' and 'normalized output' is acceptable because it matches the output schema.

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

Completeness3/5

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

The description covers purpose, output shape, vendor pinning, and billing, and an output schema exists to document return values. However, it omits usage routing versus siblings and leaves the primary image_url parameter under-explained. For a tool with no annotations and a meaningful sibling set, this is adequate but not complete.

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

Parameters3/5

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

Schema coverage is 67%: vendor and waterfall are documented, while image_url has an empty schema description. The description reinforces vendor selection but does not clarify the core image_url input or its expected format. The parameter name and the phrase 'Where a photo appears' make the intent inferable, so this is a moderate gap rather than a severe one.

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

Purpose4/5

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

The description clearly identifies the tool as a reverse-image lookup: it finds web pages carrying an exact image and the social profiles among them. It uses descriptive phrasing rather than a verb like 'find', but the resource and outcome are unmistakable. It does not explicitly differentiate itself from the sibling social_profile tool, but its image-based input and page-plus-profile output distinguish it in practice.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose this tool over siblings such as people_search, social_profile, or people_identity_resolve. The only directive, 'Use vendor to pin a provider', is operational parameter guidance rather than use-case guidance. There is no mention of when this tool is appropriate or when an alternative should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

people_identity_resolveA

Identity resolution: one person's profiles across platforms, resolved into a single set. Give any one of them — LinkedIn, GitHub, X, Hugging Face, Scholar, an email — and get the rest. Use vendor to pin a provider. Returns outcome, normalized output, raw provider data and _meta.tried. Provider API charges are billed directly to your provider account.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoA work email address
domainNoThe employer's domain, no www and no @
vendorNoPin one vendor or endpoint id instead of routing
companyNoThe employer's name
x_handleNo@handle, or https://x.com/<handle>
full_nameNoThe person's full name
last_nameNoFamily name; pair it with first_name
waterfallNoFalse stops at the first vendor instead of trying the next
first_nameNoGiven name; pair it with last_name
github_urlNohttps://github.com/<login>
scholar_urlNohttps://scholar.google.com/citations?user=<id>
linkedin_urlNohttps://www.linkedin.com/in/<slug>
huggingface_urlNohttps://huggingface.co/<login>
linkedin_handleNoThe <slug> from a LinkedIn URL, without the /in/

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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 discloses the return shape ('outcome, normalized output, raw provider data and _meta.tried') and a significant behavioral trait: 'Provider API charges are billed directly to your provider account.' This goes beyond a basic one-liner, though it doesn't cover every operational behavior such as rate limits or failure semantics.

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

Conciseness5/5

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

The description is three tightly packed sentences with no filler. It front-loads the core concept, then gives input requirements, references the vendor option, and lists output components and billing context. Every sentence earns its place.

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

Completeness4/5

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

Given a 14-parameter tool with full schema coverage and an output schema present, the description covers the essential usage narrative: what the tool does, what it returns, how to constrain provider selection, and a billing caveat. It is slightly incomplete in not differentiating from nearby sibling tools, but overall it is sufficient 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.

Parameters3/5

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

Schema description coverage is 100%, so each of the 14 parameters is already documented in the input schema. The description adds the high-level insight that providing any one identifier is sufficient to resolve the rest, but it does not add per-parameter meaning beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb phrase ('Identity resolution') and states the exact resource: one person's profiles across platforms resolved into a single set. It clearly defines the input/output contract ('Give any one of them... and get the rest') and distinguishes itself from sibling tools like people_search or social_profile by focusing on cross-platform merging rather than search or enrichment.

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

Usage Guidelines4/5

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

The description gives clear context: use this tool when you have any one profile identifier (LinkedIn, GitHub, X, etc.) and need the full consolidated set. It also notes the optional 'vendor' parameter to pin a provider. It does not explicitly list when-not-to-use or name alternatives like people_search/people_enrich, so it misses an explicit exclusion clause.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

social_profileA

One person's public profile on whatever platform a handle belongs to: LinkedIn, X, Instagram, TikTok, YouTube, GitHub and the rest. Give a profile URL, or a platform and a handle. Use vendor to pin a provider. Returns outcome, normalized output, raw provider data and _meta.tried. Provider API charges are billed directly to your provider account.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleNoThe account name on that platform, without the @
vendorNoPin one vendor or endpoint id instead of routing
platformNolinkedin | x | instagram | tiktok | youtube | github | threads | facebook | reddit | bluesky | weibo | douyin | xiaohongshu | bilibili | kuaishou
waterfallNoFalse stops at the first vendor instead of trying the next
profile_urlNoA profile page on any platform: linkedin.com, x.com, instagram.com, tiktok.com, github.com …

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does it well: it states the return payload includes outcome, normalized output, raw provider data, and _meta.tried, and it warns that provider API charges are billed to the user's provider account. This is meaningful behavior beyond what the schema alone reveals. It could go further on auth or fallback behavior, but the default waterfall is at least hinted at by the vendor-pinning instruction.

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

Conciseness4/5

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

The description is compact and efficiently front-loaded: the purpose comes first, followed by input modes, provider control, and return/billing notes. Every sentence earns its place, though the first sentence is slightly long and could be tightened.

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

Completeness4/5

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

For a tool with no required parameters and a rich output schema, the description covers the key operational facts: what it returns, how to identify a target, how to control the vendor, and cost implications. It does not mention precedence when both profile_url and platform+handle are supplied, but that is a minor gap given the schema and output schema context.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds value by explaining the relationship between parameters: profile_url OR platform+handle are alternative ways to identify the target, and vendor pins the provider. This usage-level guidance goes beyond the individual property descriptions.

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

Purpose4/5

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

The description clearly identifies what the tool does: it returns one person's public profile across many specified platforms, and explains the two input modes. It is specific enough to separate it from broader people_search or people_enrich tools, though it does not explicitly name a sibling to contrast with.

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

Usage Guidelines3/5

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

It gives practical invocation guidance: provide a profile URL, or a platform and handle, and optionally use vendor to pin a provider. However, it never says when to choose this tool over siblings like people_search or people_identity_resolve, so the usage context is more implied than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedcall_tool
    • First observedcapabilities
    • First observedcompanies_enrich
    • First observedcompanies_search
    • First observedendpoint
    • First observedfind_tool
    • First observedpeople_contact_find
    • First observedpeople_enrich
    • First observedpeople_from_image
    • First observedpeople_identity_resolve
    • First observedpeople_search
    • First observedsocial_profile

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

The people_* family is mostly distinct, but social_profile, people_enrich, and people_identity_resolve all accept a single person identifier and return profile-related data, so an agent needs to read descriptions carefully. The meta tools (find_tool, endpoint, call_tool) are clearly separated.

Naming Consistency4/5

Most domain tools follow a clear people_/companies_ prefixed snake_case pattern. Minor deviations include social_profile lacking the people_ prefix and meta tools mixing noun forms (capabilities, endpoint) with verb_noun forms (find_tool, call_tool).

Tool Count5/5

12 tools is well within the ideal range for a multi-provider data router: 8 domain operations plus 4 discovery/execution tools. Each tool has a clear role, and none feel redundant.

Completeness5/5

People workflows are comprehensively covered: search, social profile, enrich, identity resolution, contact finding, and image-based lookup. Companies have search and enrich, and the capabilities/find_tool/endpoint/call_tool layer prevents dead ends by allowing access to provider-specific endpoints.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Give your AI agent access to 60M+ companies and 300M+ verified contacts. Enrich leads, find work emails, discover tech stacks, and identify buying intent — directly from Claude, Cursor, Windsurf, or any MCP-compatible AI agent.
    11
    7 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables B2B research by finding verified work emails, extracting contacts, detecting tech stacks, and profiling DNS and SaaS, all through a suite of MCP tools.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a context graph for GTM teams, centralizing data from multiple tools into unified person and company records, and offers MCP tools to retrieve account context, full entity details, and filtered queries.
    14 npm
    10
    AGPL 3.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides MCP clients with 60+ APIs for B2B data enrichment, lead generation, email verification, company intelligence, and agentic GTM workflows.
    -