Skip to main content
Glama

Elfa MCP

Model Context Protocol server for the Elfa API — crypto social intelligence from X and Telegram, plus Auto, a condition engine that watches the market and fires an action when your conditions are met.

Works with any MCP client: Claude Code, Claude Desktop, Cursor, VS Code, Codex, and anything else that speaks MCP.

Install

Get an API key at dev.elfa.ai. No install step — npx fetches the server on demand.

One click

Add to Cursor Add to VS Code

Claude Desktop

Download elfa-mcp-<version>.mcpb from the latest release and open it. Claude Desktop installs it, prompts for your API key, and keeps it updated. Nothing else to configure.

Claude Code

claude mcp add elfa --env ELFA_API_KEY=your-key -- npx -y @elfa-ai/mcp

Cursor, VS Code, Claude Desktop, and other clients

{
  "mcpServers": {
    "elfa": {
      "command": "npx",
      "args": ["-y", "@elfa-ai/mcp"],
      "env": {
        "ELFA_API_KEY": "your-key"
      }
    }
  }
}

VS Code uses "servers" instead of "mcpServers". Everything else is the same.

Ask "what's trending in crypto right now?" to confirm it works.

Related MCP server: onchain-safety-mcp

Configuration

Variable

Required

Purpose

ELFA_API_KEY

yes

Authenticates every request

ELFA_TIMEOUT

no

Request timeout in ms, default 120000

ELFA_RETRIES

no

Retries on failure, default 0

ELFA_MCP_MAX_RESPONSE_CHARS

no

Response size ceiling, default 60000

ELFA_EXTRA_HEADERS

no

JSON object of extra headers to send upstream, for proxies and non-production environments

The timeout is high and retries are off on purpose. The interpretation endpoints are LLM-backed and can take over a minute, and they cost credits per attempt, so a silent retry would bill you again for a call you never saw. Raise ELFA_RETRIES only if you are calling the cheap measurement endpoints.

Some MCP clients apply their own timeout, often around 60 seconds. narratives and market_chat can exceed that; the request still completes and is still charged, even if the client gives up first.

Tools

11 tools, mapped to every documented /v2 operation.

Tool

Mode

Cost

What it does

api_status

read

Free

Check API key tier, credit usage and remaining requests. Also confirms the API is reachable.

mentions

read

1 per call

Social mentions from X and Telegram. mode=top ranks a ticker's mentions by engagement, mode=search filters by keyword or account, mode=news returns the token news feed, which is X posts from accounts tagged as news sources rather than articles from news outlets.

trending

read

1 per call

What is gaining social attention. scope=tokens for tickers, scope=contracts_twitter or scope=contracts_telegram for contract addresses.

narratives

read

5 per call

Written narrative analysis with source links. scope=market extracts market-wide narratives, scope=keywords summarises events for specific keywords.

account_stats

read

1 per call

Smart follower and engagement stats for an X account. Legacy: it still works, but will be removed on 28 October 2026.

market_chat

read

Varies by speed

Ask for written market analysis. Supports conversational chat, macro overview, quick summary, token intro, token analysis and account analysis.

auto_build

read

1 plus LLM usage

Turn a plain-language monitoring request into an EQL query. Returns a draft to validate and activate, it does not activate anything itself.

auto_validate

read

Free

Check EQL syntax and get a cost estimate before activating, or check that a symbol has market data on a venue.

auto_query

read

Free

Read side of Auto: list queries, poll one query, and read its executions and LLM sessions.

auto_query_write

write

5 plus LLM usage to create, free to cancel or delete

Activate, cancel or delete an Auto query. Activated queries run unattended and fire their action when conditions are met.

auto_draft

write

Free, except convert which costs the same as creating a query

Manage inactive Auto drafts. Drafts do not evaluate until converted into an active query.

Not exposed as tools:

  • getMarketEvents-v2 — Available only to select Enterprise customers, and the published operation takes no parameters. Contact sales@elfa.ai for access.

  • chat-stream-v2 — A tool call returns one result, so streaming adds nothing. market_chat covers the same analysis.

  • auto-stream-queries-v2 — Long lived streams have no tool equivalent. Poll with auto_query.

  • auto-stream-query-v2 — Long lived streams have no tool equivalent. Poll with auto_query.

Streaming endpoints stay available through the SDKs for applications that can consume SSE.

Where this differs from the raw API

The tools deliberately do not inherit every API default, because an agent pays for verbosity in context.

API

Here

Why

pageSize

10 to 50 depending on endpoint, max 100

10

Page through rather than pull everything

speed on chat

expert

fast

Cheaper by default, ask for expert when depth matters

Mention fields

full record

high signal fields

Pass verbosity: "detailed" for the rest

Large responses

returned whole

trimmed to fit, with a note

Keeps one call from filling the context window

Every value is still settable per call, and pageSize accepts up to 100.

Auto

Auto queries run unattended. Once armed, a query keeps evaluating and fires its action without asking again.

The flow is three steps:

  1. auto_build — describe what to watch in plain language, get EQL back

  2. auto_validate — check the syntax and get the credit cost

  3. auto_query_write — activate it

Actions can notify you, call a webhook, message a Telegram bot, or run an LLM analysis.

There is no push channel over MCP. Poll auto_query with method=get, and wait for the returned pollAfterSeconds between calls.

Remote server

The same server runs over Streamable HTTP for hosted deployments:

ELFA_MCP_TRANSPORT=http ELFA_MCP_PORT=3000 npx -y @elfa-ai/mcp

It is stateless — no sessions, one server instance per request, safe behind a load balancer. Credentials come from the x-elfa-api-key request header, falling back to the environment.

DNS rebinding protection is on by default. The server accepts only the loopback names it binds — localhost:PORT and 127.0.0.1:PORT — which covers the local run above and nothing else. Any deployment that answers on a different Host must list the values it serves:

ELFA_MCP_ALLOWED_HOSTS=mcp.example.com

That includes a public domain, a reverse proxy, and a container that maps the port to a different one than the server binds. A Host the list does not cover is rejected with 403.

Variable

Required

Purpose

ELFA_MCP_TRANSPORT

no

http to serve over Streamable HTTP, default stdio

ELFA_MCP_HOST

no

Bind address, default 127.0.0.1

ELFA_MCP_PORT

no

Bind port, default 3000

ELFA_MCP_ALLOWED_HOSTS

no

Comma separated Host allowlist, defaults to the loopback names bound

ELFA_MCP_ALLOWED_ORIGINS

no

Comma separated Origin allowlist

Set ELFA_MCP_ALLOWED_ORIGINS as well when browsers call the server directly. It complements the host allowlist rather than replacing it: a rebound request is same origin, so it carries no Origin header for that list to check, and the Host header is the only one still naming the attacker's domain.

Safety

api_status is the fastest way to tell an auth problem from a credit problem.

Mentions, news and narratives return third-party social text that anyone can write. The server marks it as untrusted in every response, and the server instructions tell the model to treat it as data. Keep that in mind before letting an agent chain from that content into auto_query_write.

Development

npm install
npm run build
npm run verify

npm run verify runs typecheck, tests, the spec drift check, and the docs check.

manifest.json maps every documented API operation to the tool that covers it. npm run check:drift fails if the API grows an operation the server does not handle. The tool table above is generated from the same file with npm run docs:tools.

License

MIT

Available Tools

12 tools
account_statsAccount statsA
Read-onlyIdempotent

Smart follower and engagement stats for an X account. 1 credit per call. Use it to judge whether an account's reach is real before weighting what it posts.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesX username, with or without the @.

Output Schema

ParametersJSON Schema
NameRequiredDescription
usernameYes
followersYes
averageReachYes
smartFollowersYes
smartFollowingYes
averageEngagementYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and mutation behavior. The description adds the credit cost ('1 credit per call') and intended usage, which is helpful but does not disclose what specific stats are returned or any rate limits. With annotations carrying the core safety profile, this level of added context is adequate but not exceptional.

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 two sentences with zero wordiness. It leads with the core function, then states the use case and cost. Every word earns its place, making it concise and front-loaded.

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

Completeness5/5

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

With only one well-documented parameter, an output schema present, and strong annotations, the description covers the essential aspects: what, when, and cost. There's no need to detail return values since the output schema handles that. For its simplicity, the description is complete and self-sufficient.

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

Parameters3/5

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

The single parameter 'username' is fully documented in the schema with 'X username, with or without the @' (100% coverage). The description adds no additional semantic meaning beyond the schema, so the baseline of 3 applies. No param-related gaps to compensate for.

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 provides 'follower and engagement stats for an X account', giving a specific verb-resource pairing. It distinguishes itself from sibling tools like mentions or trending by focusing on account-level metrics. The word 'smart' adds a minor marketing tone but doesn't obscure the core purpose.

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

Usage Guidelines4/5

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

The description gives a concrete use case: 'Use it to judge whether an account's reach is real before weighting what it posts.' This provides clear context for when to apply the tool, but it does not explicitly mention alternatives or when not to use it. A 4 is appropriate because the context is clear, but exclusions or sibling comparisons are missing.

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

api_statusAPI key statusA
Read-onlyIdempotent

Check the Elfa API key tier, credit usage and remaining requests, and confirm the API is reachable. Free. Call this first when a request fails with an auth or credit error.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
problemYes
reachableYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context by noting the tool is 'Free' and that it 'confirm[s] the API is reachable,' going beyond the structured annotations. No contradiction exists.

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 two sentences: the first states the purpose, the second gives usage guidance. It is front-loaded, concise, and contains no redundant or filler content.

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

Completeness5/5

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

Given the empty input schema, an existing output schema, and strong annotations, the description fully covers the tool's purpose, when to use it, and its cost ('Free'). There are no missing critical details for a zero-parameter status check.

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 tool has exactly zero parameters, and the schema coverage is 100% by default. There is nothing for the description to add regarding parameters, so a baseline score of 4 is appropriate.

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 uses a specific verb 'Check' and clearly names the resource: 'Elfa API key tier, credit usage and remaining requests, and confirm the API is reachable.' This distinguishes it from sibling data-related tools and leaves no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

It provides explicit usage guidance: 'Call this first when a request fails with an auth or credit error.' This is clear context for when to use the tool, but it doesn't mention when-not to use it or name alternative tools, though none are obvious given its diagnostic role.

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

auto_buildAuto query builderA
Read-only

Turn a plain-language monitoring request into an EQL query. Costs 1 credit plus LLM usage. This only drafts the query, nothing starts running until you activate it with auto_query_write. Say what to watch, the threshold, and what should happen when it fires.

ParametersJSON Schema
NameRequiredDescriptionDefault
speedNofast is cheaper, expert reasons more deeply about the query.fast
messageYesWhat to monitor, in plain language, for example "tell me on Telegram when BTC funding on Binance goes negative".
sessionIdNoContinue refining a query from an earlier reply.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
planIdsYes
responseYes
reasoningYes
sessionIdYes

TDQS

A4.7/5.0
Behavior5/5

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

Discloses cost (1 credit plus LLM usage) and side-effect-free nature ('nothing starts running until you activate it'), which complements the readOnlyHint=true annotation. The draft-only behavior is critical for agents to know it won't execute anything and aligns with the annotation's safety profile.

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?

Three sentences, each serving a distinct purpose: purpose, cost/side-effect, and input guidance. No filler, tautology, or redundant repetition of schema information. Front-loaded with the core functionality.

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

Completeness5/5

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

Given the output schema and annotations, the description covers essential behavioral context: cost, draft-only nature, and activation requirement. It also provides enough input guidance for an agent to construct a valid request. Nothing critical is missing.

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

Parameters4/5

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

Schema already covers all parameters with descriptions (100% coverage), so a baseline of 3 applies. The description adds value by specifying what to include in 'message' (what to watch, threshold, action), enriching the primary parameter's semantics. Speed and sessionId are adequately documented in the schema.

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

Purpose5/5

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

Clearly states it converts plain-language monitoring requests into EQL queries, a specific verb+resource pair. The phrase 'only drafts the query' distinguishes it from activation tools like auto_query_write, removing ambiguity about its scope.

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

Usage Guidelines4/5

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

Explains when to use it: for drafting a query, not running it, and explicitly directs activation to auto_query_write. Provides input guidance (what to watch, threshold, action). However, it does not explicitly contrast with sibling tools like auto_query or auto_draft, leaving some potential for confusion.

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

auto_draftAuto draftsA
Destructive

Park an Auto query without activating it. Drafts never evaluate and never fire. Free, except method=convert which activates the draft and costs the same as creating a query. Use drafts when the user is still deciding.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size.
queryNoEQL query object with conditions, actions and expiresIn. Build it with auto_build and check it with auto_validate first.
titleNoTitle carried into the live query.
methodYesupsert creates or updates a draft. convert activates it as a live query.
offsetNoPagination offset.
searchNoFree text filter for method=list.
statusNoFilter for method=list.
draftIdNoRequired for get, delete and convert. Optional on upsert to update.
descriptionNoDescription carried into the live query.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
methodYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already provide destructiveHint=true and readOnlyHint=false, but the description adds critical behavioral nuance: drafts are non-evaluating, non-firing, and free except for method=convert which activates and incurs cost. This goes well beyond the annotations and materially informs invocation decisions.

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?

Three sentences deliver purpose, behavioral rules, and usage guidance with no filler. The most important information is front-loaded, and every sentence earns its place.

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 tool has 9 parameters, nested objects, and an output schema; the description covers the essential decision-making points (what a draft is, when to use it, cost caveat). The rich schema handles parameter details, and the output schema covers return values, leaving only the need for a bit more explicit workflow guidance (e.g., 'build and validate first') which the schema itself hints at via query description.

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%, so all parameters have descriptions. The tool description adds a cost implication for method=convert but does not otherwise elaborate on parameter relationships or formats. With full schema coverage, a baseline of 3 is appropriate.

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 opens with 'Park an Auto query without activating it,' a specific verb+resource that clearly states the tool's core function. It further distinguishes itself from live query tools by noting 'Drafts never evaluate and never fire,' making the purpose unmistakable and distinct from siblings like auto_query.

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

Usage Guidelines4/5

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

The description gives explicit usage context: 'Use drafts when the user is still deciding.' This tells the agent when to choose drafts over live queries, though it does not explicitly name alternative tools. The cost caveat for method=convert also serves as a conditional usage warning.

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

auto_exchangesAuto exchange connectionsA
Destructive

The exchange accounts Auto uses when a query's action places an order. Free. method=validate_symbol checks a symbol is tradeable before you build a query around it. Connecting and disconnecting change what Auto can trade with, so confirm with the user first, and both need request signing. binance and pacifica connect from here with credentials. hyperliquid and gmx use a wallet set up in the Elfa app, so use method=list to confirm those rather than trying to connect them.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesWhich action to perform.
symbolNoRequired for method=validate_symbol.
exchangeNoRequired for connect, disconnect and validate_symbol.
metadataNoNon-secret connection metadata for method=connect.
credentialsNoVenue credentials for method=connect. binance needs apiKey and secret, pacifica needs privateKey and walletAddress. They are verified on connect, so a wrong value fails here rather than at trade time. They also pass through the conversation and are written to the client transcript, so tell the user that before asking for them.
credentialTypeNoCredential type for method=connect, as documented per venue. Read it off an existing connection with method=list if you are unsure.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
methodYes

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the destructiveHint annotation by detailing that connections change what Auto can trade, requires user confirmation and request signing, and warns that credentials pass through the conversation and are written to the client transcript. This is actionable and important context not captured in structured data.

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 dense but every sentence contributes value. It could be slightly more structured for scannability, but it stays on-topic and front-loads the core purpose.

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 complexity of six parameters and nested objects, the description covers the key behaviors, constraints, and user-facing cautions. It does not detail list/disconnect outcomes, but an output schema exists and the description covers the main pitfalls.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaningful context for the credentials parameter (verification on connect, transcript exposure) and clarifies validate_symbol behavior, but other parameters remain adequately covered by the schema alone.

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 identifies the tool as managing exchange accounts used for trading and enumerates the specific methods (validate_symbol, list, connect, disconnect). It distinguishes itself from sibling tools by focusing exclusively on exchange connections.

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

Usage Guidelines5/5

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

Provides explicit usage guidance: use validate_symbol before building a query, use list for hyperliquid/gmx instead of connect, and confirm with the user before connecting/disconnecting due to trading impact. It also mentions request signing as a prerequisite.

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

auto_queryRead Auto queriesA
Read-onlyIdempotent

Read side of Auto. Free. method=list browses queries, method=get polls one query and returns its latest evaluation, method=executions and method=execution show what fired, method=sessions and method=session return the LLM analysis attached to a query. There is no push channel here, poll with method=get and respect pollAfterSeconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter executions by type.
limitNoPage size for list style methods.
methodYesWhich read to perform.
offsetNoPagination offset.
searchNoFree text filter for method=list.
statusNoFilter by status.
queryIdNoRequired for get, sessions and session.
sessionIdNoRequired for method=session.
executionIdNoRequired for method=execution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
methodYes
pollAfterSecondsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds valuable behavioral context beyond annotations: it's free, there is no push channel (requires polling), and it mentions pollAfterSeconds for rate/interval respect. This enriches understanding of how to interact with the tool.

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 packs all necessary method semantics into three concise sentences. It front-loads the essential purpose ('Read side of Auto'), uses a clear list-like enumeration for methods, and closes with critical polling behavior. No word is wasted.

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?

With 9 parameters, 6 methods, and a rich output schema, the description covers all method categories and the key interaction pattern (polling). It omits some details about pagination or filters, but those are fully documented in the schema. The overall tool behavior is sufficiently clear for an AI agent to use it 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?

Schema coverage is 100% with descriptions for all 9 parameters, so the baseline is 3. The description adds value by linking methods to parameter usage (e.g., method=get polls one query, method=execution shows a specific execution, method=session requires sessionId). This helps select the right method and understand which parameters matter per method, going slightly beyond the schema.

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

Purpose5/5

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

The description clearly identifies this as the read side of Auto and enumerates each method with its specific purpose (list browses queries, get polls one query, executions/execution show fired items, sessions/session return LLM analysis). It explicitly positions itself as read-only, distinguishing it from write/sibling tools like auto_query_write.

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

Usage Guidelines4/5

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

The description gives concrete guidance: 'Read side of Auto' implies use for reads rather than writes, and 'no push channel here, poll with method=get' explicitly tells the agent to use polling instead of expecting push. It also directs respecting pollAfterSeconds. It could be more explicit about when to use this over siblings, but the context is clear.

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

auto_query_writeWrite Auto queriesA
Destructive

Activate, cancel or delete an Auto query. Creating costs 5 credits plus LLM usage, cancel and delete are free. An activated query runs unattended and fires its action without asking again, so validate it with auto_validate and confirm the cost and the action with the user before calling this. Queries whose action places an order also need request signing.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoEQL query object with conditions, actions and expiresIn. Build it with auto_build and check it with auto_validate first.
titleNoShort title shown in the notification when this fires.
methodYescreate activates a new query. cancel stops an active one. delete removes one that has already finished.
queryIdNoRequired for cancel and delete.
descriptionNoWhy this was set up, shown alongside the title.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
methodYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses credit costs, unattended execution with automatic action firing, and the need for request signing on order actions. These are critical behavioral traits that an agent must know before invoking, and they add significant value over the annotations.

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?

Three sentences with no filler. It front-loads the core action, then adds cost, safety, and special-case information efficiently. Every sentence earns its place.

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

Completeness5/5

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

Given the tool's complexity (5 params, nested object, output schema), the description covers all essential context: cost, prerequisites, unattended behavior, confirmation requirement, and order signing. The output schema handles return values, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters already have detailed descriptions. The tool description does not add extra parameter-level meaning; it only references the validation workflow. Baseline 3 is appropriate since the schema does the heavy lifting and no gaps remain.

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's function with specific verbs: 'Activate, cancel or delete an Auto query.' This distinguishes it from sibling tools like auto_query (which likely handles reads) by focusing on write operations. The three operation modes are explicit.

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

Usage Guidelines4/5

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

Provides strong usage guidance: tells the agent to validate with auto_validate and confirm with the user before calling, and mentions the special requirement for order-placing queries. However, it doesn't explicitly contrast with auto_query for read-only scenarios, so it stops short of full alternative differentiation.

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

auto_validateValidate Auto queryA
Read-onlyIdempotent

Check EQL syntax and get a cost estimate before anything is activated. Free. Always run this before auto_query_write, and show the estimated cost to the user. Pass either an inline query or a draftId.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoEQL query object with conditions, actions and expiresIn. Build it with auto_build and check it with auto_validate first.
titleNoTitle to validate with the query.
draftIdNoValidate a stored draft instead of an inline query.
descriptionNoDescription to validate with the query.

Output Schema

ParametersJSON Schema
NameRequiredDescription
validYes
errorsYes
warningsYes
estimatedCostYes
estimatedCreditsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context beyond these by stating 'before anything is activated' (pre-flight nature), 'Free' (no cost), and the requirement to show the estimated cost to the user, enriching understanding of 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?

Three concise sentences, front-loaded with the core action and purpose, with no redundant details. Every sentence earns its place.

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

Completeness5/5

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

Given an output schema exists and the tool has moderate complexity (nested query object), the description covers purpose, usage, safety, and parameter guidance sufficiently for an agent to select and invoke the tool 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?

Schema coverage is 100% with descriptions for all parameters, so the baseline is 3. The description adds the key either/or relationship between inline query and draftId, which clarifies parameter usage beyond the schema alone.

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 uses a specific verb ('Check EQL syntax and get a cost estimate') and identifies the resource (EQL query) while explicitly naming the sibling tool auto_query_write, distinguishing this validation tool from others.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance: 'Always run this before auto_query_write', and notes the mode of use ('Pass either an inline query or a draftId'), which clearly frames its role against alternatives.

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

market_chatMarket chatA
Read-only

Ask Elfa for written market analysis grounded in its social data. Costs credits and varies by speed, so fast is the cheaper option. Pass sessionId from a previous reply to continue the same conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain, paired with contractAddress.
speedNoDefaults to fast, which is cheaper and shallower. Ask for expert when the answer needs deeper reasoning.fast
symbolNoToken symbol, for token analysis.
messageNoThe question, required for analysisType=chat.
usernameNoX username, for analysisType=accountAnalysis.
sessionIdNoContinue an earlier conversation.
analysisTypeNochat needs message. tokenIntro and tokenAnalysis need symbol, or chain plus contractAddress. accountAnalysis needs username. macro and summary need nothing else.chat
contractAddressNoContract address, paired with chain.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
sessionIdYes
creditsConsumedYes

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses meaningful behavioral traits beyond the annotations: using this tool costs credits, speed and cost are linked with fast being cheaper, and sessionId enables a continued conversation. It is consistent with readOnlyHint=true and adds useful context around pricing and stateful conversation.

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 two sentences, front-loaded with the main purpose, and then covers cost/speed and session continuation in a compact way. Every sentence earns its place without unnecessary detail.

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 100% schema coverage and the presence of an output schema, the description covers the essential interaction model: ask a question, choose a speed, and optionally continue a session. It doesn't enumerate all analysisType variants or alternatives, but the schema handles those details, so the description is close to complete.

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

Parameters4/5

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

Schema coverage is 100% and each parameter already has a description. The tool description adds value by clarifying that speed directly affects cost ('fast is the cheaper option') and that sessionId carries over a previous conversation, which are not obvious from the schema alone.

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 says 'Ask Elfa for written market analysis grounded in its social data,' which names a specific verb ('ask'), a resource ('Elfa'), and a clear deliverable ('written market analysis'). It also differentiates from sibling tools by emphasizing 'grounded in its social data' and the written/market-analysis nature.

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 for asking market-analysis questions, and it offers useful context about cost/speed and continuing conversations via sessionId. However, it does not explicitly state when to use this tool instead of siblings like account_stats or narratives, nor does it give 'when not to use' guidance.

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

mentionsMentionsA
Read-onlyIdempotent

Social mentions from X and Telegram. 1 credit per call. Returns engagement metrics and a link per post, not the post text. mode=top ranks one ticker's mentions by engagement. mode=search filters by keywords or by account. mode=news returns the token news feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of an absolute range, unix seconds. Use with from.
fromNoStart of an absolute range, unix seconds. Use with to. For mode=search the range must span at least 1 day and at most 30.
modeYestop needs ticker. search needs keywords or accountName. news is a feed and needs neither.
pageNoPage number, starting at 1.
limitNoResult count for mode=search.
cursorNoPagination cursor from a previous mode=search response.
tickerNoTicker for mode=top, for example "BTC" or "$SOL".
coinIdsNoComma separated CoinGecko coin ids to filter mode=news.
repostsNoInclude reposts in the results.
keywordsNoUp to 5 comma separated keywords for mode=search.
pageSizeNoItems per page, up to 100. Keep it small and page through rather than asking for everything at once.
verbosityNoconcise returns the high signal fields only. Use detailed when you need every metric.concise
searchTypeNoHow multiple keywords combine in mode=search.
timeWindowNoRelative window such as "1h", "24h" or "7d".
accountNameNoX username for mode=search, without the @.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
nextYes
totalYes
noticeYes
mentionsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as read-only, idempotent, and non-destructive. The description adds valuable context about cost (1 credit per call) and the return format (metrics and link, not text), as well as mode-specific behaviors, without contradicting annotations.

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 short, front-loaded with purpose, then cost, return limitation, and mode breakdown. Every sentence carries distinct information with no redundancy.

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 high complexity (15 parameters, 3 modes) and the presence of an output schema, the description provides sufficient high-level context: mode behaviors, cost, and the key limitation of not returning post text. It doesn't mention pagination, but the schema covers that.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds cross-parameter relationships by mapping modes to required parameters (top needs ticker, search needs keywords/accountName, news needs neither), which adds meaning beyond individual field descriptions.

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 identifies the resource (social mentions from X and Telegram) and its return contents, but lacks an explicit verb like 'get' or 'list'. It does distinguish from siblings by specifying the platforms and modes, so the purpose is unambiguous.

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

Usage Guidelines4/5

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

The description explains the three modes and their parameter requirements, giving clear context when to use each. It also states a limitation ('not the post text') that guides when not to use it. However, it does not name alternative tools.

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

narrativesNarrativesA
Read-onlyIdempotent

Written narrative analysis with source links, for when counts are not enough. 5 credits per call, so prefer trending or mentions when metrics will do. scope=market extracts the narratives moving the market. scope=keywords summarises events for keywords you supply, and can take over a minute to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of an absolute range, unix seconds. Use with from.
fromNoStart of an absolute range, unix seconds. Use with to.
scopeNomarket is a broad sweep. keywords needs the keywords argument.market
keywordsNoUp to 5 comma separated keywords for scope=keywords.
timeFrameNoLookback for scope=market.
searchTypeNoHow multiple keywords combine for scope=keywords.
timeWindowNoRelative window such as "1h", "24h" or "7d".
maxNarrativesNoCap the narratives returned for scope=market.
maxTweetsPerNarrativeNoCap the sources per narrative for scope=market.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
itemsYes
scopeYes
noticeYes
matchedYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable context: the cost of '5 credits per call' and the warning that scope=keywords 'can take over a minute to return', which are not captured in the annotations.

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?

Three sentences, each earning its place: purpose, cost/alternative, and scope explanations. Front-loaded with the core purpose, and no fluff or redundancy.

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

Completeness5/5

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

Despite having 9 parameters with no required fields, the description covers the key decision points: when to use qualitative analysis, the cost, the two scope behaviors, and latency expectations. The rich schema and output schema handle the remaining parameter and return details, so the description is complete for the agent's needs.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds semantic nuance for the main scopes—'market extracts the narratives moving the market' and 'keywords summarises events'—which goes beyond the schema's brief 'broad sweep' and 'needs the keywords argument'. This adds meaningful context for parameter selection.

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 provides 'Written narrative analysis with source links', distinguishing it from count-based tools like trending and mentions. It also differentiates between the two scopes (market and keywords), giving specific verbs and resources for each.

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

Usage Guidelines5/5

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

Explicitly says 'for when counts are not enough' and 'prefer trending or mentions when metrics will do', providing clear when-to-use and when-not-to-use guidance. It also explains the distinction between market and keywords scopes, including the latency caveat for keywords.

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 updatesv2.0.0
    • First observedaccount_stats
    • First observedapi_status
    • First observedauto_build
    • First observedauto_draft
    • First observedauto_exchanges
    • First observedauto_query
    • First observedauto_query_write
    • First observedauto_validate
    • First observedmarket_chat
    • First observedmentions
    • First observednarratives
    • First observedtrending

TDQS

A4.2/5.0
Disambiguation4/5

Most tools have clear boundaries: mentions/trending/narratives/market_chat each serve distinct analytical purposes, and the auto_* tools map to different lifecycle stages (build, validate, read, write, draft, exchanges). The main ambiguity is between auto_query_write and auto_draft, but descriptions clarify the active vs. draft distinction; auto_query bundles several read operations, which could be confusing but is documented.

Naming Consistency3/5

Names are consistently lowercase with underscores, but the pattern is mixed: some are bare nouns (mentions, trending, narratives), some are noun_noun (account_stats, market_chat), and the auto_* family mixes verbs (auto_build, auto_validate) with nouns (auto_query, auto_draft). There's a clear family feel but no uniform verb_noun convention.

Tool Count5/5

12 tools is well within the ideal 3-15 range. Each tool covers a distinct area of the API, from social data retrieval to auto-query lifecycle management, with no redundant tools. The use of modes and methods within some tools (e.g., mentions, auto_query) keeps the count manageable without sacrificing scope.

Completeness4/5

The tool set covers the core workflows of Elfa's social intelligence API: retrieving mentions, trending, narratives, account stats, and managing auto queries end-to-end (build, validate, activate, read, delete). Minor gaps include no tool to fetch raw post text (mentions only provides links and metrics) and no update operation for existing auto queries, but these are workaroundable.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that provides AI agents with crypto token safety checks (honeypot, liquidity, rug risk) and alpha signals (smart money buys, fresh rug radar) across PulseChain, Monad, Base, and BSC.
    61
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    MCP server that exposes QuantXData's institutional crypto market data APIs to AI assistants, enabling natural language queries for trades, order books, OHLCV, options, and more across 120+ exchanges.
    12
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for accessing crypto market data (prices, portfolio analytics) from CoinGecko and performing RAG-based search over internal documents with responsible-AI guardrails.
    4
    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/elfa-ai/mcp'

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