hny-mcp
허니콤 MCP
Honeycomb 관측 데이터와 상호작용하기 위한 모델 컨텍스트 프로토콜 서버입니다. 이 서버를 통해 Claude와 같은 LLM은 여러 환경에서 Honeycomb 데이터 세트를 직접 분석하고 쿼리할 수 있습니다.

요구 사항
노드.js 18+
전체 권한이 있는 Honeycomb API 키:
분석을 위한 쿼리 액세스
SLO 및 트리거에 대한 읽기 액세스
데이터 세트 작업을 위한 환경 수준 액세스
Honeycomb MCP는 사실상 Honeycomb에 대한 완벽한 대체 인터페이스이므로 API에 대한 광범위한 권한이 필요합니다.
Related MCP server: Notion MCP Server
허니컴 엔터프라이즈 전용
현재 이 기능은 Honeycomb Enterprise 고객에게만 제공됩니다.
작동 원리
현재 이는 사용자 컴퓨터에서 실행해야 하는 단일 서버 프로세스입니다. 인증되지 않습니다. 모든 정보는 클라이언트와 서버 간에 STDIO를 사용합니다.
설치
지엑스피1
빌드 아티팩트는 /build 폴더로 이동합니다.
구성
이 MCP 서버를 사용하려면 MCP 구성의 환경 변수를 통해 Honeycomb API 키를 제공해야 합니다.
{
"mcpServers": {
"honeycomb": {
"command": "node",
"args": [
"/fully/qualified/path/to/honeycomb-mcp/build/index.mjs"
],
"env": {
"HONEYCOMB_API_KEY": "your_api_key"
}
}
}
}여러 환경의 경우:
{
"mcpServers": {
"honeycomb": {
"command": "node",
"args": [
"/fully/qualified/path/to/honeycomb-mcp/build/index.mjs"
],
"env": {
"HONEYCOMB_ENV_PROD_API_KEY": "your_prod_api_key",
"HONEYCOMB_ENV_STAGING_API_KEY": "your_staging_api_key"
}
}
}
}중요: 이러한 환경 변수는 MCP 구성의 env 블록에서 설정 해야 합니다 .
EU 구성
MCP가 기본적으로 비EU 인스턴스를 사용하므로 EU 고객도 HONEYCOMB_API_ENDPOINT 구성을 설정해야 합니다.
# Optional custom API endpoint (defaults to https://api.honeycomb.io)
HONEYCOMB_API_ENDPOINT=https://api.eu1.honeycomb.io/캐싱 구성
MCP 서버는 성능을 향상시키고 API 사용량을 줄이기 위해 모든 비쿼리 Honeycomb API 호출에 대한 캐싱을 구현합니다. 캐싱은 다음 환경 변수를 사용하여 구성할 수 있습니다.
# Enable/disable caching (default: true)
HONEYCOMB_CACHE_ENABLED=true
# Default TTL in seconds (default: 300)
HONEYCOMB_CACHE_DEFAULT_TTL=300
# Resource-specific TTL values in seconds (defaults shown)
HONEYCOMB_CACHE_DATASET_TTL=900 # 15 minutes
HONEYCOMB_CACHE_COLUMN_TTL=900 # 15 minutes
HONEYCOMB_CACHE_BOARD_TTL=900 # 15 minutes
HONEYCOMB_CACHE_SLO_TTL=900 # 15 minutes
HONEYCOMB_CACHE_TRIGGER_TTL=900 # 15 minutes
HONEYCOMB_CACHE_MARKER_TTL=900 # 15 minutes
HONEYCOMB_CACHE_RECIPIENT_TTL=900 # 15 minutes
HONEYCOMB_CACHE_AUTH_TTL=3600 # 1 hour
# Maximum cache size (items per resource type)
HONEYCOMB_CACHE_MAX_SIZE=1000클라이언트 호환성
Honeycomb MCP는 다음 클라이언트에서 테스트되었습니다.
다른 클라이언트에서도 효과가 있을 가능성이 높습니다.
특징
여러 환경에서 Honeycomb 데이터 세트 쿼리
다음을 지원하여 분석 쿼리를 실행합니다.
다양한 계산 유형(COUNT, AVG, P95 등)
분석 및 필터
시간 기반 분석
SLO 및 상태 모니터링(Enterprise 전용)
열과 데이터 패턴 분석
트리거 보기 및 분석
데이터 세트 메타데이터 및 스키마 정보에 액세스합니다.
모든 비쿼리 API 호출에 대해 TTL 기반 캐싱을 사용하여 성능을 최적화했습니다.
자원
다음 형식의 URI를 사용하여 Honeycomb 데이터 세트에 액세스합니다: honeycomb://{environment}/{dataset}
예를 들어:
honeycomb://production/api-requestshoneycomb://staging/backend-services
리소스 응답에는 다음이 포함됩니다.
데이터 세트 이름
열 정보(이름, 유형, 설명)
스키마 세부 정보
도구
list_datasets: 환경의 모든 데이터 세트를 나열합니다.{ "environment": "production" }get_columns: 데이터 세트의 열 정보를 가져옵니다.{ "environment": "production", "dataset": "api-requests" }run_query: 다양한 옵션을 사용하여 분석 쿼리 실행{ "environment": "production", "dataset": "api-requests", "calculations": [ { "op": "COUNT" }, { "op": "P95", "column": "duration_ms" } ], "breakdowns": ["service.name"], "time_range": 3600 }analyze_columns: 통계 쿼리를 실행하고 계산된 메트릭을 반환하여 데이터 세트의 특정 열을 분석합니다.list_slos: 데이터세트의 모든 SLO를 나열합니다.{ "environment": "production", "dataset": "api-requests" }get_slo: 자세한 SLO 정보 가져오기{ "environment": "production", "dataset": "api-requests", "sloId": "abc123" }list_triggers: 데이터 세트의 모든 트리거를 나열합니다.{ "environment": "production", "dataset": "api-requests" }get_trigger: 자세한 트리거 정보를 가져옵니다.{ "environment": "production", "dataset": "api-requests", "triggerId": "xyz789" }get_trace_link: Honeycomb UI에서 특정 추적에 대한 딥 링크를 생성합니다.get_instrumentation_help: OpenTelemetry 계측 지침을 제공합니다.{ "language": "python", "filepath": "app/services/payment_processor.py" }
Claude를 사용한 예제 쿼리
클로드에게 다음과 같은 질문을 해보세요.
"프로덕션 환경에서는 어떤 데이터 세트를 사용할 수 있나요?"
"지난 1시간 동안 API 서비스에 대한 P95 지연 시간을 보여주세요"
"서비스 이름별로 오류율은 어떻게 되나요?"
"예산을 초과할 위기에 처한 SLO가 있나요?"
"스테이징 환경에서 모든 활성 트리거 표시"
"프로덕션 API 데이터 세트에서 어떤 열을 사용할 수 있나요?"
최적화된 도구 응답
모든 도구 응답은 필수 정보를 유지하면서 컨텍스트 창 사용을 줄이도록 최적화되었습니다.
데이터세트 목록 : 이름, 슬러그, 설명만 반환합니다.
열 가져오기 : 이름, 유형 및 설명에 초점을 맞춘 간소화된 열 정보를 반환합니다.
쿼리 실행 :
실제 결과와 필요한 메타데이터가 포함되어 있습니다.
자동으로 계산된 요약 통계를 추가합니다.
히트맵 쿼리에 대한 시리즈 데이터만 포함합니다.
자세한 메타데이터, 링크 및 실행 세부 정보를 생략합니다.
열 분석 :
상위 값, 개수 및 주요 통계를 반환합니다.
적절한 경우 숫자형 메트릭을 자동으로 계산합니다.
SLO 정보 : 주요 상태 지표 및 성과 측정 항목으로 간소화됨
트리거 정보 : 트리거 상태, 조건, 알림 대상에 초점을 맞춥니다.
이러한 최적화를 통해 응답은 간결하면서도 완전해지며, LLM은 맥락 제한 내에서 더 많은 데이터를 처리할 수 있습니다.
run_query 에 대한 쿼리 사양
run_query 도구는 포괄적인 쿼리 사양을 지원합니다.
계산 : 수행할 연산의 배열
지원되는 작업: COUNT, CONCURRENCY, COUNT_DISTINCT, HEATMAP, SUM, AVG, MAX, MIN, P001, P01, P05, P10, P25, P50, P75, P90, P95, P99, P999, RATE_AVG, RATE_SUM, RATE_MAX
COUNT 및 CONCURRENCY와 같은 일부 작업에는 열이 필요하지 않습니다.
예:
{"op": "HEATMAP", "column": "duration_ms"}
필터 : 필터 조건 배열
지원되는 연산자: =, !=, >, >=, <, <=, starts-with, does-not-start-with, exists, does-not-exist, contains, does-not-contain, in, not-in
예:
{"column": "error", "op": "=", "value": true}
filter_combination : "AND" 또는 "OR"(기본값은 "AND")
breakdowns : 결과를 그룹화하기 위한 열 배열
예:
["service.name", "http.status_code"]
orders : 결과를 정렬하는 방법을 지정하는 배열
분류 또는 계산의 열을 참조해야 합니다.
HEATMAP 작업은 주문에 사용할 수 없습니다.
예:
{"op": "COUNT", "order": "descending"}
time_range : 상대적인 시간 범위(초)(예: 마지막 시간의 경우 3600)
start_time 또는 end_time과 결합할 수 있지만 둘 다 결합할 수는 없습니다.
시작 시간 및 종료 시간 : 절대 시간 범위에 대한 UNIX 타임스탬프
가지고 있음 : 계산 값을 기준으로 결과 필터링
예:
{"calculate_op": "COUNT", "op": ">", "value": 100}
예제 쿼리
다음은 실제 쿼리의 몇 가지 예입니다.
느린 API 호출 찾기
{
"environment": "production",
"dataset": "api-requests",
"calculations": [
{"column": "duration_ms", "op": "HEATMAP"},
{"column": "duration_ms", "op": "MAX"}
],
"filters": [
{"column": "trace.parent_id", "op": "does-not-exist"}
],
"breakdowns": ["http.target", "name"],
"orders": [
{"column": "duration_ms", "op": "MAX", "order": "descending"}
]
}DB 호출 분포(지난주)
{
"environment": "production",
"dataset": "api-requests",
"calculations": [
{"column": "duration_ms", "op": "HEATMAP"}
],
"filters": [
{"column": "db.statement", "op": "exists"}
],
"breakdowns": ["db.statement"],
"time_range": 604800
}예외 및 호출자별 예외 수
{
"environment": "production",
"dataset": "api-requests",
"calculations": [
{"op": "COUNT"}
],
"filters": [
{"column": "exception.message", "op": "exists"},
{"column": "parent_name", "op": "exists"}
],
"breakdowns": ["exception.message", "parent_name"],
"orders": [
{"op": "COUNT", "order": "descending"}
]
}개발
pnpm install
pnpm run build특허
MIT
Available Tools
14 toolsanalyze_columnsA
Analyzes specific columns in a dataset by running statistical queries and returning computed metrics. This tool allows users to get statistical information about a specific column, including value distribution, top values, and numeric statistics (for numeric columns). Supports analyzing up to 10 columns at once by specifying an array of column names in the 'columns' parameter. When multiple columns are specified, they will be analyzed together as a group, showing the distribution of their combined values. Use this tool before running queries to get a better understanding of the data in your dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment containing the dataset | |
| dataset | Yes | The dataset containing the column to analyze | |
| columns | Yes | The names of the columns to analyze | |
| timeRange | No | Time range in seconds to analyze. Default is 2 hours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool does (statistical analysis, returns metrics) and some behavioral traits (supports up to 10 columns, analyzes them as a group). However, it doesn't mention important aspects like whether this is a read-only operation, potential performance impact, rate limits, or authentication requirements, leaving gaps in behavioral understanding.
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 appropriately sized at 5 sentences, front-loaded with the core purpose, and each sentence adds meaningful information. However, the final sentence about usage timing could be integrated more seamlessly, and some phrasing is slightly redundant ('specific columns' then 'specific column').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, statistical analysis function) and the absence of both annotations and an output schema, the description provides adequate but incomplete context. It explains what the tool does and some parameter behavior, but doesn't describe the format or structure of the returned metrics, leaving the agent uncertain about the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds some value by explaining the 'columns' parameter can accept up to 10 columns and that multiple columns are analyzed together as a group, but doesn't provide significant additional semantic context beyond what's in the 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 clearly states the tool's purpose with specific verbs ('analyzes', 'running statistical queries', 'returning computed metrics') and resources ('columns in a dataset'). It distinguishes from siblings like 'list_columns' (which lists columns) and 'run_query' (which runs general queries) by focusing specifically on statistical analysis of column data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool ('Use this tool before running queries to get a better understanding of the data in your dataset'). However, it doesn't explicitly state when NOT to use it or mention specific alternatives among the sibling tools, though the purpose differentiation implies alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boardA
Retrieves a specific board (dashboard) from a Honeycomb environment. This tool returns a detailed object containing the board's ID, name, description, creation time, and last update time.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| boardId | Yes | The ID of the board to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns a detailed object with specific fields (ID, name, description, creation time, last update time), which helps understand the return format. However, it doesn't mention error conditions, authentication needs, rate limits, or whether it's a read-only operation (though 'retrieves' implies reading).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the core purpose and follow with return value details. Every sentence adds value without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 simple parameters, no output schema, no annotations), the description is fairly complete. It covers the purpose, return object structure, and distinguishes from siblings. However, it could improve by mentioning authentication or error handling, but for a simple retrieval tool, it's mostly 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?
Schema description coverage is 100%, so the schema already documents both parameters ('environment' and 'boardId') adequately. The description doesn't add any additional parameter semantics beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Retrieves'), resource ('a specific board (dashboard)'), and context ('from a Honeycomb environment'). It distinguishes from sibling tools like 'list_boards' by specifying retrieval of a single board rather than listing multiple boards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a specific board needs to be retrieved, but doesn't explicitly state when to use this tool versus alternatives like 'list_boards' for multiple boards or other sibling tools for different resources. No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instrumentation_helpA
Provides important guidance for how to instrument code with OpenTelemetry traces and logs. It is intended to be used when someone wants to instrument their code, or improve instrumentation (such as getting advice on improving their logs or tracing, or creating new instrumentation). It is BEST used after inspecting existing code and telemetry data to understand some operational characteristics. However, if there is no telemetry data to read from Honeycomb, it can still provide guidance on how to instrument code.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Programming language of the code to instrument | |
| filepath | No | Path to the file being instrumented |
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 describes the tool's function as providing guidance/advice, which implies it's informational and non-destructive. However, it doesn't disclose behavioral traits like whether it requires authentication, has rate limits, returns structured vs. narrative output, or handles errors. The description adds some context about telemetry data dependency but lacks comprehensive behavioral disclosure.
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 appropriately sized (three sentences) and front-loaded with the core purpose. Each sentence adds value: the first states the purpose, the second specifies use cases, and the third provides contextual advice. There's no redundant information, though it could be slightly more structured (e.g., bullet points for use cases).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (advice generation with 2 parameters), no annotations, and no output schema, the description is moderately complete. It covers purpose and usage context but lacks details on output format, error handling, or dependencies. Without annotations or output schema, the description should do more to compensate, but it provides a basic operational understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('language' and 'filepath'). The description doesn't add any meaning beyond what the schema provides—it doesn't explain how these parameters affect the guidance, whether they're optional or required in practice, or provide examples. With high schema coverage, the baseline is 3, and the description doesn't compensate further.
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: 'Provides important guidance for how to instrument code with OpenTelemetry traces and logs.' It specifies the verb ('provides guidance') and resource ('instrument code'), and distinguishes from sibling tools by focusing on instrumentation advice rather than data analysis or listing operations. However, it doesn't explicitly differentiate from potential similar tools not in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use it: 'when someone wants to instrument their code, or improve instrumentation' and 'BEST used after inspecting existing code and telemetry data.' It also mentions a fallback scenario ('if there is no telemetry data... it can still provide guidance'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sloB
Retrieves a specific SLO (Service Level Objective) by ID with detailed information. This tool returns a detailed object containing the SLO's ID, name, description, time period, target per million, compliance, budget remaining, SLI alias, and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| dataset | Yes | The dataset containing the SLO | |
| sloId | Yes | The ID of the SLO to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states this is a retrieval operation but doesn't disclose important behavioral traits like authentication requirements, rate limits, error conditions, or whether this is a read-only operation. The description provides basic functional information but lacks operational 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 appropriately sized with two sentences. The first sentence states the purpose clearly, and the second provides useful information about the return format. However, listing specific return fields could be considered slightly verbose when no output schema exists.
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 retrieval tool with 3 parameters and no annotations or output schema, the description provides adequate functional information but lacks operational context. It explains what the tool does and what it returns, but doesn't address authentication, error handling, or other behavioral aspects that would be helpful 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?
Schema description coverage is 100%, so the schema already documents all three parameters. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate when the schema does the heavy lifting for parameter documentation.
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 specific action ('Retrieves'), resource ('a specific SLO by ID'), and scope ('with detailed information'). It distinguishes from sibling tools like 'list_slos' by specifying retrieval of a single SLO rather than listing multiple SLOs.
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 detailed information about a specific SLO is needed, but doesn't explicitly state when to use this tool versus alternatives like 'list_slos' or other sibling tools. No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trace_linkA
Generates a direct deep link to a specific trace in the Honeycomb UI. This tool creates a URL that opens a specific distributed trace, optionally positioning to a particular span and time range. If no time range is specified, the trace must have been generated within two hours from the current time. If only the start time is provided, the end time is assumed to be 10 minutes from the start time.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| dataset | Yes | The dataset containing the trace | |
| traceId | Yes | The unique trace ID | |
| spanId | No | The unique span ID to jump to within the trace | |
| traceStartTs | No | Start timestamp in Unix epoch seconds | |
| traceEndTs | No | End timestamp in Unix epoch seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the tool generates URLs (non-destructive), has time-based constraints (2-hour default, 10-minute assumption), and provides deep linking functionality. It doesn't mention authentication needs, rate limits, or error handling, but covers core operational behavior well.
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 perfectly concise and well-structured in three sentences. The first sentence states the core purpose, the second explains optional functionality, and the third covers time parameter defaults. Every sentence earns its place with no wasted words, and information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description provides good contextual completeness. It explains the tool's purpose, behavioral constraints, and parameter interactions. The main gap is the lack of output information (what the URL looks like or how to use it), but otherwise it's reasonably complete for a link-generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds some semantic context about parameter interactions (time range defaults and assumptions) but doesn't provide additional meaning beyond what's in the schema descriptions. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('generates', 'creates') and resources ('direct deep link', 'URL', 'specific trace in the Honeycomb UI'). It distinguishes itself from sibling tools by focusing on trace linking rather than analysis, listing, or querying functions.
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 context by specifying when to use time parameters ('If no time range is specified...', 'If only the start time is provided...'), but it doesn't explicitly state when to use this tool versus alternatives like run_query for trace analysis or list tools for exploration. No sibling tool comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_triggerA
Retrieves a specific trigger (alert) by ID with detailed information. This tool returns a detailed object containing the trigger's ID, name, description, threshold, frequency, alert type, triggered status, disabled status, recipients, evaluation schedule type, and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| dataset | Yes | The dataset containing the trigger | |
| triggerId | Yes | The ID of the trigger to retrieve |
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 discloses that the tool retrieves detailed information and lists the fields returned, but does not mention behavioral aspects like error handling, authentication needs, rate limits, or whether it's a read-only operation. The description adds some context but lacks comprehensive behavioral 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 appropriately sized with two sentences: the first states the purpose, and the second details the returned information. It is front-loaded with the core function, but the second sentence could be more concise by summarizing rather than listing all fields.
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 annotations and no output schema, the description partially compensates by listing return fields, but it does not fully address complexity like error cases or operational constraints. It is adequate for a read operation but lacks depth for complete agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all three parameters. The description does not add any meaning beyond what the schema provides, such as explaining parameter relationships or usage nuances. Baseline 3 is appropriate as the schema handles parameter documentation.
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 verb ('Retrieves') and resource ('a specific trigger (alert) by ID'), specifying it returns detailed information. It distinguishes from sibling tools like 'list_triggers' by focusing on a single trigger retrieval rather than listing multiple.
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 detailed information for a specific trigger is needed, but does not explicitly state when to use this tool versus alternatives like 'list_triggers' or other sibling tools. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_boardsA
Lists available boards (dashboards) for a specific environment with pagination, sorting, and search support. Returns board IDs, names, descriptions, creation times, and last update times.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| page | No | Page number (1-based) | |
| limit | No | Number of items per page | |
| sort_by | No | Field to sort by | |
| sort_order | No | Sort direction | |
| search | No | Search term to filter results | |
| search_fields | No | Fields to search in (string or array of strings) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behavioral traits: pagination support, sorting capabilities, search functionality, and the return data structure (board IDs, names, descriptions, creation/update times). However, it doesn't mention rate limits, authentication requirements, error conditions, or whether this is a read-only operation (though 'Lists' implies safe read).
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?
Two tightly constructed sentences with zero waste. The first sentence establishes purpose and key capabilities; the second specifies return values. Every element serves a clear purpose, and the description is appropriately sized for a list operation with multiple parameters.
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 list operation with 7 parameters (1 required) and no output schema, the description provides good context: purpose, capabilities, and return structure. However, without annotations or output schema, it could benefit from mentioning authentication requirements, rate limits, or error handling. The completeness is strong but not perfect given the parameter complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds context about what the tool does with these parameters ('with pagination, sorting, and search support'), but doesn't provide additional semantic details beyond what's in the schema descriptions. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('available boards/dashboards') with specific scope ('for a specific environment'). It distinguishes from siblings like get_board (singular retrieval) and list_datasets/list_columns (different resources). The mention of pagination, sorting, and search further clarifies functionality beyond basic 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?
The description implies usage context through 'for a specific environment' and mentions pagination/sorting/search capabilities, suggesting when these features are needed. However, it doesn't explicitly state when to use this tool versus alternatives like get_board (for single board details) or other list_* tools for different resource types. No explicit exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_columnsA
Lists all columns available in the specified dataset, including their names, types, descriptions, and hidden status. Supports pagination, sorting by type/name/created_at, and searching by name/description. Note: all is NOT supported as a dataset name.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| dataset | Yes | The dataset to fetch columns from | |
| page | No | Page number (1-based) | |
| limit | No | Number of items per page | |
| sort_by | No | Field to sort by | |
| sort_order | No | Sort direction | |
| search | No | Search term to filter results | |
| search_fields | No | Fields to search in (string or array of strings) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it describes the return format (names, types, descriptions, hidden status), mentions pagination support, and specifies a constraint about dataset naming. It doesn't cover rate limits or authentication needs, but provides substantial operational 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 perfectly sized and front-loaded: the first sentence states the core purpose and return format, the second adds operational capabilities, and the third provides a critical constraint. Every sentence earns its place with zero wasted words.
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 read-only listing tool with 8 parameters and no output schema, the description provides good context about what information is returned and how to control the listing. It could be more complete by mentioning the response format structure or error conditions, but covers the essential operational aspects well given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds minimal value beyond the schema - it mentions pagination, sorting, and searching which correspond to parameters, but doesn't provide additional syntax or format details. The baseline of 3 is appropriate when the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Lists all columns'), resource ('in the specified dataset'), and scope ('including their names, types, descriptions, and hidden status'). It distinguishes from sibling tools like 'analyze_columns' by focusing on listing metadata rather than analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (to get column metadata with pagination/sorting/searching) and includes an important exclusion ('__all__ is NOT supported as a dataset name'). However, it doesn't explicitly mention when to use alternatives like 'analyze_columns' or 'run_query' for different column-related tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_datasetsB
Lists available datasets for the active environment with pagination, sorting, and search support. Returns dataset names, slugs, descriptions, and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | ||
| page | No | ||
| limit | No | ||
| sort_by | No | ||
| sort_order | No | ||
| search | No | ||
| search_fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions pagination, sorting, and search support, and describes return values (names, slugs, descriptions, timestamps), but lacks critical details like rate limits, authentication requirements, error conditions, or whether this is a read-only operation. For a 7-parameter tool with no annotation coverage, this leaves significant behavioral gaps.
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 appropriately concise with two sentences that efficiently convey core functionality and return values. It's front-loaded with the main purpose and avoids unnecessary elaboration, though it could be slightly more structured by separating capabilities from return values.
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 7 parameters with 0% schema coverage and no output schema, the description provides basic context about capabilities and return format but falls short of complete guidance. It covers what the tool does and what it returns, but doesn't adequately explain parameter usage or behavioral constraints needed for effective tool invocation.
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 must compensate for undocumented parameters. While it mentions pagination, sorting, and search support, it doesn't explain any of the 7 parameters' semantics, purposes, or relationships. The description adds minimal value beyond what's implied by parameter names 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 the tool's purpose: 'Lists available datasets for the active environment' with specific capabilities like pagination, sorting, and search. It distinguishes from siblings by focusing on datasets rather than boards, columns, or other resources, but doesn't explicitly contrast with similar list tools like list_boards or list_columns.
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 context ('for the active environment') but provides no explicit guidance on when to use this tool versus alternatives like list_boards or list_columns. There's no mention of prerequisites, exclusions, or comparative scenarios with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_markersC
Lists available markers (deployment events) for a specific dataset or environment with pagination, sorting, and search support. Returns IDs, messages, types, URLs, creation times, start times, and end times.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| page | No | Page number (1-based) | |
| limit | No | Number of items per page | |
| sort_by | No | Field to sort by | |
| sort_order | No | Sort direction | |
| search | No | Search term to filter results | |
| search_fields | No | Fields to search in (string or array of strings) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns specific fields (IDs, messages, types, etc.) and supports pagination, sorting, and search, but lacks details on permissions, rate limits, error handling, or what happens if parameters are omitted. For a read operation with 7 parameters, this is insufficient.
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 front-loaded, stating the core purpose in the first clause. It efficiently lists features and return fields in a single sentence with no wasted words, though it could be slightly more structured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema, no annotations), the description is moderately complete. It covers the purpose and return fields but lacks behavioral details and usage context. Without an output schema, it should ideally explain the return format more thoroughly, but the listed fields provide some clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by implying the tool supports pagination, sorting, and search, but doesn't provide additional context beyond what's in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
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: 'Lists available markers (deployment events) for a specific dataset or environment' with specific functionality like pagination, sorting, and search. It distinguishes itself from siblings like list_datasets or list_boards by focusing on markers/deployment events, though it doesn't explicitly contrast with them.
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. It mentions the tool's features but doesn't indicate scenarios where it's appropriate, prerequisites, or how it differs from other list tools in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipientsC
Lists available recipients for notifications in a specific environment. This tool returns a list of all recipients available in the specified environment, including their names, types, targets, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| page | No | Page number (1-based) | |
| limit | No | Number of items per page | |
| sort_by | No | Field to sort by | |
| sort_order | No | Sort direction | |
| search | No | Search term to filter results | |
| search_fields | No | Fields to search in (string or array of strings) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the return format ('list of all recipients... including their names, types, targets, and metadata') but lacks critical behavioral details: pagination behavior (implied by 'page' and 'limit' parameters but not explained), rate limits, authentication requirements, or error conditions. This is inadequate for a tool with 7 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that efficiently state the purpose and return format. It's front-loaded with the core functionality. No wasted words, though it could be slightly more structured (e.g., separating purpose from output details).
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 7 parameters, no annotations, and no output schema, the description is incomplete. It covers the basic purpose and return fields but misses behavioral context (pagination, errors, auth), parameter interactions, and comparison to siblings. For a list tool with filtering/sorting parameters, more guidance is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no parameter-specific semantics beyond implying filtering via 'search' and pagination via 'page'/'limit'. It meets the baseline for high schema coverage but doesn't enhance understanding of parameter interactions or constraints.
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: 'Lists available recipients for notifications in a specific environment.' It specifies the verb ('Lists'), resource ('recipients'), and scope ('in a specific environment'). However, it doesn't explicitly differentiate from sibling tools like 'list_boards' or 'list_triggers' beyond the resource type.
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. It doesn't mention prerequisites (e.g., environment access), exclusions, or related tools for notification management. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_slosA
Lists available SLOs (Service Level Objectives) for a specific dataset. This tool returns a list of all SLOs available in the specified environment, including their names, descriptions, time periods, and target per million events expected to succeed. NOTE: all is NOT supported as a dataset name -- it is not possible to list all SLOs in an environment.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| dataset | Yes | The dataset to fetch SLOs from |
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 discloses that the tool returns a list with specific fields (names, descriptions, etc.), which adds behavioral context beyond the input schema. However, it lacks details on permissions, rate limits, pagination, or error handling, leaving some behavioral aspects unclear for a read 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 front-loaded with the core purpose in the first sentence, followed by additional details and a critical note. Every sentence adds value: the first explains what it does, the second details the return format, and the third provides an essential usage constraint. It is concise with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 required parameters, no output schema, no annotations), the description is fairly complete. It covers purpose, return format, and a key constraint. However, without annotations or output schema, it could benefit from more behavioral details (e.g., response structure, error cases), slightly reducing 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 description coverage is 100%, so the schema already documents both parameters (environment and dataset). The description adds value by clarifying that 'dataset' cannot be '__all__', which is a semantic constraint not in the schema. This compensates slightly, but most parameter semantics are covered by the schema, resulting in a baseline score of 3.
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 verb ('Lists') and resource ('SLOs') with specific scope ('for a specific dataset'), distinguishing it from siblings like list_boards or list_datasets. It explicitly mentions what information is returned (names, descriptions, time periods, target per million events), making the purpose highly specific and well-defined.
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 explicit guidance on when NOT to use this tool: it states that '__all__ is NOT supported as a dataset name' and clarifies that 'it is not possible to list all SLOs in an environment.' This gives clear boundaries and helps the agent avoid incorrect usage, which is optimal for usage guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_triggersA
Lists available triggers (alerts) for a specific dataset. This tool returns a list of all triggers available in the specified dataset, including their names, descriptions, thresholds, and other metadata. NOTE: all is NOT supported as a dataset name -- it is not possible to list all triggers in an environment.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment | |
| dataset | Yes | The dataset to fetch triggers from |
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 discloses key behavioral traits: it returns a list with specific metadata, and importantly notes the constraint that '__all__ is NOT supported', which is crucial for correct usage. It does not cover aspects like pagination, rate limits, or error handling, but provides sufficient operational 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 front-loaded with the core purpose in the first sentence, followed by details on return values and a critical note. Every sentence adds value without redundancy, making it efficient and well-structured for quick understanding.
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 annotations and no output schema, the description compensates well by explaining what the tool returns and a key constraint. It covers the essential context for a list operation, though it could be more complete by mentioning potential limitations like response size or authentication needs, which are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (environment and dataset). The description adds value by clarifying that 'dataset' cannot be '__all__', which is a semantic constraint beyond the schema. However, it does not provide additional details on parameter formats or examples, staying at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Lists' and the resource 'triggers (alerts) for a specific dataset', specifying it returns names, descriptions, thresholds, and metadata. It distinguishes from siblings like 'get_trigger' (singular) and 'list_datasets' by focusing on triggers within a dataset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by noting that '__all__ is NOT supported as a dataset name', which helps avoid misuse. However, it does not explicitly state when to use this tool versus alternatives like 'get_trigger' or other list tools, leaving some ambiguity in sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_queryA
Executes a Honeycomb query, returning results with statistical summaries.
CRITICAL RULE: For COUNT operations, NEVER include a "column" field in your calculation, even as null or undefined. Example: Use {"op": "COUNT"} NOT {"op": "COUNT", "column": "anything"}.
Additional Rules:
All parameters must be at the TOP LEVEL (not nested inside a 'query' property)
Field names must be exact - use 'op' (not 'operation'), 'breakdowns' (not 'group_by')
Only use the exact operation names listed in the schema (e.g., use "P95" for 95th percentile, not "PERCENTILE")
For all operations EXCEPT COUNT and CONCURRENCY, you must specify a "column" field
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | The Honeycomb environment to query | |
| dataset | Yes | The dataset to query. Use __all__ to query across all datasets in the environment. | |
| calculations | Yes | ⚠️ CRITICAL RULE: For COUNT or CONCURRENCY operations, you MUST OMIT the 'column' field COMPLETELY - do not include it at all. For all other operations, the 'column' field is REQUIRED. | |
| breakdowns | No | MUST use field name 'breakdowns' (not 'group_by'). Columns to group results by. | |
| filters | No | MUST use field name 'filters' (an array of filter objects). Pre-calculation filters for the query. | |
| filter_combination | No | MUST use field name 'filter_combination' (not 'combine_filters'). How to combine filters: AND or OR. Default: AND. | |
| orders | No | MUST use field name 'orders' (not 'sort' or 'order_by'). Array of sort configurations. | |
| limit | No | MUST use field name 'limit'. Maximum number of result rows to return. | |
| time_range | No | MUST use field name 'time_range' (with underscore). Relative time range in seconds from now. | |
| start_time | No | MUST use field name 'start_time' (with underscore). Absolute start timestamp in seconds. | |
| end_time | No | MUST use field name 'end_time' (with underscore). Absolute end timestamp in seconds. | |
| granularity | No | MUST use field name 'granularity'. Time resolution in seconds. 0 for auto. | |
| havings | No | MUST use field name 'havings'. Post-calculation filters with same column rules as calculations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by detailing critical behavioral rules: parameter placement (top-level), exact field naming requirements, operation name restrictions, and column field rules for different operations. It provides essential implementation guidance that goes beyond basic functionality, though it doesn't cover rate limits, authentication needs, or error handling.
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 well-structured with a clear purpose statement followed by prioritized rules (CRITICAL RULE first, then numbered additional rules). Every sentence serves a purpose, though it could be slightly more concise by combining some of the operation rules. The front-loading of the most critical information is effective.
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 complex 13-parameter query tool with no annotations and no output schema, the description provides substantial implementation guidance. It covers critical behavioral constraints and parameter usage rules that would help an agent invoke it correctly. The main gap is lack of information about return format or result structure, which would be helpful given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 13 parameters thoroughly. The description adds value by emphasizing critical rules about parameter structure (top-level placement, exact field names) and operation-specific constraints, but doesn't provide additional semantic meaning beyond what's in the schema descriptions. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource statement: 'Executes a Honeycomb query, returning results with statistical summaries.' It distinguishes this tool from all sibling tools (which are mostly get/list operations) by specifying it's for executing queries with calculations, not retrieving static data.
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 through the specific rules about parameter structure and operation names, suggesting this should be used when executing statistical queries against Honeycomb data. However, it doesn't explicitly state when to use this tool versus alternatives like analyze_columns or get_slo, nor does it mention prerequisites or typical query scenarios.
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.
14 tool updates
- First observed
analyze_columns - First observed
get_board - First observed
get_instrumentation_help - First observed
get_slo - First observed
get_trace_link - First observed
get_trigger - First observed
list_boards - First observed
list_columns - First observed
list_datasets - First observed
list_markers - First observed
list_recipients - First observed
list_slos - First observed
list_triggers - First observed
run_query
TDQS
Scored across 14 tools
Most tools have distinct purposes targeting specific Honeycomb resources (e.g., get_board vs. get_slo vs. get_trigger), but analyze_columns overlaps somewhat with run_query as both involve data analysis. The descriptions help clarify that analyze_columns is for statistical summaries of columns while run_query is for general query execution, but an agent might still confuse them when seeking data insights.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., list_boards, get_slo, run_query). The verbs 'list', 'get', 'analyze', and 'run' are used predictably across the set, making it easy to understand the action each tool performs.
With 14 tools, this server is well-scoped for Honeycomb's observability domain, covering dashboards, SLOs, triggers, datasets, queries, and instrumentation guidance. Each tool has a clear role, and the count is typical for a comprehensive API surface without being overwhelming.
The tool set provides strong coverage for retrieving and listing Honeycomb resources (e.g., boards, SLOs, triggers, datasets) and includes key operations like run_query and analyze_columns. Minor gaps exist, such as no tools for creating or updating resources (e.g., create_board, update_slo), but agents can still perform many workflows with the available read-oriented tools.
Maintenance
Related MCP Connectors
Query Honeycomb observability data: traces, events, metrics, SLOs, triggers, and boards.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
LLM Orchestration Agent (Opentelemetry Api)
LLM Observability & Orchestration Agent (LangChain Community)
Related MCP Servers
- AlicenseBqualityDmaintenanceServer for interacting with Meilisearch through LLM interfaces like Claude.22196MIT
- AlicenseNot gradedqualityDmaintenanceA simple server that integrates with Claude to allow querying and manipulating Notion pages and databases through natural language prompts.2,184 npmMIT
- FlicenseNot gradedqualityDmaintenanceA Python server implementing the Model Context Protocol that exposes tools for querying external APIs, compatible with Claude Desktop and ChatGPT Desktop.-
- AlicenseNot gradedqualityDmaintenanceThis server enables Claude to directly interact with SQLite, SQL Server, PostgreSQL, and MySQL databases through the Model Context Protocol, allowing for query execution, table management, and data export capabilities.MIT
Appeared in Searches
- Natural Language to SQL Conversion and Executing MySQL Queries to Retrieve Data
- Tools for generating charts based on data
- A tool for analyzing user feedback data to support app product development
- A generic RESTful API request tool for testing and integration
- Analyser les données des marchés boursiers pour améliorer les stratégies d'investissement