Skip to main content
Glama
luarss

alternativespe-mcp

by luarss

alternativespe-mcp

An MCP server for the Alternatives Partner API v3 (altdmp.io) — read-only programmatic access to private-market data across Southeast Asia (funded companies, investors, funds, people, service providers).

Features

  • Handles the API-key → bearer-token exchange automatically, with token caching/refresh.

  • Exposes each list endpoint with the full POST filter tree (all/any/not + operators), plus search, ordering, limit, offset.

  • Detail-by-UUID tools for every core entity.

Related MCP server: Asian Financial Filings MCP Server

Tools

Tool

Endpoint

Description

search_capital_receivers

POST /capital-receivers/

Funded companies / startups

get_capital_receiver

GET /capital-receivers/{uuid}/

Company detail: financials, cap table, investors, deals, news

search_capital_allocators

POST /capital-allocators/

Investors (VC/PE, corporates, family offices)

get_capital_allocator

GET /capital-allocators/{uuid}/

Investor detail: investments, AUM, commitments, funds, news

search_funds

POST /funds/

Funds (Atlas tier)

get_fund

GET /funds/{uuid}/

Fund detail: performance, AUM, commitments, investments

search_people

POST /people/

Founders, directors, executives

get_person

GET /people/{uuid}/

Person detail: roles, investments, news

search_service_providers

POST /service-providers/

Auditors, legal & professional services

search_investors

POST /investors/

Cross-entity investor discovery

get_reference_data

GET /reference-data/

Enums, countries, industries, themes

Setup

npm install
npm run build

Set your API key (obtain credentials from support@alternatives.pe):

export ALTDMP_API_KEY=your_api_key_here

Usage with Claude Desktop / Claude Code

Add to your MCP config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "alternativespe": {
      "command": "node",
      "args": ["/absolute/path/to/alternativespe-mcp/dist/index.js"],
      "env": {
        "ALTDMP_API_KEY": "your_api_key_here"
      }
    }
  }
}

Or, for local development without building:

{
  "mcpServers": {
    "alternativespe": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/to/alternativespe-mcp/src/index.ts"],
      "env": { "ALTDMP_API_KEY": "your_api_key_here" }
    }
  }
}

Filtering

filters is forwarded verbatim as the API's filters body. Combine logical groups with conditions:

{
  "filters": {
    "all": [
      { "op": "eq", "field": "domicile_country_iso_alpha3", "value": "SGP" },
      { "op": "gte", "field": "latest_valuation_usd", "value": 50000000 },
      { "any": [
        { "op": "eq", "field": "is_raising_now", "value": true },
        { "op": "in", "field": "themes_keys", "value": ["themes_payments"] }
      ]}
    ]
  },
  "limit": 50,
  "ordering": "-latest_valuation_usd"
}

Operators: eq, in (array), gt, gte, lt, lte, range (2-element array), contains, isnull. Logical groups: all (AND), any (OR), not (negate).

Use get_reference_data to discover valid field enum values.

Notes

  • Rate limit: 320 requests / rolling 60-second window (enforced by the API).

  • Subscription tiers: Atlas (all endpoints) and Allocate (excludes funds and allocator commitments).

  • Tokens are valid for 24 hours; this server refreshes them automatically.

Environment variables

Variable

Required

Default

Description

ALTDMP_API_KEY

yes

—

Your Alternatives Partner API key

ALTDMP_BASE_URL

no

https://api.altdmp.io/v3

API base URL override

Publishing

Both npm and the MCP Registry publish via OIDC — no long-lived tokens are stored in this repo.

npm (Trusted Publishing / OIDC)

Automated publishing uses npm Trusted Publishing: GitHub Actions authenticates to npm over short-lived OIDC and provenance is generated automatically — no NPM_TOKEN.

One-time setup on npmjs.com (after the first version exists — see bootstrapping below): package Settings → Trusted Publisher → GitHub Actions, set:

Field

Value

Organization / user

luarss

Repository

alternativespe-mcp

Workflow filename

publish-mcp-registry.yml

Environment

release

Bootstrapping: a trusted publisher can only be configured once the package already exists, so the very first version must be published manually — npm publish --access public locally — then configure the trusted publisher for all subsequent releases.

MCP Registry

server.json is published to the official MCP Registry via the mcp-publisher CLI using GitHub OIDC (mcp-publisher login github-oidc) — also tokenless.

Automated release

Pushing a v* tag (e.g. git tag v0.1.0 && git push origin v0.1.0) triggers .github/workflows/publish-mcp-registry.yml. The job runs in the protected release GitHub environment (required reviewer + v*-tags-only), so a publish waits for manual approval, then publishes to npm (OIDC) and syncs server.json's version to the tag before publishing it to the registry (OIDC).

License

WTFPL

Available Tools

11 tools
get_capital_allocatorA

Get a capital allocator (investor) detail by UUID: investments, AUM, commitments, financials, cap table, funds and news.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesThe entity UUID (profile UUID from a list result).

TDQS

A3.8/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 burden. The verb 'Get' clearly signals a read-only operation, and the description enumerates the returned response sections, which provides meaningful behavioral context. It does not discuss auth, rate limits, or error behavior, but these are less critical for a simple retrieval tool.

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, front-loaded sentence that states the verb, resource, key, and response contents without wasted words. It is concise yet informative.

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?

Despite having no annotations or output schema, the description adequately conveys what the tool returns by listing the key data categories. It lacks explicit notes on formatting, pagination, or error scenarios, but for a simple get-by-UUID tool with one parameter, the available context is sufficient.

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 100% and the single required parameter 'uuid' is already well documented in the schema ('The entity UUID (profile UUID from a list result)'). The description adds no new meaning beyond restating the lookup key, so the baseline score of 3 is appropriate.

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 states the action ('Get') and resource ('capital allocator (investor) detail') plus the retrieval key (UUID). It lists the included content areas (investments, AUM, commitments, financials, cap table, funds, news), making it distinct from other entity getters like get_fund or get_person, though it does not explicitly name sibling alternatives.

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?

Usage is implied through 'by UUID': an agent should call this when it already has a UUID and wants a full detail view. There is no explicit guidance on when to use this instead of search_capital_allocators or get_capital_receiver, and no exclusion or alternative routing is mentioned.

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

get_capital_receiverB

Get a capital receiver (company) detail by UUID: financials, cap table, investors, deals and news.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesThe entity UUID (profile UUID from a list result).

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral transparency burden. 'Get' clearly implies a read-only lookup and the listed content categories are helpful, but the description does not disclose error behavior, authorization requirements, or whether the returned data is partial or complete. It is not misleading, but it is minimal.

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?

A single sentence that front-loads the action, resource, and lookup key, then lists the main content areas. There is no filler, repetition, or unnecessary elaboration.

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 one-parameter detail-fetch tool with no output schema, the description is reasonably complete: it names the lookup key and the data domains returned. It could be slightly richer around return shape or failure behavior, but the core calling context is covered.

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% and the input schema already explains that uuid is 'The entity UUID (profile UUID from a list result).' The description only repeats 'by UUID' and adds no additional parameter semantics beyond what the schema provides.

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 ('Get') and names the resource ('capital receiver (company) detail by UUID'), with an enumerated content list: financials, cap table, investors, deals and news. It is distinguishable from sibling getters like get_person and get_capital_allocator by the receiver/company framing, though it does not explicitly contrast 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?

The description provides no guidance on when to use this tool versus alternatives such as search_capital_receivers for finding UUIDs or get_capital_allocator for the opposite party. It only implies use when a UUID is already available, without saying so explicitly.

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

get_fundA

Get a fund detail by UUID: performance, AUM, commitments, investments and news.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesThe entity UUID (profile UUID from a list result).

TDQS

A3.7/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 full behavioral burden. It discloses the content of the returned data (performance, AUM, commitments, investments, news), which is helpful. However, it does not mention authentication requirements, error behavior, or explicitly state that the operation is read-only, though 'Get' implies it.

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?

One concise sentence with the action and resource front-loaded, followed by specific content types. No filler or redundant phrasing. It earns its place, though it could arguably be even more compact without the list.

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 single-parameter lookup tool with no output schema and no annotations, the description covers the core purpose and indicates the data to expect. It does not detail the response structure or error conditions, but the parameter is fully documented in the schema, and the tool's purpose is clear.

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% and the schema already provides a rich description for the uuid parameter ('The entity UUID (profile UUID from a list result)'). The description simply repeats 'by UUID', adding no new meaning beyond the schema, so the baseline of 3 applies.

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?

States a specific verb ('Get'), resource ('fund detail'), and key identifier ('by UUID'), and enumerates the data categories returned (performance, AUM, commitments, investments, news). This clearly distinguishes it from sibling tools like search_funds (search vs lookup) and get_person (fund vs person).

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?

No explicit guidance on when to use this tool versus alternatives. The phrase 'by UUID' implies it is for retrieving a known fund, and the schema's parameter description ('profile UUID from a list result') hints at a search-then-get workflow, but this is implied rather than stated in the tool description.

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

get_personA

Get a person detail by UUID: roles, investments and news.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesThe entity UUID (profile UUID from a list result).

TDQS

A4/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. It reveals the return contents (roles, investments, news) but does not explicitly state that this is a read-only lookup, mention permissions, or describe failure modes. Acceptable for a simple getter but lacks richness.

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?

A single, front-loaded sentence with no filler. The verb and resource are stated immediately, and the content list is compact yet informative.

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 single-parameter getter with no output schema, the description adequately covers the inputs (UUID) and the outputs (roles, investments, news). It could add an explicit pointer to search_people for finding UUIDs, but this is a minor gap.

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 fully documents the uuid parameter. The description's 'by UUID' adds no new meaning beyond the schema, and no additional format or source details are provided. Baseline 3 applies.

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?

States a specific verb ('Get'), a target resource ('person detail'), the retrieval key ('by UUID'), and enumerates the returned sections ('roles, investments and news'). This clearly distinguishes it from sibling search tools like search_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?

The 'by UUID' qualifier and the parameter description ('profile UUID from a list result') make it evident that this tool is used when a UUID is already known, typically after a list/search result. It does not explicitly name alternatives, but the intended usage context is clear.

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

get_reference_dataA

Get reference data: enums, countries, industries, themes and other controlled vocabularies used by filter fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden of behavioral disclosure. 'Get' and 'reference data' imply a non-mutating lookup, and this is simple zero-argument tool. However, the description does not explicitly state that it is read-only or describe the response structure, which leaves minor ambiguity.

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, well-structured sentence that front-loads the action and resource, then uses a colon to enumerate contents efficiently. There is no filler or redundant wording.

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 zero-parameter reference lookup, the description provides enough to call the tool with confidence: it identifies the purpose and data categories. Since no output schema exists, the description does not fully clarify the exact response format, but this is a minor gap given the simplicity of the tool.

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 long-and the input schema already documents this with 100% coveragearenas. The baseline for zero-parameter tools is 4; the description adds value by explaining what data is returned, even though there are no parameter semantics to clarify beyond the schema.

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 ('Get') and resource ('reference data'), then enumerates what that includes: enums, countries, industries, themes, and other controlled vocabularies. This clearly distinguishes it from sibling entity-focused tools like get_person or search_funds, which retrieve data records rather than vocabulary.

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 phrase 'used by filter fields' implies when the tool should be used: when an agent needs valid values for filters or controlled vocabulary fields. It does not explicitly name alternatives or exclusion criteria, but the reference-data scope makes the intended context clear.

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

search_capital_allocatorsB

List/filter capital allocators (investors: VC/PE firms, corporates, family offices).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default API value).
offsetNoPagination offset.
searchNoFull-text search term (query string).
filtersNoFilter tree forwarded to the API "filters" body. Use logical groups ("all" = AND, "any" = OR, "not" = negate) containing conditions of the form {"op": <operator>, "field": <field>, "value": <value>}. Operators: eq, in, gt, gte, lt, lte, range (2-element array), contains, isnull. Example: {"all": [{"op": "eq", "field": "trading_status_key", "value": "operating"}, {"op": "gte", "field": "total_funding_usd", "value": 1e8}]}
orderingNoField to order by; prefix with "-" for descending.

TDQS

B3.1/5.0
Behavior2/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 only states 'List/filter' and does not explicitly mention that the operation is read-only, describe pagination or default limits, or note how filters are forwarded to the API. 'List/filter' implies a read operation, but the description adds little beyond the schema.

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, front-loaded sentence with no filler. The parenthetical definition of capital allocators is useful and every phrase earns its place.

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 schema thoroughly documents all five parameters, including the nested filter tree, which covers most invocation needs. However, with no output schema and no annotations, the description omits behavioral context, output-shape expectations, and sibling-tool differentiation, making it minimally viable but incomplete.

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?

The input schema has 100% parameter coverage, with meaningful descriptions for limit, offset, search, filters, and ordering, including operators and an example for the nested filters object. The description itself adds no parameter-level meaning, so it earns the baseline score.

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-resource pair ('List/filter capital allocators') and clarifies the domain with a parenthetical defining the resource as investors (VC/PE firms, corporates, family offices). It is clear, but it does not distinguish this tool from the closely named sibling 'search_investors', so it misses the top score.

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?

No guidance is given about when to use this tool versus alternatives such as search_investors, search_capital_receivers, or get_capital_allocator. The only usage signal is implied by the verb 'List/filter'; there are no exclusions, prerequisites, or routing hints.

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

search_capital_receiversA

List/filter capital receivers (funded companies / startups) in Southeast Asia. Supports filters, search, ordering and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default API value).
offsetNoPagination offset.
searchNoFull-text search term (query string).
filtersNoFilter tree forwarded to the API "filters" body. Use logical groups ("all" = AND, "any" = OR, "not" = negate) containing conditions of the form {"op": <operator>, "field": <field>, "value": <value>}. Operators: eq, in, gt, gte, lt, lte, range (2-element array), contains, isnull. Example: {"all": [{"op": "eq", "field": "trading_status_key", "value": "operating"}, {"op": "gte", "field": "total_funding_usd", "value": 1e8}]}
orderingNoField to order by; prefix with "-" for descending.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the read-only nature via 'List/filter' and adds the geographic scope, but it omits behavioral traits such as default ordering, maximum page size, and response shape. These are meaningful gaps for a tool that lists data, though the described capabilities match expectations for a search endpoint.

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?

Two sentences with zero filler. The first sentence front-loads the verb, resource, and scope; the second succinctly enumerates capabilities. Every word earns its place.

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 five parameters, a nested filter object, and no output schema, the description adequately summarizes capability but leaves gaps: it does not mention default ordering or limits, whether the Southeast Asia constraint is a fixed filter, or what the response shape looks like. The schema covers filter syntax, so this is adequate but not comprehensive.

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 fully documents all five parameters, including a detailed example for the nested filters object. The description only generically references 'filters, search, ordering and pagination', adding no syntax or constraint details beyond what the schema already provides. Baseline 3 applies.

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 a specific verb and resource: 'List/filter capital receivers', and disambiguates the resource with '(funded companies / startups)'. The regional scope 'in Southeast Asia' adds further specificity, and the resource itself clearly differentiates it from siblings like get_capital_receiver (singular fetch) and search_capital_allocators (different entity type).

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 this is a query/search tool by listing 'filters, search, ordering and pagination', but it never explicitly states when to choose this over alternatives. No mention of 'use get_capital_receiver for a single entity' or exclusion conditions exists, leaving the agent to infer usage from the resource name and siblings.

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

search_fundsB

List/filter funds. (Atlas subscription tier only.)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default API value).
offsetNoPagination offset.
searchNoFull-text search term (query string).
filtersNoFilter tree forwarded to the API "filters" body. Use logical groups ("all" = AND, "any" = OR, "not" = negate) containing conditions of the form {"op": <operator>, "field": <field>, "value": <value>}. Operators: eq, in, gt, gte, lt, lte, range (2-element array), contains, isnull. Example: {"all": [{"op": "eq", "field": "trading_status_key", "value": "operating"}, {"op": "gte", "field": "total_funding_usd", "value": 1e8}]}
orderingNoField to order by; prefix with "-" for descending.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral burden. It does disclose the operation is list/filter (non-mutating) and that Atlas subscription is required. It does not describe the return shape or default scope, which limits 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?

Two short sentences with no filler; the purpose is front-loaded and the Atlas restriction earns its place. It is compact without forcing the agent to parse unnecessary prose.

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?

There is no output schema and no annotation context, so the description should cover the return value and selection guidance. It only says 'List/filter funds' and the tier restriction, leaving agents unaware of whether it returns fund objects, IDs, or counts, and how it relates to get_fund.

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%, and the description itself adds no parameter-level meaning. The baseline of 3 applies because the schema already documents all five parameters, including the filter-tree structure and operators.

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?

"List/filter funds" is a clear verb-plus-resource statement; the resource "funds" differentiates it from siblings like search_investors or get_person. However, it does not explicitly contrast with get_fund, so it stops short of full sibling differentiation.

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 action itself implies when to use it (when you need to list or filter funds), and the Atlas-tier note is an access restriction. It does not name alternatives such as get_fund for single-record retrieval, so usage guidance is mostly implicit rather than explicit.

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

search_investorsB

Cross-entity investor lookup / discovery across allocators, funds and people.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default API value).
offsetNoPagination offset.
searchNoFull-text search term (query string).
filtersNoFilter tree forwarded to the API "filters" body. Use logical groups ("all" = AND, "any" = OR, "not" = negate) containing conditions of the form {"op": <operator>, "field": <field>, "value": <value>}. Operators: eq, in, gt, gte, lt, lte, range (2-element array), contains, isnull. Example: {"all": [{"op": "eq", "field": "trading_status_key", "value": "operating"}, {"op": "gte", "field": "total_funding_usd", "value": 1e8}]}
orderingNoField to order by; prefix with "-" for descending.

TDQS

B3.1/5.0
Behavior2/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. 'Lookup / discovery' weakly signals a read-only search operation, but the description does not state whether results are aggregated across entities, whether there are auth or rate-limit concerns, or what the response shape is. This is too thin for an unannotated tool.

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 a single front-loaded sentence with no filler and no redundant restatement of the tool name. It is concise and scannable, though it sacrifices substantive guidance for brevity.

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?

With 5 optional parameters, a complex nested filter object, no output schema, and no annotations, a one-line scope statement is not enough. The description does not explain result composition, default behavior, or how this tool relates to the many sibling search tools, leaving an agent to infer too much.

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%, with limit, offset, search, filters, and ordering all documented inline. The tool description adds only entity-scope context and no parameter-level meaning, so the baseline of 3 applies.

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 clear verb-noun structure ('investor lookup / discovery') and names the specific entity scope: allocators, funds, and people. This differentiates it from the single-entity sibling tools like search_funds and search_people, though it does not explicitly name them.

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 phrase 'cross-entity' implies this tool should be used when searching across multiple investor-related entity types, which loosely separates it from single-entity siblings. However, it never explicitly states when to choose this tool over search_funds, search_people, or search_capital_allocators, nor does it give exclusions.

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

search_peopleC

List/filter people (founders, directors, key executives).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default API value).
offsetNoPagination offset.
searchNoFull-text search term (query string).
filtersNoFilter tree forwarded to the API "filters" body. Use logical groups ("all" = AND, "any" = OR, "not" = negate) containing conditions of the form {"op": <operator>, "field": <field>, "value": <value>}. Operators: eq, in, gt, gte, lt, lte, range (2-element array), contains, isnull. Example: {"all": [{"op": "eq", "field": "trading_status_key", "value": "operating"}, {"op": "gte", "field": "total_funding_usd", "value": 1e8}]}
orderingNoField to order by; prefix with "-" for descending.

TDQS

C2.9/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 the behavioral burden, but it only says 'list/filter.' It does not disclose pagination behavior, default limits, read-only nature, or what the response contains. The filter semantics are in the schema, but broader 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.

Conciseness4/5

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

The description is a single sentence with no fluff and is front-loaded with the core action. It is concise, though perhaps too terse to fully support a 5-parameter tool with no other context.

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 search tool with five parameters, nested filter objects, no output schema, and no annotations, the description is too thin. An agent lacks guidance on expected result shape, pagination defaults, or how this relates to sibling search tools.

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%, and the schema itself documents limit, offset, search, filters, and ordering with detailed examples. The description adds little beyond the schema, but because coverage is complete, a baseline of 3 is appropriate.

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 states the tool lists/filters people and identifies the relevant roles (founders, directors, key executives). It does not explicitly distinguish itself from siblings like search_investors or get_person, so it misses the top score for direct sibling differentiation.

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 use this tool instead of alternatives such as get_person, search_investors, or other search_* tools. There is no mention of exclusions, prerequisites, or trade-offs.

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

search_service_providersA

List/filter service providers (auditors, legal and professional services firms).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default API value).
offsetNoPagination offset.
searchNoFull-text search term (query string).
filtersNoFilter tree forwarded to the API "filters" body. Use logical groups ("all" = AND, "any" = OR, "not" = negate) containing conditions of the form {"op": <operator>, "field": <field>, "value": <value>}. Operators: eq, in, gt, gte, lt, lte, range (2-element array), contains, isnull. Example: {"all": [{"op": "eq", "field": "trading_status_key", "value": "operating"}, {"op": "gte", "field": "total_funding_usd", "value": 1e8}]}
orderingNoField to order by; prefix with "-" for descending.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral burden. 'List/filter' implies a read-only collection operation, which is useful, but the description does not disclose pagination behavior, result size limits, or any side effects. It is minimal but not misleading.

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?

A single sentence that is front-loaded with the action and resource, with no filler or redundant restatement of schema details. Every word earns its place.

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 schema covers the complex filters and pagination well, and the resource is clear. However, with no output schema and no annotations, the one-line description leaves return format and default pagination behavior implicit, making it 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 description coverage is 100%, with limit, offset, search, filters, and ordering all documented, including detailed filter tree syntax. The description adds no parameter-level meaning beyond identifying the resource, so the baseline score of 3 applies.

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 specific verbs 'List/filter' and names the exact resource 'service providers', with parenthetical examples (auditors, legal and professional services firms) that make the entity type unmistakable. This distinguishes it from sibling search_* tools by target entity, even without naming them.

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?

Usage context is implied by the resource type: an agent can infer this tool is for service providers rather than funds, investors, or people. However, there is no explicit when-to-use/when-not-to-use guidance and no mention of alternatives among the sibling search tools.

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. 11 tool updatesv0.1.0
    • First observedget_capital_allocator
    • First observedget_capital_receiver
    • First observedget_fund
    • First observedget_person
    • First observedget_reference_data
    • First observedsearch_capital_allocators
    • First observedsearch_capital_receivers
    • First observedsearch_funds
    • First observedsearch_investors
    • First observedsearch_people
    • First observedsearch_service_providers

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation4/5

Most tools are clearly separated by entity type (capital_receivers, capital_allocators, funds, people, service_providers) and action (search vs get). The only potential confusion is between search_capital_allocators and search_investors, since both relate to investors, but search_investors is explicitly cross-entity, which helps.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: get_<entity> for detail retrieval and search_<entity> for list/filter operations. The naming is predictable and uniform across the entire set.

Tool Count4/5

11 tools is within the well-scoped range. The count is reasonable for a data-discovery API covering multiple entity types, though it could be slightly leaner if some search tools were consolidated.

Completeness4/5

The tool surface covers search and detail retrieval for the main entities (people, capital receivers, capital allocators, funds, service providers) plus reference data. Missing operations like creating or updating entities are not expected for a read-only data provider, so the coverage is appropriate. A minor gap is the lack of a dedicated get_service_provider detail tool, but search_service_providers may suffice.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Deliver real-time investment research with extensive private and public market data.
    3
    192 npm
    148
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive access to financial filings from 7,700+ Asian companies through Japan's EDINET and South Korea's DART systems, enabling search, retrieval, and analysis of financial statements, XBRL data, and dimensional breakdowns.
    1
    3
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides access to a comprehensive financial intelligence platform featuring real-time market data, quantitative models, and alternative data sources. It enables users to perform advanced financial analysis including options analytics, portfolio modeling, and SEC filing research.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables access to financial market data including EOD, intraday, fundamentals, news, and more via 75 read-only MCP tools.
    5
    MIT