Skip to main content
Glama
Quaestor-Technologies

Standard Metrics MCP Server

Standard Metrics MCP Server

WARNING

DEPRECATED: Our local MCP server is deprecated. Please use our new hosted MCP setup instead: MCP Setup Guide

A Model Context Protocol (MCP) server that connects Claude Desktop and other MCP-compatible clients to the Standard Metrics API, enabling AI-powered analysis of your venture capital portfolio data.

What This Does

This MCP server allows Claude to directly access your Standard Metrics data to:

  • Analyze Portfolio Performance: Get comprehensive overviews of all your portfolio companies

  • Query Financial Metrics: Access revenue, growth, burn rate, and other key metrics

  • Search and Filter: Find companies by sector, performance, or custom criteria

  • Generate Reports: Create detailed financial summaries and performance analyses

  • Track Trends: Monitor metrics over time with historical data analysis

Related MCP server: App Store Connect MCP Server

Installation

1. Get Your Standard Metrics OAuth2 Credentials

  1. Log into your Standard Metrics account

  2. On the left hand menu, click on Settings

  3. Click on Developer Settings

  4. Click "Add Application" in the top right

  5. Fill in the application name and description

  6. Click "Create Application"

  7. Copy your Client ID and Client Secret and store them securely (you won't be able to see the secret again!)

2. Install via Claude Desktop

Add the following to your Claude Desktop MCP configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json

First, find your uvx path by running which uvx in your terminal, then use that path in the config:

{
  "mcpServers": {
    "standard-metrics": {
      "command": "/path/to/uvx",
      "args": ["smx-mcp"],
      "env": {
        "SMX_CLIENT_ID": "your_client_id_here",
        "SMX_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

Replace /path/to/uvx with the result from which uvx and replace your_client_id_here and your_client_secret_here with your actual OAuth2 credentials.

Prerequisites

If you don't have it installed already, you'll need to install the uv Python package manager first:

macOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

3. Restart Claude Desktop

Close and reopen Claude Desktop. You should see "Standard Metrics" appear in your MCP connections.

Usage Examples

Once installed, you can ask Claude to analyze your portfolio data:

Portfolio Overview

Show me a summary of my entire portfolio performance

Company Analysis

What are the key metrics for Acme Corp over the last 12 months?

Sector Comparison

Compare the revenue growth of all my SaaS companies

Financial Deep Dive

Create a financial summary for company ID abc123 including burn rate and runway

Custom Queries

Find all companies with revenue growth above 50% and show their latest metrics

Available Data

The MCP server provides access to:

Data Type

Description

Companies

Portfolio company information and details

Financial Metrics

Revenue, expenses, growth rates, burn rate

Budgets & Forecasts

Budget data and financial projections

Custom Columns

Your firm's custom data columns

Documents

Uploaded reports and financial documents

Notes

Internal notes and commentary

Fund Data

Fund-level information

Information Requests

Data collection requests sent to companies

Information Reports

Responses to information requests

Users

Team members in your firm

Alternative Installation Methods

Using Docker

{
  "mcpServers": {
    "standard-metrics": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "SMX_CLIENT_ID=your_client_id_here",
        "-e", "SMX_CLIENT_SECRET=your_client_secret_here",
        "-p", "8000:8000",
        "quaestorapp/smx-mcp:latest"
      ]
    }
  }
}

Local Development

git clone https://github.com/Quaestor-Technologies/smx-mcp
cd smx-mcp
uv sync

Then use the local path in your Claude Desktop config:

{
  "mcpServers": {
    "standard-metrics": {
      "command": "uv",
      "args": ["run", "python", "-m", "src.server"],
      "env": {
        "SMX_CLIENT_ID": "your_client_id_here",
        "SMX_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

Running with Docker

You can use the prebuilt image from Docker Hub for the fastest setup:

docker run --rm -it \
  -e SMX_CLIENT_ID=your_client_id_here \
  -e SMX_CLIENT_SECRET=your_client_secret_here \
  -p 8000:8000 \
  quaestorapp/smx-mcp:latest
  • Replace your_client_id_here and your_client_secret_here with your actual Standard Metrics OAuth2 credentials.

  • The server will be available at http://localhost:8000.

2. Build and Run Locally

If you want to build the image yourself (for development or customization):

# Build the Docker image
docker build -t smx-mcp .

# Run the container
docker run --rm -it \
  -e SMX_CLIENT_ID=your_client_id_here \
  -e SMX_CLIENT_SECRET=your_client_secret_here \
  -p 8000:8000 \
  smx-mcp
  • Again, replace the environment variables with your credentials.

3. Using Docker in Claude Desktop

Add this to your Claude Desktop MCP config to use the Docker image:

{
  "mcpServers": {
    "standard-metrics": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "SMX_CLIENT_ID=your_client_id_here",
        "-e", "SMX_CLIENT_SECRET=your_client_secret_here",
        "-p", "8000:8000",
        "quaestorapp/smx-mcp:latest"
      ]
    }
  }
}

Tip:

  • The hosted image is updated automatically with every release.

  • For local development, you can mount your code into the container with -v $(pwd)/src:/app/src if you want live code reloads.

Troubleshooting

"Connection Failed" Error

  • Verify your Client ID and Client Secret are correct

  • Ensure your OAuth2 application is active in Standard Metrics

  • Check that Claude Desktop has been restarted after configuration

"No Data Found" Error

  • Confirm your Standard Metrics account has portfolio data

  • Verify your OAuth2 application has the necessary permissions

  • Try a simpler query first: "List my companies"

Authentication Issues

  • Double-check your credentials haven't expired

  • Ensure there are no extra spaces in your configuration

  • Try regenerating your OAuth2 credentials if needed

Available Tools

Companies

list_companies - List all companies associated with your firm

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

get_company - Get a specific company by ID

  • company_id: The unique identifier for the company (string, required)

search_companies - Search companies by various criteria

  • name_contains: Filter companies containing this text in their name (string, optional)

  • sector: Filter companies by sector (string, optional)

  • city: Filter companies by city (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

Financial Metrics

get_company_metrics - Get metrics for a specific company

  • company_id: The unique identifier for the company (string, required)

  • from_date: Start date for metrics (YYYY-MM-DD format) (date, optional)

  • to_date: End date for metrics (YYYY-MM-DD format) (date, optional)

  • category: Filter by metric category (string, optional)

  • cadence: Filter by metric cadence (daily, monthly, etc.) (string, optional)

  • include_budgets: Include budget metrics in results (boolean, optional, default: false)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

get_metrics_options - Get available metric categories and options

  • category_name: Filter by specific category name (string, optional)

  • is_standard: Filter by standard vs custom metrics (boolean, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

get_company_recent_metrics - Get the most recent metrics for a company

  • company_id: The unique identifier for the company (string, required)

  • category: Filter by specific metric category (string, optional)

  • limit: Maximum number of recent metrics to return (number, optional, default: 10)

Portfolio Analysis

get_portfolio_summary - Get a comprehensive portfolio summary including companies, funds, and key metrics

  • company_ids: Specific company IDs to include (array of strings, optional, if None includes all companies)

  • max_companies: Maximum number of companies to include metrics for (number, optional, if None includes all)

  • include_metrics: Whether to fetch metrics for each company (boolean, optional, default: true)

  • metrics_per_company: Number of recent metrics to fetch per company (number, optional, default: 50)

get_company_performance - Get comprehensive performance data for a specific company

  • company_id: The unique identifier for the company (string, required)

  • months: Number of months of historical data to include (number, optional, default: 12)

get_company_financial_summary - Get a financial summary for a company including key metrics over time

  • company_id: The unique identifier for the company (string, required)

  • months: Number of months of historical data to include (number, optional, default: 12)

Budgets & Forecasts

list_budgets - List all budgets associated with your firm

  • company_slug: Filter by company slug (string, optional)

  • company_id: Filter by company ID (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

Custom Data

get_custom_columns - Get custom column data for companies

  • company_slug: Filter by company slug (string, optional)

  • company_id: Filter by company ID (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

get_custom_column_options - Get all custom columns and their available options

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

Documents

list_documents - List all documents associated with your firm

  • company_id: Filter by company ID (string, optional)

  • parse_state: Filter by document parse state (string, optional)

  • from_date: Filter documents from this date (YYYY-MM-DD format) (date, optional)

  • to_date: Filter documents to this date (YYYY-MM-DD format) (date, optional)

  • source: Filter by document source (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

Funds

list_funds - List all funds associated with the firm

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

Information Requests & Reports

list_information_requests - List all information requests associated with the firm

  • name: Filter by request name (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

list_information_reports - List all information reports associated with the firm

  • company_id: Filter by company ID (string, optional)

  • information_request_id: Filter by information request ID (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

Notes

list_notes - List all notes associated with a specific company

  • company_slug: Filter by company slug (string, optional)

  • company_id: Filter by company ID (string, optional)

  • sort_by: Sort notes by specific field (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

get_company_notes_summary - Get a summary of notes for a company

  • company_id: The unique identifier for the company (string, required)

  • recent_notes_limit: The number of recent notes to return (number, optional, default: 5, max: 100)

Users

list_users - List all users associated with your firm

  • email: Filter by user email (string, optional)

  • page: Page number for pagination (number, optional, default: 1)

  • per_page: Results per page (number, optional, default: 100, max: 100)

Support

Available Tools

19 tools
get_companyB

Get a specific company by ID.

Args: company_id: The unique identifier for the company

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. The description does not disclose error behavior (e.g., not found case), permissions, or rate limits. With zero annotation coverage, the description should compensate but does not.

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?

Extremely concise with two short sentences, no unnecessary words. The format is clear and front-loaded with the core action.

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?

The tool is simple, but given the lack of output schema and annotations, the description should at least hint at return format or error handling. It is insufficient for fully informing agent decision-making alongside the many sibling tools.

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%, but the description merely restates the parameter's meaning ('unique identifier for the company'), which is already implied by the parameter name and title. No additional value 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?

Clearly states 'Get a specific company by ID.' The verb 'Get' and resource 'company' are precise, and the tool is well-differentiated from siblings like 'list_companies' and other 'get_*' tools.

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 vs alternatives such as 'search_companies' or 'get_company_financial_summary'. The description is straightforward but lacks context for selection.

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

get_company_financial_summaryC

Get a financial summary for a company including key metrics over time.

Args: company_id: The unique identifier for the company months: Number of months of historical data to include

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYes
monthsNo

TDQS

C2.9/5.0
Behavior2/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 not disclose whether the operation is read-only, requires special permissions, or handles errors (e.g., invalid company_id). It only describes the return type in vague terms ('financial summary'), lacking detail on data stability or side effects.

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 with a clear one-line purpose followed by a documented args list. It avoids unnecessary text, though the formatting could be tighter (e.g., removing the Args block if redundant with schema). The front-loading effectively communicates the main action.

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?

Given the lack of output schema and 0% schema coverage, the description should provide more detail on the return format, key metrics included, or behavior with missing data. It does not help the agent understand what 'financial summary' entails, and sibling tools imply a need for differentiation that is missing.

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 0%, so the description must compensate. It explains 'company_id' as a unique identifier and 'months' as the number of historical months, adding meaning beyond the schema's titles and types. However, it lacks constraints (e.g., allowed range for months) or further context about what the parameters control, making it minimally adequate.

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 retrieves a financial summary for a company with key metrics over time. It specifies the resource (company) and the nature of the data (financial metrics over time), which differentiates it from sibling tools like 'get_company' (basic info) or 'get_company_metrics' (likely current metrics).

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 explicit guidance is provided on when to use this tool versus alternatives. It does not mention scenarios like pulling historical performance or comparing across periods, nor does it exclude other tools like 'get_company_performance'.

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

get_company_metricsB

Get metrics for a specific company.

Args: company_id: The unique identifier for the company from_date: Start date for metrics (inclusive) to_date: End date for metrics (inclusive) category: Filter by metric category cadence: Filter by metric cadence (daily, monthly, etc.) include_budgets: Include budget metrics in results page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYes
from_dateNo
to_dateNo
categoryNo
cadenceNo
include_budgetsNo
pageNo
per_pageNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only documents parameters. It does not disclose behaviors like pagination handling, rate limits, or what happens on invalid company IDs. The read-only nature is implied but not explicit.

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 front-loaded with the main purpose, followed by a well-structured list of parameters. It is concise without redundancy, though slightly lengthy due to parameter count.

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 8 parameters, no output schema, and no annotations, the description provides adequate parameter documentation but lacks context on return structure, error cases, or differentiation from sibling tools. Moderate coverage.

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 coverage is 0%, so the description adds significant value by explaining each parameter (e.g., 'inclusive' for dates, 'default: 1' for page). However, some descriptions like 'Filter by metric category' are vague and could be more detailed.

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 'Get metrics for a specific company', providing a specific verb and resource. It distinguishes from sibling 'get_company_recent_metrics' by implying historical range via date parameters.

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 explicit guidance on when to use this tool versus alternatives like 'get_company_recent_metrics' or other getters. The description only lists parameters without usage context.

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

get_company_notes_summaryC

Get a summary of notes for a company.

Args: company_id: The unique identifier for the company recent_notes_limit: The number of recent notes to return. Max 100.

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYes
recent_notes_limitNo

TDQS

C2.9/5.0
Behavior2/5

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

Minimal disclosure: mentions summary and recent_notes_limit with max 100, but no details on what the summary contains, read-only nature, or other behaviors. Annotations absent so burden on description.

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?

Short, no fluff, uses clear argument descriptions. Every sentence adds value.

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?

Lacks info on return format, error conditions, or other behavioral details. No output schema, yet description does not compensate. Incomplete for an agent to use effectively.

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?

Explanation for company_id and recent_notes_limit adds value beyond schema, but does not explain output semantics (what fields in summary). Schema coverage 0% so more 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?

Description clearly states 'Get a summary of notes for a company', distinguishing it from sibling list_notes likely returning individual notes.

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 on when to use this tool vs siblings like list_notes; lacks context for when summary is appropriate.

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

get_company_performanceC

Get comprehensive performance data for a specific company.

Args: company_id: The unique identifier for the company months: Number of months of historical data to include

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYes
monthsNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It discloses the tool returns performance data and accepts a historical period, but does not mention read-only nature, side effects, authentication, rate limits, or what 'comprehensive' entails. Lacks behavioral detail.

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?

Description is concise with two sentences and a structured Args block. No redundant wording. However, it could be slightly more efficient by integrating the Args into prose, but overall well-structured.

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 has only 2 parameters and no output schema, the description is adequate but not thorough. It explains parameters but does not describe return value format, pagination, or what 'comprehensive performance data' includes. More detail would improve completeness.

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?

Description adds meaning to both parameters: company_id is 'unique identifier' and months is 'number of months of historical data'. However, with 0% schema coverage, the description only provides basic clarification and does not offer examples, constraints, or format details.

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?

Description clearly states the tool retrieves comprehensive performance data for a specific company. It uses a specific verb ('Get') and resource ('performance data'), but does not explicitly differentiate from sibling tools like get_company_financial_summary or get_company_metrics.

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 on when to use this tool versus alternatives. No context on prerequisites, limitations, or when not to use it. The description merely states what it does without usage recommendations.

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

get_company_recent_metricsB

Get the most recent metrics for a company.

Args: company_id: The unique identifier for the company category: Filter by specific metric category limit: Maximum number of recent metrics to return

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idYes
categoryNo
limitNo

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It does not state that the operation is read-only, nor does it hint at any side effects, error conditions, or performance implications. The agent is left to infer safety and behavior.

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: a one-sentence summary followed by a parameter list. Each element serves a purpose with no redundant information. It is well-structured and front-loaded.

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?

For a simple retrieval tool with three parameters and no output schema, the description covers the basics. However, it omits details like default behavior when no metrics exist, the format of returned data, and any pagination or ordering. Given the tool's simplicity, this is minimally adequate.

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 0% description coverage, so the description must compensate. It adds brief semantics: 'unique identifier', 'Filter by specific metric category', 'Maximum number of recent metrics to return'. This is helpful but lacks examples or allowed values (e.g., possible categories).

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's purpose: 'Get the most recent metrics for a company.' It uses a specific verb and resource, and includes parameter details. However, it does not explicitly distinguish itself from the sibling tool 'get_company_metrics', which could be seen as similar but without the 'recent' qualifier.

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 like 'get_company_metrics' or 'get_company_financial_summary'. It does not mention prerequisite conditions or context for optimal use.

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

get_custom_column_optionsC

Get all custom columns and their available options.

Args: page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo

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 fully disclose behavior. It only mentions pagination parameters but fails to indicate the read-only nature, authentication needs, or any side effects. The description is insufficient 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 short and front-loaded with the main purpose. The Args section provides a clear parameter listing. However, the total description could be condensed further by integrating the parameters into a single sentence.

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?

Given the complexity (no output schema) and many sibling tools, the description is incomplete. It does not describe the return format, the structure of options, or any pagination behavior. It also lacks context on when to use this over other data retrieval tools.

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%, yet the description adds minimal value: it restates default values and adds a max limit for 'per_page' (100). However, it does not explain the meaning or typical use of 'page' or 'per_page' beyond what is in 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 clearly states 'Get all custom columns and their available options,' specifying the verb 'Get' and the resource 'custom columns and options.' This distinguishes it from sibling tools like 'get_custom_columns' which likely focuses only on column definitions.

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 provided on when to use this tool versus alternatives. It does not mention preferred scenarios, exclusions, or relate to any sibling tools like 'get_custom_columns'.

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

get_custom_columnsB

Get custom column data for companies.

Args: company_slug: Filter by company slug company_id: Filter by company ID page: Page number for pagination (default: 1) per_page: Results per page (default: 30, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
company_slugNo
company_idNo
pageNo
per_pageNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided; description does not disclose side effects, authentication needs, or return behavior beyond pagination. 'Get' implies read-only, but no explicit statement of safety or limitations.

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?

Single sentence plus Args list is concise and front-loaded. No redundant information, though the Args list partially repeats schema structure.

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 no output schema and no annotations, the description adequately explains parameters and purpose for a simple retrieval tool. Missing output format details, but acceptable for its complexity level.

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 0%, so description compensates with parameter explanations (company_slug filters by slug, page defaults to 1, etc.). However, it lacks details like behavior when both filters are used or relationships between parameters.

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 it retrieves custom column data for companies, using specific verb 'Get' and resource 'custom columns'. This distinguishes it from siblings like 'get_company' or 'get_custom_column_options'.

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 on when to use this tool versus alternatives, no prerequisites, and no conditions for using filter parameters. The description only specifies what it does, not context for selection.

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

get_metrics_optionsC

Get available metric categories and options.

Args: category_name: Filter by specific category name is_standard: Filter by standard vs custom metrics page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
category_nameNo
is_standardNo
pageNo
per_pageNo

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 carries the full burden of behavioral disclosure. It does not mention idempotency, rate limits, authentication, or any side effects. Basic read behavior is implied but not explicitly stated.

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 with a clear first line and a structured arg list. No extraneous sentences.

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 the tool's purpose and all parameters, but lacks details on output format, pagination behavior beyond defaults, and any prerequisites. For a simple list tool, it is adequate but not thorough.

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?

With 0% schema description coverage, the description compensates by explaining each parameter's purpose: filtering by category, standard/custom, pagination. However, the explanations are minimal and do not add depth beyond the parameter names.

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 'Get available metric categories and options', clearly indicating the verb and resource. It differentiates from sibling tools like get_company_metrics which retrieve actual metric values, though the title is missing.

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 on when to use this tool versus alternatives such as get_company_metrics or get_company_recent_metrics. The description only states what it does, not when it's appropriate.

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

get_portfolio_summaryA

Get a comprehensive portfolio summary including companies, funds, and key metrics.

Args: company_ids: Specific company IDs to include (if None, includes all companies) max_companies: Maximum number of companies to include metrics for (if None, includes all) include_metrics: Whether to fetch metrics for each company (default: True) metrics_per_company: Number of recent metrics to fetch per company (default: 50) (up to 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idsNo
max_companiesNo
include_metricsNo
metrics_per_companyNo

TDQS

A3.6/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 implies read-only behavior but does not disclose side effects, performance implications, or data freshness. The description mentions filtering options but lacks details on scope or limitations.

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 with a one-sentence summary followed by a structured Args list. No redundant information, and the format is easy to parse.

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 no output schema and no annotations, the description should elaborate on the return structure. It mentions 'comprehensive portfolio summary' but does not specify fields or data types. Missing details on constraints or potential large data handling.

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?

Although the schema lacks descriptions (0% coverage), the description's Args section explains each parameter meaning and defaults (e.g., company_ids, max_companies, include_metrics, metrics_per_company). This adds significant value beyond the raw 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 clearly states 'Get a comprehensive portfolio summary including companies, funds, and key metrics.' It uses a specific verb ('Get') and identifies the resource ('portfolio summary'), distinguishing it from sibling tools that focus on individual entities.

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 explicit guidance on when to use this tool versus alternatives like get_company or get_company_metrics. The description does not mention when this tool is preferred or provide exclusion scenarios.

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

list_budgetsB

List all budgets associated with your firm.

Args: company_slug: Filter by company slug company_id: Filter by company ID page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
company_slugNo
company_idNo
pageNo
per_pageNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits beyond 'list'. Missing details on read-only nature, performance, rate limits, or return structure. The description carries full burden but adds minimal behavioral context.

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?

Extremely concise: one sentence for purpose, then parameter documentation in a clear list. No wasted words, and the most important information is front-loaded.

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?

Adequate for a simple listing tool with 4 optional parameters. However, without an output schema, describing the return structure or pagination behavior would improve completeness. As is, it covers the basics.

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 0%, but the description adds meaning beyond schema by explaining each parameter's purpose (e.g., 'Filter by company slug'). This compensates for the lack of schema descriptions, though no syntax or constraints beyond defaults are given.

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 budgets for a firm. It uses a specific verb and resource, making the purpose evident. However, it does not differentiate from sibling list tools like list_companies, though the resource is distinct.

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 on when to use this tool versus alternatives. The description only lists parameters and does not mention context or exclusions, leaving the agent without decision support.

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

list_companiesB

List all companies associated with your firm.

Args: page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100) ids: Filter by specific company IDs

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo
idsNo

TDQS

B3.4/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 mentions pagination defaults and a max value for per_page, providing some behavioral insight. However, it does not disclose whether the operation is read-only, idempotent, or any other traits.

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 concise and well-structured: a leading purpose sentence followed by a bullet list of parameters with clear explanations. No redundant text.

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 adequately covers the parameters but lacks any mention of the output format or return structure. Given no output schema, this is a gap. Additionally, there is no information about authentication or rate limits, though these may be less critical for a list 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?

With 0% schema description coverage, the description compensates by explaining each parameter's purpose (e.g., 'Page number for pagination', 'Filter by specific company IDs') and constraints like max per_page. This adds meaning beyond the schema's type and default.

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 all companies associated with the firm, with a specific verb and resource. However, it does not explicitly distinguish this tool from siblings like search_companies, though the name and context imply a broad listing.

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 on when to use this tool versus alternatives such as search_companies or get_company. The description only explains parameters, lacking usage context or exclusions.

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

list_documentsB

List all documents associated with your firm.

Args: company_id: Filter by company ID parse_state: Filter by document parse state from_date: Start date filter (inclusive) to_date: End date filter (inclusive) source: Filter by document source page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNo
parse_stateNo
from_dateNo
to_dateNo
sourceNo
pageNo
per_pageNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are present. The description does not disclose behavioral traits such as pagination limits (though per_page max=100 is in schema), ordering, or whether the operation is read-only. The phrase 'List all documents' is misleading given pagination defaults.

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 with no extraneous information. It uses a clear 'Args' layout for parameters. However, it could be structured better by separating the main purpose from the argument list.

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?

The description lacks return value information, no output schema, and no behavioral details like default sorting or result structure. Given the number of parameters and absence of annotations, the description is incomplete for effective tool use.

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 schema has 0% description coverage for properties, but the description includes an 'Args' section that explains each of the 7 parameters, including their purpose and defaults (e.g., page default 1, per_page default 100). This adds significant meaning 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 states 'List all documents associated with your firm', which clearly identifies the resource (documents) and action (list). It distinguishes from sibling tools like list_information_reports by focusing on documents. However, it does not explicitly contrast with other list tools.

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 lists filter parameters but provides no guidance on when to use this tool versus other list tools (e.g., list_information_requests, list_notes). No when-to-use or when-not-to-use information is given.

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

list_fundsA

List all funds associated with the firm.

Args: page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose any behavioral traits such as rate limits, result size implications, or authentication needs beyond the read operation nature.

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?

Extremely concise: one-line purpose followed by parameter descriptions, with no redundant information.

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 simple list tool with two optional parameters and no output schema, the description covers the core functionality and parameter details, though it could mention response format or sorting.

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

Parameters5/5

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

The description adds meaningful context to the schema's bare parameters: 'page' for pagination, 'per_page' with default and max values, which the schema lacks.

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 it lists all funds associated with the firm, distinguishing it from siblings that list other entities like companies or budgets.

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 via parameter defaults but lacks explicit guidance on when to use this tool versus alternatives or any exclusions.

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

list_information_reportsA

List all information reports associated with the firm.

Args: company_id: Filter by company ID information_request_id: Filter by information request ID page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
company_idNo
information_request_idNo
pageNo
per_pageNo

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description should disclose traits like read-only nature, permissions, or data scope. It only describes parameters, missing behavioral context.

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 with a single sentence followed by a bullet-style list. Every sentence provides essential information, no fluff.

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?

For a simple list tool, the description covers the action and parameters but omits output structure (no output schema). Missing details like result format or ordering, which are useful for an agent.

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 input schema has 0% description coverage, so the description carries the burden. It provides brief but clear meanings for each parameter, including defaults and max for 'per_page', adding value 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 clearly states it lists all information reports for the firm, using a specific verb and resource. It distinguishes from siblings like list_documents or list_notes.

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 on when to use this tool versus alternatives or when the filters are appropriate. No mention of prerequisites or exclusions.

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

list_information_requestsB

List all information requests associated with the firm.

Args: name: Filter by request name page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNo
per_pageNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries the full burden. It mentions pagination and filtering but omits details like result ordering, default behavior when no filter is applied, or error conditions. For a read-only list tool, some 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 short and front-loaded with the core action. Parameter details are listed clearly. Unnecessary words are absent, though it could be slightly more structured (e.g., bullet points).

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 simple list operation and no output schema, the description is minimally sufficient. It covers parameters and scope, but lacks details on return structure, ordering, or potential errors, which would enhance completeness.

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 coverage is 0%, so descriptions add value: 'Filter by request name' clarifies the 'name' parameter, and 'page number' and 'results per page with defaults/max' explain pagination. This is sufficient for basic usage.

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 'List all information requests', identifying the verb and resource. It distinguishes from the sibling 'list_information_reports' by a different resource, but does not elaborate on scope or filtering beyond the firm context.

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 on when to use this tool versus alternatives (e.g., search or other list tools). No mention of prerequisites, limitations, or exclusions. The description assumes basic knowledge.

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

list_notesB

List all notes associated with a specific company.

Args: company_slug: Filter by company slug company_id: Filter by company ID sort_by: Sort notes by specific field page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
company_slugNo
company_idNo
sort_byNo
pageNo
per_pageNo

TDQS

B3.2/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 transparency. It does not disclose destructive or read-only nature, authentication needs, rate limits, or whether sorting fields are enumerated. The pagination details are minimal. Lacks key behavioral context.

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, with a clear purpose sentence followed by a structured Args list. Each sentence serves a purpose. However, the Args list is slightly repetitive; could be more streamlined. No unnecessary fluff.

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 has 5 parameters, no output schema, and no annotations, the description provides basic parameter details but lacks guidance on required filters, allowed sort fields, and return format. It covers the essentials for a simple list but feels incomplete for an agent to use confidently.

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 0%, but the description adds basic meaning for each parameter (e.g., 'Filter by company slug', 'Sort notes by specific field'). However, 'Sort By' does not specify allowed values, and 'company_slug' vs 'company_id' have no clarity on mutual exclusivity. Adds some value but incomplete.

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 'List all notes associated with a specific company', providing a specific verb and resource. It distinguishes from sibling tools like 'get_company_notes_summary' by indicating it returns a list, not a summary.

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 on when to use this tool versus alternatives (e.g., get_company_notes_summary). There is no mention of required context (e.g., company_slug or company_id must be provided) or exclusions. The description implies usage but lacks explicit direction.

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

list_usersA

List all users associated with your firm.

Args: email: Filter by user email page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
pageNo
per_pageNo

TDQS

A3.8/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 explains pagination parameters but does not explicitly state that the operation is read-only, nor does it mention rate limits or potential side effects. The behavior is fairly transparent for a simple list operation.

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 minimal and efficient: one sentence for purpose followed by a structured args list. Every sentence adds value with no redundancy.

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 no output schema and no annotations, the description covers input parameters well but omits details about return format, error handling, or sorting. For a list tool, this is a notable gap.

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

Parameters5/5

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

Schema description coverage is 0%, so the description adds significant meaning: 'email: Filter by user email', 'page: Page number for pagination (default: 1)', 'per_page: Results per page (default: 100, max: 100)'. This compensates fully for the lack of schema descriptions.

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 explicitly states 'List all users associated with your firm', providing a clear verb+resource combination. It distinguishes from sibling list tools (e.g., list_companies) by specifying 'users'.

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 on when to use this tool versus alternatives such as search_companies or other list tools. The description implies basic usage for listing users but lacks comparative context or exclusions.

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

search_companiesA

Search companies by various criteria.

Args: name_contains: Filter companies containing this text in their name sector: Filter companies by sector city: Filter companies by city page: Page number for pagination (default: 1) per_page: Results per page (default: 100, max: 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
name_containsNo
sectorNo
cityNo
pageNo
per_pageNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided. The description mentions pagination defaults and maximum per_page, which is helpful. It does not discuss side effects, but as a search tool, destructive actions are unlikely. Behavioral traits are adequately but minimally covered.

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 introductory sentence followed by a parameter list, making it front-loaded and easy to scan. It is not overly verbose, but the parameter list repeats names already in the schema, adding slight redundancy.

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?

With 5 parameters, no annotations, and no output schema, the description covers parameter usage and pagination but omits the return format or result structure. This is adequate but leaves some gaps for a new user.

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?

Despite 0% schema description coverage, the description adds meaningful context for each parameter, explaining filtering behavior and pagination defaults. This compensates for the lack of schema descriptions, though it could be more detailed (e.g., sector values).

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 it searches companies by various criteria, specifying verb and resource. However, it does not differentiate from the sibling 'list_companies', which might also return companies but likely without filters.

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 when filtering by criteria ('Search companies by various criteria') but offers no explicit guidance on when to use this tool versus alternatives like 'list_companies'.

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. 19 tool updates
    • First observedget_company
    • First observedget_company_financial_summary
    • First observedget_company_metrics
    • First observedget_company_notes_summary
    • First observedget_company_performance
    • First observedget_company_recent_metrics
    • First observedget_custom_column_options
    • First observedget_custom_columns
    • First observedget_metrics_options
    • First observedget_portfolio_summary
    • First observedlist_budgets
    • First observedlist_companies
    • First observedlist_documents
    • First observedlist_funds
    • First observedlist_information_reports
    • First observedlist_information_requests
    • First observedlist_notes
    • First observedlist_users
    • First observedsearch_companies

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have distinct purposes (e.g., get_company vs list_companies), but some overlap exists between get_company_financial_summary and get_company_performance, as both retrieve historical data; also get_company_metrics and get_company_recent_metrics differ mainly by recency vs. range, which could cause confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., get_company, list_companies, search_companies), with no mixing of styles or irregular naming, ensuring predictability.

Tool Count4/5

19 tools is slightly on the high side but remains reasonable for a portfolio management server covering companies, funds, budgets, documents, notes, and users. A few tools overlap in functionality (e.g., get_company_recent_metrics vs get_company_metrics), but overall each tool serves a clear purpose.

Completeness3/5

The tool set is predominantly read-only, with no create, update, or delete operations for any entity. While this may align with a reporting-focused server, agents will hit dead ends if they need to modify data. Missing operations like creating notes or updating companies are notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    Enables AI assistants to access and analyze financial data including stock information, company fundamentals, and market insights through the Financial Modeling Prep API.
    100
    417
    143
    TypeScript
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access App Store Connect data including financial metrics, subscription analytics, app performance data, and revenue insights. Provides real-time iOS app metrics through secure API integration with rate limiting and comprehensive reporting capabilities.
    17
    33
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Connects AI assistants to the Sharesight portfolio tracking platform via the v3 API for managing investment portfolios and holdings. It enables natural language queries for performance reporting, dividend tracking, and custom investment management.
    29
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides access to SEC EDGAR financial data, enabling AI agents to fetch company filings, financial metrics, and narrative sections. It supports natural-language metric searching and extracts structured data from 10-K, 10-Q, and 8-K reports.
    6
    MIT