Skip to main content
Glama
jsamuel1

otel-analyzer-mcp

by jsamuel1

OTEL Analyzer MCP Server

MCP server for analyzing OpenTelemetry traces with performance and error diagnosis.

Features

  • Load traces from files, strings, AWS X-Ray, or CloudWatch GenAI observability

  • Auto-detect format (OTLP JSON, Jaeger, Protobuf, X-Ray)

  • Performance analysis: latency breakdown, slow spans, critical path

  • Error analysis: error detection, exception extraction, context

  • GenAI trace analysis: Bedrock AgentCore, token usage, model latency

  • MCP sampling for LLM-assisted deep analysis

Related MCP server: otel-mcp

Installation

uv tool install otel-analyzer-mcp

Or for development:

uv sync

Usage

Run the server:

otel-analyzer-mcp

Or add to your MCP client config:

{
  "mcpServers": {
    "otel-analyzer-mcp": {
      "command": "otel-analyzer-mcp"
    }
  }
}

Tools

Tool

Description

load_trace

Load from file, JSON, X-Ray trace ID, or CloudWatch

search_xray

Search X-Ray with filter expressions

search_genai_traces

Search CloudWatch aws/spans for GenAI traces

list_traces

List all loaded traces

analyze_perf

Performance analysis (latency, slow spans, critical path)

analyze_errs

Error analysis (errors, exceptions, context)

summarize_trace

High-level trace overview

deep_analyze

LLM-assisted analysis via MCP sampling

Examples

Load a trace file:

load_trace(path="/path/to/trace.json")

Search X-Ray:

search_xray(filter_expression='service("my-api") AND responseTime > 5', region="us-east-1")

Search GenAI traces:

search_genai_traces(filter_query='name like /bedrock/', region="us-east-1")

Load from CloudWatch:

load_trace(trace_id="abc123", source="cloudwatch", region="us-east-1")

Analyze performance:

analyze_perf(trace_id="abc123")

License

MIT

Available Tools

8 tools
analyze_errsC

Analyze trace errors: error spans, exceptions, failure context.

ParametersJSON Schema
NameRequiredDescriptionDefault
trace_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does not state whether the tool performs a read-only analysis, requires specific permissions, or has rate limits. The output schema exists but is not referenced, leaving expected behavior unclear.

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

Conciseness2/5

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

The description is extremely short (one sentence), which borders on under-specification. While concise, it omits critical details that would justify its brevity, making it insufficient for an agent to use effectively.

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

Completeness2/5

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

Given the simple input schema and existence of an output schema, the description is incomplete. It fails to explain what 'analyze' entails, what the output contains, or how to interpret results. Prerequisites and error handling are missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate. It mentions 'trace errors' but does not explain the 'trace_id' parameter's format, constraints, or how it relates to the returned data. The single parameter lacks semantic enrichment.

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

Purpose4/5

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

The description clearly states the tool's purpose: analyzing trace errors, including error spans, exceptions, and failure context. This specific verb-resource combination distinguishes it from sibling tools like 'analyze_perf' and 'deep_analyze'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'deep_analyze' or 'search_genai_traces'. The description does not mention prerequisites, scenarios, or exclusions.

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

analyze_perfB

Analyze trace performance: latency breakdown, slow spans, critical path.

ParametersJSON Schema
NameRequiredDescriptionDefault
trace_idYes
slow_threshold_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It indicates a read-only analysis operation, but does not disclose behavior for missing traces, error handling, or side effects. The output schema exists, which mitigates some transparency concerns.

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

Conciseness4/5

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

The single-sentence description is extremely concise and front-loaded with the core purpose. Every word adds value, though it could be slightly expanded with structural markers.

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

Completeness2/5

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

Despite having an output schema, the description lacks parameter details, usage context, and differentiation from siblings. For a tool with 2 parameters and 7 siblings, the description is insufficiently complete.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the parameters (trace_id, slow_threshold_ms). The mention of 'slow spans' hints at threshold usage but fails to define the parameter's role or default behavior.

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

Purpose5/5

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

The description clearly states the tool analyzes trace performance and lists specific outputs like latency breakdown, slow spans, and critical path. It distinguishes itself from siblings like analyze_errs (errors) and summarize_trace (summary) by focusing on performance details.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as deep_analyze or list_traces. The description does not mention prerequisites, context, or exclusions.

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

deep_analyzeC

Use MCP sampling for LLM-assisted trace analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
trace_idYes
questionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.1/5.0
Behavior1/5

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

Annotations are absent, so the description carries full burden for behavioral disclosure. It only states the tool's purpose without mentioning side effects, permissions, rate limits, or output behavior. This is a critical gap.

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

Conciseness3/5

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

The description is a single sentence, concise but overly brief. It front-loads the purpose but sacrifices detail. While no words are wasted, the lack of structure and additional information reduces its utility.

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

Completeness1/5

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

Given the tool has 2 parameters, no annotations, and sibling tools, the description is grossly incomplete. It fails to explain the role of the LLM, the meaning of 'MCP sampling', or how the output relates to the input, making it insufficient for an AI agent to use correctly.

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

Parameters2/5

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

Schema coverage is 0%, but the description does not compensate by explaining parameters. The parameter names (trace_id, question) are somewhat intuitive, but no additional semantics or constraints are provided, leaving uncertainty about valid values or formats.

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

Purpose3/5

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

The description states the tool is for 'LLM-assisted trace analysis' using 'MCP sampling', giving a general sense of purpose but lacking specificity on what makes it 'deep' versus other analysis tools. It does not differentiate from siblings like summarize_trace or analyze_errs.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description provides no context for decision-making, leaving the agent without criteria to select deep_analyze over sibling tools.

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

list_tracesA

List all loaded traces with summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description only states the action without disclosing behavioral traits such as scope, side effects, or performance implications.

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

Conciseness5/5

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

Extremely concise at 4 words, front-loaded with the core action and result. Every word is necessary.

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

Completeness4/5

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

Given the tool has no parameters and an output schema exists (not shown), the description is nearly complete. It could slightly elaborate on what 'summaries' entails, but overall adequate.

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

Parameters5/5

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

The input schema has no parameters (0 params, baseline 4). The description adds 'with summaries', which provides meaning beyond the empty schema, earning a higher score.

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

Purpose5/5

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

The description clearly states it lists all loaded traces with summaries, using a specific verb and resource. It is distinct from sibling tools like analyze_errs or load_trace.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like search_genai_traces or summarize_trace. Lacks any contextual usage advice.

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

load_traceA

Load a trace from file, string, X-Ray, or CloudWatch. Auto-detects format.

Args: path: File path to trace JSON data: Raw JSON string trace_id: Trace ID to fetch from X-Ray or CloudWatch source: Source for trace_id lookup: 'xray' or 'cloudwatch' (default: xray) profile: AWS profile name region: AWS region

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
dataNo
trace_idNo
sourceNoxray
profileNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It mentions auto-detection of format and multi-source loading but omits details like required permissions, error handling, performance implications, or side effects. This is insufficient for a tool with multiple optional parameters.

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

Conciseness4/5

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

The description is concise with a clear opening line followed by a parameter list. It front-loads the purpose. However, the parameter list uses a less structured format (Args: with colons) which slightly reduces readability.

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

Completeness2/5

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

Given the tool has 6 parameters (none required) and an output schema exists, the description lacks details about what the function returns, error messages, and interactions between parameters (e.g., using both path and trace_id). It is incomplete for safe and correct invocation.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by explaining each parameter: path, data, trace_id, source (with default), profile, region. It adds meaning beyond the schema (e.g., 'Trace ID to fetch from X-Ray or CloudWatch'), but could be more specific about input formats.

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

Purpose5/5

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

The description clearly states 'Load a trace from file, string, X-Ray, or CloudWatch. Auto-detects format.' This provides a specific verb and resource, and distinguishes it from sibling tools like analyze_errs and search_xray which are for analysis or searching.

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

Usage Guidelines3/5

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

The description lists arguments but does not explicitly state when to use this tool versus alternatives. It implies usage for loading traces from given sources but lacks guidance on when not to use it or when to prefer siblings like list_traces or search_xray.

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

search_genai_tracesA

Search CloudWatch aws/spans for GenAI traces from Bedrock AgentCore.

Args: filter_query: CloudWatch Logs Insights filter (e.g., 'name like /bedrock/') start_time: ISO format start time end_time: ISO format end time limit: Max results (default: 20) profile: AWS profile name region: AWS region

Returns GenAI traces with model info, token usage, and latency.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_queryNo
start_timeNo
end_timeNo
limitNo
profileNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It explains the tool returns model info, token usage, and latency, and notes that filter_query is a CloudWatch Logs Insights filter. However, it does not disclose pagination, rate limits, auth details, or error behavior.

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

Conciseness5/5

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

The description is front-loaded with purpose, followed by a structured argument list and a return statement. Every sentence adds value; no redundancy or fluff.

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

Completeness4/5

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

The description explains parameters and return values (model info, token usage, latency). Given the presence of an output schema, it is mostly complete. However, it could benefit from clarifying default time range behavior or error handling.

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

Parameters5/5

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

Schema coverage is 0%, but the description adds clear meaning for each parameter: examples for filter_query, format for start/end_time, default for limit, and context for profile/region. This compensates well for the lack of schema descriptions.

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

Purpose5/5

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

The description states the tool searches CloudWatch aws/spans for GenAI traces from Bedrock AgentCore, specifying the resource, action, and target. It distinguishes from siblings like search_xray (X-Ray) and list_traces (list without filtering).

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

Usage Guidelines3/5

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

The description mentions it searches GenAI traces with a filter query and time range, but does not explicitly state when to use it versus alternatives like search_xray or list_traces. No when-not-to-use guidance is provided.

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

search_xrayC

Search X-Ray for traces matching filter expression.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_expressionNo
start_timeNo
end_timeNo
limitNo
profileNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior1/5

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

No annotations provided, so description carries full burden. It does not disclose whether the tool is read-only, what output format to expect (though output schema exists, its content is not described), rate limits, or required permissions. Minimal behavioral context.

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

Conciseness5/5

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

Single sentence with no waste. Front-loaded with action and resource. Efficient.

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

Completeness1/5

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

With 6 parameters and no annotation coverage, description is severely incomplete. Does not explain filter syntax, time range semantics, pagination, or region/profile usage. Output schema exists but its details are omitted.

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

Parameters1/5

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

Schema coverage is 0%, so description must explain parameters. It only mentions 'filter expression' but does not describe start_time, end_time, limit, profile, or region. No additional meaning beyond parameter names.

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

Purpose4/5

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

Description specifies action ('search'), resource ('X-Ray'), and what it searches for ('traces matching filter expression'). It is clear but does not differentiate from sibling tools like list_traces which might also list traces, though the filter expression implies a filtered search.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when to use list_traces vs search_genai_traces). No exclusions or prerequisites mentioned. Usage is only implied.

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

summarize_traceD

High-level trace overview.

ParametersJSON Schema
NameRequiredDescriptionDefault
trace_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.6/5.0
Behavior2/5

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

Without annotations, the description offers minimal behavioral info. It hints at a read operation but lacks detail on permissions, resource usage, 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.

Conciseness2/5

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

Extremely short but underspecified. The phrase 'High-level trace overview' does not earn its place as it adds little value.

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

Completeness1/5

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

Despite an output schema, the description lacks essential context: what the overview includes, how it differs from siblings, and what the output looks like.

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

Parameters1/5

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

With 0% schema description coverage, the description fails to explain the sole parameter trace_id (e.g., format, source, required context).

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

Purpose2/5

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

The description 'High-level trace overview' is vague and close to tautology. It does not distinguish from siblings like analyze_errs or analyze_perf, which also provide trace analysis.

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

Usage Guidelines1/5

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

No guidance on when to use this tool versus alternatives. No exclusions or context provided.

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. Dates show when Glama detected each change.

  1. 8 tool updatesv0.1.1
    • First observedanalyze_errs
    • First observedanalyze_perf
    • First observeddeep_analyze
    • First observedlist_traces
    • First observedload_trace
    • First observedsearch_genai_traces
    • First observedsearch_xray
    • First observedsummarize_trace

TDQS

B3/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct aspect of trace management and analysis. No two tools have overlapping purposes; descriptions clearly differentiate ingestion, listing, summarizing, error analysis, performance analysis, LLM-assisted analysis, and searching by source.

Naming Consistency4/5

Tool names follow a consistent verb_noun snake_case pattern (e.g., load_trace, list_traces, summarize_trace). Minor deviations: analyze_errs and analyze_perf use abbreviations (errs, perf) and deep_analyze uses an adjective prefix, but these are still readable and fit the general pattern.

Tool Count5/5

With 8 tools, the server provides a comprehensive but focused set of operations for trace analysis: ingestion, listing, summarization, error analysis, performance analysis, LLM-assisted analysis, and source-specific searches. Each tool earns its place without redundancy.

Completeness4/5

The tool set covers the main lifecycle of trace analysis: loading, listing, summarizing, error and performance analysis, and advanced LLM analysis. It also includes source-specific search. A minor gap is the lack of a query/filter capability on loaded traces beyond the static listing, but overall the surface is well-rounded for typical observability tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    An MCP server for the Uptrace observability platform that enables querying traces, spans, logs, and metrics through natural language. It provides tools for error analysis, service discovery, and trace visualization within MCP-compatible clients.
    11
    2
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that emits OpenTelemetry traces, metrics, and logs to OTLP endpoints in various formats. It includes tool-mimicry profiles to generate realistic traffic resembling common tools like nginx, postgres, and AWS Lambda for testing and demonstration purposes.
    11
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Unified MCP server for observability and monitoring, providing tools to query metrics, logs, and traces through Prometheus, Grafana, Loki, and Jaeger.
    2
    Mozilla Public 2.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that gives AI agents access to your application's OpenTelemetry traces for querying, analysis, and debugging.
    5
    12
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jsamuel1/otel-analyzer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server