Skip to main content
Glama
JCF0

CG Alpha MCP

by JCF0

cg-alpha-mcp

An MCP server that connects Elfa (crypto news & twitter sentiment data) and works alongside the CoinGecko MCP. Includes a tiny TA module (RSI + Bollinger Bands) to quickly inform users of token performance in various timeframes. Ideally used with CoinGecko feature top gainers/losers, which can be called directly from the LLM with CoinGecko Pro. Users can also connect the Nansen MCP for additional context in their token alpha searches.


Features

  • ELFA integrations

    • /v2/aggregations/trending-tokens

    • /v2/data/token-news

    • /v2/data/keyword-mentions

  • Generic ELFA proxy: call any ELFA path with elfa_query

  • Auth from .env (no key pasting into the chat)

  • TA utilities: RSI (Wilder) and Bollinger Bands (SMA + population stdev)

  • Designed to run with any MCP client (Claude Desktop, Cursor, etc. - n.b. designed with Claude desktop)

Related MCP server: Crypto Indicators MCP Server

Prompts and responses

See the full set here: promts_responses_images/

Quick Start

1) Requirements

  • Node.js 20+ (works on 22 as well)

  • A modern MCP client (e.g., Claude Desktop or Cursor)

2) Install

git clone https://github.com/<you>/cg-alpha-mcp.git
cd cg-alpha-mcp
npm install   # installs dependencies (node_modules is ignored in Git)

3) Configure environment

cp .env.example .env

  • Edit .env and set ELFA_API_KEY (and COINGECKO_API_KEY if you use the CoinGecko MCP with a key)

  • Keep .env private — it’s already in .gitignore.

4) Hook into your MCP client

Most MCP clients let you add a custom server command. Use:

  • Command: node

  • Args: C:/Users/YOUR-FILE-NAME/cg-alpha-mcp/mcp-server.js (or ./mcp-server.js on macOS/Linux)

  • Working directory: the repo root On Windows, paths often look like:

C:\Users\YOUR-FILE-NAME\cg-alpha-mcp\mcp-server.js

5) Once added, your client should show tools like:

  • elfa_status

  • elfa_reload_env

  • elfa_trending / elfa_trending_tokens

  • elfa_token_news

  • elfa_keyword_mentions

  • elfa_query

6) Environment Variables

See .env.example for all options.

  • ELFA_API_KEY (required for ELFA calls)

  • Get from ELFA (https://www.elfa.ai/api).

  • COINGECKO_API_KEY - add to Claude config file.

Advanced (optional):

  • ELFA_HEADER: header name for auth (defaults to x-elfa-api-key)

  • ELFA_AUTH_TYPE: set to x-elfa-api-key (default) or bearer

  • ELFA_BASE: ELFA base URL (defaults to https://api.elfa.ai)

7) Claude config file - structure at bottom of README

8) (Optional) - Nansen paid users can download .dxt file to install

  • Either drag and drop into Extensions or

  • Extensions > Advanced Setting > Install Extension > Choose .dxt file > Enter your API key


9) Troubleshooting:

401 “API key is required”

  • Check .env has ELFA_API_KEY=...

  • Run elfa_reload_env (no restart needed)

  • Verify header style: ELFA expects x-elfa-api-key (the server auto-tries both)

404 “Cannot GET …/data/trending”

  • Use /v2/aggregations/trending-tokens (the server’s elfa_trending already points here)

  • .env in the right place?

  • Put .env in the same folder as mcp-server.js (repo root)

Windows path issues

  • Use absolute paths in the MCP client if needed, e.g.

C:\Users\YOUR-FILE-NAME\cg-alpha-mcp\mcp-server.js

Security

  • .env is ignored by git.

  • Include a public, safe .env.example so others can configure their own keys.


Useful Tools & What They Do

  • elfa_status - Shows current base URL and masked auth status.

  • elfa_reload_env - Reloads .env at runtime (no restart). Use this after editing the .env.

  • elfa_set_auth - Manually sets the API key and header style if needed:

{ "key": "sk-...", "headerName": "x-elfa-api-key", "scheme": "" }

  • elfa_trending / elfa_trending_tokens - Wrapper around /v2/aggregations/trending-tokens:

{ "timeframe": "24h", "limit": 10, "chain": "all" }

  • elfa_token_news - Token news:

{ "symbols": "BTC,ETH", "limit": 20, "start": "2025-08-01", "end": "2025-08-16" }

  • elfa_keyword_mentions - Multi-keyword mentions:

{ "keywords": ["bitcoin","halving"], "limit": 50 }

  • elfa_query - Generic ELFA proxy for any path:

{ "path": "/v2/aggregations/trending-tokens", "method": "GET", "query": { "timeframe": "24h", "limit": 10 } }

Technical Analysis (TA)

We provide a tiny pure JS TA module in services/ta.js:

  • rsi(values, period=14) → last RSI value (0–100)

  • bollinger(values, period=20, mult=2){ mean, upper, lower, last, percentB, bandwidth } Inputs are arrays of numeric closes in order oldest → newest. Your MCP orchestration fetches price series (e.g., via CoinGecko MCP) and then calls TA.

Intended Prompt Workflow:

"Show me the top 15 trending tokens on coingecko via their mcp, and the top 10 trending tokens on Elfa." (- Nansen users can ask for the recent smart money flows and activity.) "Show me the top 10 gainers and top 10 losers over the past 7 days in USD (specify timeframe: 24hours, 7days, 30days, specify token range: top 1000 or all tokens)." (- Goingecko Pro API users can call this from the MCP. Demo API users can ask Claude to determine this manually - *tokens with 24hr volume over 50k.)

User Chooses Specific Coins/Tokens of Interest from above lists:

"For (selected coins/tokens), show me the token news from Elfa AI, the trends in mentions and mentions delta from Elfa, and give me the RSI and Bollinger Bands for each." (- Nansen users can also ask for smart money data/comparison for these tokens - who is buying (selected coins/tokens)?)

Other prompts:

Built-in timeframe (fast): "Show me the top 10 gainers and top 10 losers over the past 7 days in USD, and give me the RSI and Bollinger Bands for each." Custom timeframe (computed): "Find the best and worst performing coins over the past 12 hours, limited to the top 200 by market cap. Add RSI and Bollinger Bands." Specific coins/tokens: "For BTC, ETH, and SOL, calculate the percentage change over the last 72 hours and display RSI(14) and Bollinger Bands(20,2)." Multi-window snapshot: "Create a snapshot: "top 5 gainers and losers for 24h, 7d, and 30d, with RSI and Bollinger for each result." Latest Trending Tokens (ELFA) "Show me the top trending tokens from ELFA." RSI Calculation "Fetch Bitcoin's last 50 closing prices from CoinGecko and calculate RSI." Bollinger Bands "Get ETH’s last 30 days of prices and calculate Bollinger Bands." Gainers & Losers "Find the top 5 gainers and losers in the last 24h and calculate their RSI."


Claude config file structure:

{
  "mcpServers": {
    "cg-alpha-mcp": {
      "command": "node",
      "args": [
        "/absolute/path/to/cg-alpha-mcp/mcp-server.js"
      ]
    },
    "coingecko_mcp_local": {
      "command": "npx",
      "args": [
        "-y",
        "@coingecko/coingecko-mcp"
      ],
      "env": {
        "COINGECKO_DEMO_API_KEY": "YOUR_DEMO_KEY",
        "COINGECKO_ENVIRONMENT": "demo"
      }
    }
  }
}

Available Tools

12 tools
elfa_keyword_mentionsB
Read-only

Multi-keyword mentions. Params: keywords (array|string), start, end, chain, limit, cursor, sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsNo
startNo
endNo
chainNo
limitNo
cursorNo
sourcesNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true and openWorldHint=true, indicating this is a safe read operation with potentially open-ended data. The description adds value by listing all parameters, which helps the agent understand the scope of filtering options (keywords, date ranges, chain, limit, cursor, sources). However, it doesn't describe behavioral aspects like pagination mechanics (cursor usage), rate limits, authentication requirements, or what 'sources' refers to.

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 extremely concise - just one sentence listing parameters. While efficient, it's under-specified rather than appropriately concise. It front-loads the core purpose but lacks any explanatory context. Every word earns its place, but more context would be helpful for a tool with 7 parameters and no schema descriptions.

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

Completeness3/5

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

Given 7 parameters with 0% schema coverage and no output schema, the description is incomplete. It lists parameters but doesn't explain their semantics, expected formats, or relationships. The annotations help by indicating this is a read-only, open-world operation, but the description doesn't explain what the tool returns or how results are structured. For a complex query tool, more context would be needed.

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 carries full burden for parameter documentation. It lists all 7 parameters by name, which provides basic semantic information about what can be controlled. However, it doesn't explain what each parameter means (e.g., what 'chain' represents, what format 'start' and 'end' should use, what 'sources' options are available). The description compensates somewhat but doesn't fully explain parameter purposes.

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 'Multi-keyword mentions' which indicates the tool deals with keyword mentions, but it's vague about what resource or system this operates on. It doesn't specify whether this searches documents, social media, news articles, or another data source. The title annotation 'ELFA: Keyword Mentions' provides some context, but the description itself lacks specificity about the domain or target resource.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'elfa_query', 'elfa_token_news', and 'elfa_trending_tokens' that might also involve keyword-related operations, there's no indication of how this tool differs or when it's the appropriate choice. No prerequisites, exclusions, or comparison to alternatives are mentioned.

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

elfa_queryB
Read-only

Generic ELFA proxy. Call any ELFA path with method/query/body. Returns JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesELFA path like /v2/...
methodNoHTTP method
queryNoQuery params map
bodyNoJSON body for non-GET

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true and openWorldHint=true, suggesting safe read operations with flexible endpoints. The description adds context by specifying it's a 'proxy' that returns JSON, but doesn't elaborate on behavioral traits like error handling, authentication needs (implied by ELFA context), rate limits, or what 'any ELFA path' entails. It doesn't contradict annotations, but adds minimal value beyond them.

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

Conciseness5/5

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

The description is extremely concise with two sentences that efficiently convey core functionality: it's a generic proxy for ELFA calls and returns JSON. Every word earns its place, and it's front-loaded with the main purpose. No unnecessary details or redundancy.

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

Completeness3/5

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

Given the tool's complexity (generic proxy with 4 parameters, no output schema, and annotations covering safety), the description is minimally adequate. It explains what the tool does but lacks details on ELFA system context, error responses, or usage examples. With openWorldHint=true, more guidance on endpoint discovery would be helpful, but the description doesn't provide it.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for all 4 parameters (path, method, query, body). The description adds that path is 'like /v2/...' and body is 'for non-GET,' providing slight additional context. However, it doesn't explain parameter interactions (e.g., when query/body are required) or ELFA-specific semantics, 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.

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 as a 'Generic ELFA proxy' that can 'Call any ELFA path with method/query/body' and 'Returns JSON.' This specifies the verb (call/proxy), resource (ELFA paths), and output format. However, it doesn't explicitly differentiate from sibling tools like elfa_keyword_mentions or elfa_trending, which appear to be more specific ELFA operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this generic proxy tool versus the more specific sibling tools (e.g., elfa_keyword_mentions, elfa_trending). It mentions it can call 'any ELFA path,' but doesn't specify contexts where this generic approach is preferred over dedicated tools or when it might be inappropriate. No alternatives or exclusions are mentioned.

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

elfa_reload_envB

Reload .env files from common locations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false (implying mutation) and openWorldHint=false (suggesting deterministic behavior). The description adds that it reloads from 'common locations,' which provides useful context beyond annotations. However, it doesn't specify effects (e.g., overwriting current env vars) or error conditions, leaving 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.

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it highly concise and well-structured for quick understanding.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema) and annotations covering safety aspects, the description is adequate but minimal. It lacks details on outcomes (e.g., success indicators) or integration with sibling tools, making it only moderately complete for a mutation tool.

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

Parameters4/5

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

With 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to explain parameters, and it appropriately avoids redundant information, maintaining a high score for this dimension.

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

Purpose4/5

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

The description clearly states the action ('Reload') and target resource ('.env files from common locations'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential siblings that might also manipulate .env files, though no such siblings exist in the provided list.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., when .env files exist), exclusions, or related tools like 'elfa_set_auth' or 'elfa_set_base' that might interact with environment settings.

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

elfa_set_authA

Set ELFA API auth. Params: key (string), headerName (Authorization|x-elfa-api-key), scheme (e.g., Bearer).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
headerNameNo
schemeNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false and openWorldHint=false, suggesting this is a mutation tool with closed-world behavior. The description adds value by specifying it sets API auth, implying configuration changes, but doesn't disclose details like persistence, error handling, or rate limits. No contradiction with annotations, but minimal behavioral context beyond them.

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

Conciseness5/5

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

The description is extremely concise and front-loaded: the first sentence states the purpose, followed by a clear parameter list with examples. Every sentence earns its place with no wasted words, making it efficient and well-structured.

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

Completeness3/5

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

Given the tool's moderate complexity (3 parameters, mutation indicated by annotations, no output schema), the description is partially complete. It covers parameters well but lacks context on how this auth setting integrates with sibling tools, return values, or error scenarios, leaving gaps for the agent.

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?

With 0% schema description coverage, the description fully compensates by listing all three parameters (key, headerName, scheme) and providing semantic details: key is a string, headerName options (Authorization or x-elfa-api-key), and scheme examples (e.g., Bearer). This adds essential meaning beyond the bare schema.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Set ELFA API auth' specifies the verb ('Set') and resource ('ELFA API auth'), making it understandable. However, it doesn't differentiate from sibling tools like 'elfa_set_base' or explain how this auth setting relates to other ELFA tools, missing full sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., if auth is required before using other ELFA tools), exclusions, or context for usage, leaving the agent without clear usage instructions.

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

elfa_set_baseB

Set ELFA base URL (e.g., https://api.elfa.ai).

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations indicate this is not read-only and not open-world, but the description adds minimal behavioral context beyond this. It specifies what gets configured (the base URL) but doesn't mention persistence, scope (session vs. global), validation of the URL format, or error behavior. The description doesn't contradict annotations but adds only basic 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.

Conciseness5/5

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

The description is a single, efficient sentence that immediately conveys the tool's purpose with a helpful example. There's no wasted text, and it's appropriately sized for a simple configuration tool.

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

Completeness3/5

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

For a simple configuration tool with 1 parameter and no output schema, the description is minimally adequate. It explains what the tool does but lacks important context about when and why to use it, how it interacts with other ELFA tools, and what happens after configuration. The annotations provide basic safety hints but don't fill these gaps.

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 only 1 parameter and 0% schema description coverage, the description compensates well by explaining that the 'base' parameter should be a URL like 'https://api.elfa.ai'. This provides clear semantic meaning beyond the schema's type information, though it could be more explicit about format requirements or constraints.

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

Purpose4/5

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

The description clearly states the action ('Set') and the resource ('ELFA base URL'), providing a specific example of what the base URL should look like. However, it doesn't explicitly differentiate this tool from its sibling 'elfa_set_auth', which likely handles authentication settings rather than base URL configuration.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like whether authentication must be set first), when this configuration is needed, or how it relates to sibling tools like 'elfa_set_auth' or 'elfa_reload_env'.

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

elfa_statusB
Read-only

Show current ELFA config (key masked) and .env load info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, indicating a safe, read-only operation with limited scope. The description adds useful context about masking keys and including .env load info, which aren't covered by annotations. However, it doesn't disclose behavioral traits like response format, error conditions, or performance characteristics.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('Show current ELFA config') and adds specific details without waste. Every word earns its place, and there's no redundancy or fluff.

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

Completeness3/5

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

Given the tool has 0 parameters, annotations covering safety (readOnlyHint) and scope (openWorldHint), but no output schema, the description is adequate but incomplete. It explains what the tool shows but not the format or structure of the output, which could be important for an agent to interpret results correctly.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter information, and it appropriately doesn't mention any. Baseline for 0 parameters is 4, as it avoids unnecessary details.

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

Purpose4/5

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

The description clearly states the verb 'Show' and the resource 'current ELFA config' with specific details about what's included (key masked, .env load info). It distinguishes from siblings like elfa_reload_env or elfa_set_auth by focusing on status display rather than modification. However, it doesn't explicitly differentiate from all siblings (e.g., elfa_query might also show information).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use elfa_status instead of elfa_query or other siblings, nor does it specify prerequisites or exclusions. 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.

elfa_token_newsC
Read-only

Token news. Params: symbols (comma), chain, start, end, limit, cursor, sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsNo
chainNo
startNo
endNo
limitNo
cursorNo
sourcesNo

TDQS

C2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true and openWorldHint=true, which the description doesn't contradict. However, the description adds no behavioral context beyond what annotations provide—it doesn't explain what 'news' entails (e.g., real-time updates, historical data, or aggregated feeds), rate limits, or authentication needs. With annotations covering safety and scope, the description adds minimal value, scoring a baseline 3.

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 under-specified rather than concise—it wastes space on a tautological phrase and a bare parameter list without meaningful context. It lacks front-loaded purpose and structured details, making it inefficient for an agent to parse. While short, it doesn't earn its place with useful information, so it scores low.

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 7 parameters with 0% schema coverage, no output schema, and annotations only covering read-only and open-world hints, the description is incomplete. It doesn't explain what 'news' returns, how parameters interact, or error conditions. For a tool with this complexity, the description fails to provide adequate context, leaving significant gaps for the agent.

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?

The description lists parameter names ('symbols, chain, start, end, limit, cursor, sources') but provides no semantics—no explanations of what they mean, expected formats, or usage. With 0% schema description coverage and 7 parameters, this leaves all parameters undocumented. The list adds marginal value over an empty schema, but fails to compensate for the coverage gap, scoring below the baseline.

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 'Token news' is a tautology that restates the tool name 'elfa_token_news' without specifying what the tool actually does. It doesn't provide a clear verb or resource, nor does it distinguish this tool from siblings like 'elfa_trending_tokens' or 'elfa_keyword_mentions'. The title annotation 'ELFA: Token News' adds minimal context but doesn't compensate for the description's vagueness.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions, nor does it differentiate from sibling tools like 'elfa_trending_tokens' or 'elfa_query' that might handle related data. With zero usage instructions, this leaves the agent guessing about appropriate scenarios.

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

ta_bollingerB
Read-only

Compute Bollinger Bands (SMA + population stdev). Inputs: values:number[] (oldest→newest), period?:number(20), mult?:number(2).

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYes
periodNo
multNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, indicating a safe, deterministic calculation. The description adds context about the calculation method ('SMA + population stdev') and data orientation ('oldest→newest'), which helps understand the tool's behavior beyond the annotations. However, it doesn't disclose performance characteristics, error conditions, or output format details.

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

Conciseness5/5

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

The description is extremely concise and well-structured in a single sentence. It front-loads the purpose, then efficiently documents all parameters with their types, defaults, and important semantics (data ordering). Every element serves a clear purpose with zero wasted words.

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

Completeness3/5

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

For a calculation tool with good annotations (readOnlyHint, openWorldHint) but no output schema, the description adequately covers the core functionality and parameters. However, it doesn't explain what the tool returns (Bollinger Band values, SMA line, etc.) or how results are structured, leaving gaps for an agent to understand the output format.

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 fully compensates by explaining all three parameters: 'values:number[] (oldest→newest)' clarifies data structure and ordering, 'period?:number(20)' provides default value and optionality, and 'mult?:number(2)' provides default value and optionality. This adds essential meaning beyond the bare schema, though it doesn't explain parameter constraints or validation rules.

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: 'Compute Bollinger Bands (SMA + population stdev).' It specifies the verb ('Compute') and resource ('Bollinger Bands') with technical detail about the calculation method. However, it doesn't explicitly differentiate from sibling technical analysis tools like 'ta_rsi' or 'ta_summary' beyond mentioning the specific indicator name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'ta_rsi' or 'ta_summary' for different technical indicators, nor does it specify appropriate contexts or prerequisites for Bollinger Bands analysis. The parameter documentation implies usage but offers no comparative guidance.

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

ta_rsiA
Read-only

Compute RSI (Wilder). Inputs: values:number[] (oldest→newest), period?:number(14). Returns latest RSI.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYes
periodNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and openWorldHint=false, indicating this is a safe, deterministic calculation. The description adds useful context about the Wilder method and return format ('Returns latest RSI'), which goes beyond annotations. However, it doesn't mention computational complexity, error conditions, or data requirements beyond what's in parameters.

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 efficient single sentence that packs purpose, parameters with semantics, and return value. Every word earns its place with zero redundancy. The structure is front-loaded with the core purpose followed by implementation details.

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

Completeness4/5

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

For a calculation tool with good annotations (readOnlyHint, openWorldHint) but no output schema, the description provides complete context about what it computes, how to format inputs, and what it returns. The main gap is lack of error handling information, but otherwise covers the essential aspects well.

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 fully compensates by explaining both parameters: 'values:number[] (oldest→newest)' clarifies the array ordering requirement, and 'period?:number(14)' specifies the default value and optional nature. This adds significant meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the specific action ('Compute RSI (Wilder)'), resource (RSI indicator), and distinguishes from siblings by specifying the Wilder method. It explicitly identifies the mathematical calculation being performed rather than just restating the name.

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

Usage Guidelines3/5

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

The description implies usage context through the parameter explanation (values array ordering, period default), but doesn't explicitly state when to use this tool versus alternatives like ta_bollinger or ta_summary. No guidance is provided about when this tool is appropriate versus other technical analysis tools.

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

ta_summaryB
Read-only

Return both RSI and Bollinger in one call. Inputs: values:number[] (oldest→newest), rsiPeriod?:number(14), bbPeriod?:number(20), bbMult?:number(2).

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYes
rsiPeriodNo
bbPeriodNo
bbMultNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true and openWorldHint=false, indicating a safe, deterministic operation. The description adds minimal behavioral context by specifying it returns both indicators in one call, which hints at efficiency but doesn't detail output format, error handling, or computational limits. Since annotations cover safety, the description adds some value but lacks depth, aligning with a baseline score.

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 highly concise and front-loaded: the first sentence states the purpose, followed by a compact parameter list. Every sentence earns its place with no wasted words, making it easy for an agent to parse quickly. The structure efficiently conveys essential information without redundancy.

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

Completeness3/5

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

Given 4 parameters, 0% schema coverage, no output schema, and annotations covering safety, the description is moderately complete. It defines the tool's purpose and parameters but lacks details on return values, error conditions, or performance considerations. For a technical analysis tool with multiple inputs, more context would help, but it meets a basic threshold.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It lists all parameters with types and defaults (e.g., 'rsiPeriod?:number(14)'), adding meaning beyond the bare schema. However, it doesn't explain parameter roles (e.g., what 'values' array represents or valid ranges), leaving gaps. With 4 parameters and no schema descriptions, this partial compensation justifies a mid-range score.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Return both RSI and Bollinger in one call.' It specifies the verb ('Return') and resources ('RSI and Bollinger'), making the function explicit. However, it doesn't distinguish this from its sibling tools 'ta_bollinger' and 'ta_rsi' by explaining why one would use this combined tool versus the individual ones, which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions sibling tools 'ta_bollinger' and 'ta_rsi' exist but offers no context on trade-offs, such as efficiency or use cases for combined versus separate calculations. Without any when-to-use or when-not-to-use advice, the agent lacks decision-making support.

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. 12 tool updates
    • First observedelfa_keyword_mentions
    • First observedelfa_query
    • First observedelfa_reload_env
    • First observedelfa_set_auth
    • First observedelfa_set_base
    • First observedelfa_status
    • First observedelfa_token_news
    • First observedelfa_trending
    • First observedelfa_trending_tokens
    • First observedta_bollinger
    • First observedta_rsi
    • First observedta_summary

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap: 'elfa_trending' and 'elfa_trending_tokens' appear to serve similar functions, with the former being an alias. The ELFA configuration tools (set_auth, set_base, reload_env, status) are clearly distinct from query and analysis tools, and the technical analysis tools (bollinger, rsi, summary) are well-differentiated, though 'ta_summary' combines functionality from the other two.

Naming Consistency4/5

Naming is mostly consistent with a clear prefix pattern: 'elfa_' for ELFA-related tools and 'ta_' for technical analysis tools. However, there are minor deviations: 'elfa_trending' is an alias that doesn't follow the verb_noun pattern as strictly as others, and 'elfa_query' uses a generic term that could be more descriptive. Overall, the conventions are readable and predictable.

Tool Count5/5

With 12 tools, the count is well-scoped for the server's purpose, which combines ELFA API interactions and technical analysis. Each tool earns its place, covering configuration, data retrieval, and analysis without being overly broad or sparse. This number allows for comprehensive functionality while remaining manageable.

Completeness4/5

The tool surface is largely complete for its domain, covering ELFA API configuration, data querying (keyword mentions, token news, trending tokens), and technical analysis (RSI, Bollinger Bands). A minor gap is the lack of tools for more advanced ELFA operations beyond basic queries, but core workflows are well-supported, and agents can work around this with the generic 'elfa_query' tool.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables advanced technical and fundamental analysis of financial markets including stocks and cryptocurrencies. Provides trading opportunity screening, risk management tools, sentiment analysis from financial news, and comprehensive market indicators like RSI, MACD, and Bollinger Bands.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time cryptocurrency market data and technical indicators (EMA, MACD, RSI, ATR, Bollinger Bands) from Aster DEX with multi-timeframe analysis support for trading pairs like BTC, ETH, and SOL.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides crypto market intelligence including price quotes, momentum analysis, trending coins, and a composite scored verdict, using the free CoinGecko API.
    4
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables AI assistants to access comprehensive cryptocurrency market analysis, including real-time prices, 35+ technical indicators, market sentiment, futures data, and economic events.
    50
    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/JCF0/cg-alpha-mcp'

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