Standard Metrics MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Standard Metrics MCP ServerSummarize the revenue and burn rate for all my SaaS companies"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Standard Metrics MCP Server
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
Log into your Standard Metrics account
On the left hand menu, click on Settings
Click on Developer Settings
Click "Add Application" in the top right
Fill in the application name and description
Click "Create Application"
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 | shWindows:
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 performanceCompany Analysis
What are the key metrics for Acme Corp over the last 12 months?Sector Comparison
Compare the revenue growth of all my SaaS companiesFinancial Deep Dive
Create a financial summary for company ID abc123 including burn rate and runwayCustom Queries
Find all companies with revenue growth above 50% and show their latest metricsAvailable 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 syncThen 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
1. Run with the Hosted Image (Recommended)
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:latestReplace
your_client_id_hereandyour_client_secret_herewith 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-mcpAgain, 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/srcif 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
Standard Metrics API Issues: Contact Standard Metrics support
MCP Server Issues: Open an issue on GitHub
Claude Desktop Issues: Check Claude Desktop documentation
Available Tools
19 toolsget_companyB
Get a specific company by ID.
Args: company_id: The unique identifier for the company
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | ||
| months | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | ||
| from_date | No | ||
| to_date | No | ||
| category | No | ||
| cadence | No | ||
| include_budgets | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | ||
| recent_notes_limit | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | ||
| months | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | Yes | ||
| category | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| company_slug | No | ||
| company_id | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| category_name | No | ||
| is_standard | No | ||
| page | No | ||
| per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| company_ids | No | ||
| max_companies | No | ||
| include_metrics | No | ||
| metrics_per_company | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| company_slug | No | ||
| company_id | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No | ||
| ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | No | ||
| parse_state | No | ||
| from_date | No | ||
| to_date | No | ||
| source | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| company_id | No | ||
| information_request_id | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| company_slug | No | ||
| company_id | No | ||
| sort_by | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| name_contains | No | ||
| sector | No | ||
| city | No | ||
| page | No | ||
| per_page | No |
TDQS
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.
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.
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.
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.
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.
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.
19 tool updates
- First observed
get_company - First observed
get_company_financial_summary - First observed
get_company_metrics - First observed
get_company_notes_summary - First observed
get_company_performance - First observed
get_company_recent_metrics - First observed
get_custom_column_options - First observed
get_custom_columns - First observed
get_metrics_options - First observed
get_portfolio_summary - First observed
list_budgets - First observed
list_companies - First observed
list_documents - First observed
list_funds - First observed
list_information_reports - First observed
list_information_requests - First observed
list_notes - First observed
list_users - First observed
search_companies
TDQS
Scored across 19 tools
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.
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.
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.
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
Related MCP Connectors
SEC filing intelligence for AI agents. Financials, screening, peer comparison for 5,000+ companies.
Evidence-backed capital-change intelligence and sourced financial data for AI agents
AI-native interface to Milemarker: query AUM & positions, manage advisors, run platform workflows.
SEC filings and financial data for AI agents: 59 tools for statements, valuation and supply chains.
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables AI assistants to access and analyze financial data including stock information, company fundamentals, and market insights through the Financial Modeling Prep API.100417143TypeScriptApache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables 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.1733MIT
- AlicenseBqualityDmaintenanceConnects 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.294MIT
- AlicenseAqualityBmaintenanceProvides 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.6MIT