Skip to main content
Glama
varsansri

fxabsolute-mcp

by varsansri

fxabsolute-mcp

Connects a coding agent directly to FXAbsolute's candle history over MCP.

The point is to stop the model looking at pictures of charts. A screenshot forces it to recover prices from pixels; these tools hand it the numbers, so "what does the New York open actually do" becomes a query instead of a guess.

Setup

Nothing to install and no API key. The server fetches what it needs and caches it.

Claude Code

claude mcp add fxabsolute -- npx -y fxabsolute-mcp

Cursor, Windsurf, Claude Desktop, or anything reading a config file

{
  "mcpServers": {
    "fxabsolute": { "command": "npx", "args": ["-y", "fxabsolute-mcp"] }
  }
}

Verify with claude mcp list, or just ask your agent "what instruments does fxabsolute have?" — it should answer with fifteen, and tell you volume is not available.

Working on the server itself

git clone https://github.com/varsansri/fxabsolute-mcp && cd fxabsolute-mcp
npm install
npm run smoke                # every tool against real data, ~30 checks
node test/proto.mjs          # stdio protocol round-trip
claude mcp add fxabsolute -- node "$PWD/src/index.js"

Related MCP server: FinClaw

Where the data comes from

In order:

  1. FXA_DATA_DIR — an explicit directory of .bin files

  2. ../public/data — automatic when running inside the checkout

  3. FXA_ORIGIN (default https://www.fxabsolute.com) — fetched once per instrument and cached under ~/.cache/fxabsolute-mcp, so it works from any machine

~38 MB per instrument, downloaded lazily and only once.

Tools

Tool

What it answers

fxa_instruments

What's available, how many bars, what fields exist

fxa_candles

Raw OHLC over a date range at any timeframe M1–W1

fxa_session_scan

Specific bars of a trading session across months, summarised

fxa_bucket_stats

Movement grouped by hour / weekday / month / year

fxa_level_touches

Whether a price level actually held, and the reaction it produced

Live chart bridge

Tool

Purpose

fxa_connect_chart

Pair with an open chart using the code in its AI tab

fxa_wait_for_message

Block until the trader types or speaks; returns their words + chart state

fxa_reply

Answer into their chart panel

fxa_set_thinking

Show the thinking indicator during a long lookup

fxa_disconnect_chart

Leave the session

A trader opens the backtester, switches to the AI tab, and reads out the six-character code. Their agent calls fxa_connect_chart, then loops on fxa_wait_for_message → answer → fxa_reply. The site holds no API key and pays for no inference — every trader brings their own agent.

Each message carries a snapshot of the chart: instrument, timeframe, replay position, the current candle, every drawing as real geometry (height in pips, bars spanned, slope per bar, fib levels, whether price sits inside a box), open trades and running performance. The agent reads numbers, so it can check a claim with fxa_session_scan instead of guessing from an image.

Transport is a Supabase Realtime broadcast channel, so the browser and the agent need not be on the same machine — a chart on a phone pairs with a terminal on a laptop. Credentials come from /bridge-config.json on the site, which carries only the publishable key already present in every visitor's browser bundle, so pairing needs no setup.

The replay position is included with a note telling the agent not to reveal bars the trader has not reached. Backtesting is worthless if the assistant spoils the future.

The motivating query — the first 5-minute candle of the New York session, every day, for six months — is one call:

{ "instrument": "SPX500", "session": "nyse", "timeframe": "M5",
  "bars": [1], "from": "2024-01-01", "to": "2024-07-01" }

Two things worth knowing

There is no volume. The binary format is 20 bytes per candle: uint32 timestamp plus four float32 OHLC values. Volume was never stored, so no tool reports it and none invents a proxy silently — rangePips is offered instead, and every relevant response says so. Adding real volume means re-fetching all ~543 MB from Dukascopy into a wider record format.

Timeframes are bucketed on wall-clock time, not by array index. The browser chart aggregates every N bars, which is right for bar-by-bar replay but drifts for analysis: forex data has weekend and holiday gaps, so the Nth group of 60 M1 bars stops lining up with a real clock hour and an "H1 candle" can straddle a weekend. Here, bars are bucketed on floor(ts / period), so every bar sits on a true boundary and gaps produce no bar rather than a synthetic one.

Session windows are evaluated in exchange-local time with daylight saving resolved to the second, so "the 09:30 bar" is the 09:30 bar in both January and July rather than drifting an hour each spring.

fxa_session_scan also reports coverage: how many weekdays in the window produced no data at all. This matters more than it sounds — SPX500 is missing about 19% of weekdays in the first half of 2024, and without the warning a scan over that period returns clean-looking statistics built on a fifth less data than you asked for.

Available Tools

10 tools
fxa_bucket_statsA

Group every bar in a window by hour of day, day of week, month or year, and report how much each bucket moves. Answers "which hour is actually worth trading" and "is Monday different" in one call. Ranked by average bar range, since volume is not available.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
groupByNoDefault hour.
timezoneNoIANA zone for the buckets, e.g. America/New_York. Default UTC.
timeframeNoDefault H1.
instrumentYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses a key limitation (volume is not available) and explains the ranking metric (average bar range). However, it does not mention the output structure, possible side effects, or confirm that it is read-only.

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?

Two sentences, the first clearly states the core behavior, the second frames the use cases. No redundant words, front-loaded with the most important information.

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?

Provides moderate context for a moderately complex aggregation tool, but lacks return structure details (e.g., whether it returns a list, what fields are included). Since there is no output schema, the description should clarify the output shape to be more complete.

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

Parameters2/5

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

Schema description coverage is only 50%, covering groupBy and timezone. The description adds the concept of a 'window' and references the grouping dimensions, but it does not explain to, from, timeframe, or instrument. At this coverage level, the description should compensate more, yet it adds minimal parameter-specific meaning.

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?

Directly states it groups bars by time unit (hour, day of week, month, year) and reports their movement. The explicit questions it answers ("which hour is actually worth trading", "is Monday different") clearly distinguish it from sibling tools like fxa_candles or fxa_session_scan.

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?

Implies usage for time-based pattern analysis by stating it answers specific trading questions in one call. It gives clear context on when to use, but does not explicitly mention alternatives or when not to use this tool.

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

fxa_candlesA

Fetch OHLC candles for an instrument over a date range, at any timeframe from M1 to W1. Higher timeframes are aggregated from M1 on true clock boundaries. Returns the most recent bars when the range exceeds the limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date YYYY-MM-DD (exclusive)
fromNoISO date YYYY-MM-DD (inclusive)
limitNoMax bars to return, capped at 1000. Default 200.
timeframeNoM1, M5, M15, M30, H1, H4, D1, W1. Default M5.
instrumentYese.g. EURUSD, XAUUSD, SPX500, BTCUSD

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable details beyond the schema: higher timeframes are aggregated from M1 on true clock boundaries, and it returns the most recent bars when the range exceeds the limit. This gives the agent realistic expectations about data generation and edge-case behavior.

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

Conciseness5/5

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

The description is three sentences with no wasted words. It front-loads the core purpose in the first sentence, then adds two concise, high-value behavioral notes. Every sentence earns its place and the structure is easy to scan.

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

Completeness4/5

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

Given the tool's moderate complexity, the description covers the primary input space (instrument, date range, timeframe), key behavioral rules (aggregation and limit overflow), and the expected output concept (OHLC candles). The absence of an output schema is partially mitigated by the 'OHLC candles' context. It could perhaps mention ordering or timezone, but it is reasonably complete for a fetch tool.

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 the schema already documents all five parameters. The description adds some high-level context (e.g., 'over a date range', 'any timeframe from M1 to W1') but does not introduce new parameter-level details that are absent from the schema. It effectively reinforces, rather than expands on, 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 states the tool fetches OHLC candles for an instrument over a date range, with explicit timeframe support from M1 to W1. It uses a specific verb ('Fetch') and resource ('OHLC candles') that distinguishes it from sibling tools like fxa_level_touches or fxa_bucket_stats.

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 the primary use case (fetching candle data for an instrument over a time range) but does not explicitly state when to prefer this tool over alternatives or mention any exclusions. It provides useful context about aggregation and limit behavior but lacks direct comparative guidance.

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

fxa_connect_chartA

Pair with a trader's open FXAbsolute chart using the code shown in the AI tab of the backtester. Once connected, the trader can type or speak to you and you answer in their chart panel. Call this when the user gives you a pairing code, e.g. "connect to fxabsolute with code AB3K9P".

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe 6-character pairing code from the chart.
agentNameNoHow to identify yourself in the trader's panel, e.g. "Claude Code".

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the result of pairing ('the trader can type or speak to you and you answer in their chart panel') and the code source, but does not mention permissions, failure modes, or connection lifecycle, leaving 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?

Two concise sentences: first states the action and source, second explains consequence and trigger. Every sentence earns its place 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?

For a simple connection tool with 2 params and no output schema, the description covers what it does, when to call, and the resulting state. It lacks explicit return/error info but is reasonably complete for the scenario.

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 coverage is 100%, so baseline is 3. The description's example reinforces the 'code' parameter but adds no new meaning beyond the schema, and agentName is left as-is.

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 ('Pair') and resource ('trader's open FXAbsolute chart'), and includes an example call. It clearly states the action and trigger, making it distinct from sibling tools like fxa_disconnect_chart.

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?

Explicitly states when to call: 'Call this when the user gives you a pairing code' with a concrete example. It provides clear usage context but does not discuss exclusions or alternatives, so it stops short of a 5.

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

fxa_disconnect_chartA

Leave the paired chart session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It only states the action without explaining side effects (e.g., whether the remote peer is notified), whether it requires a prior connection, or what happens if called without an active session.

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 short sentence with no filler or redundancy. It conveys the essential purpose efficiently, which is ideal for a tool of this simplicity.

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 trivial zero-parameter disconnect operation, the description is mostly adequate but lacks behavioral context such as error conditions or whether the session is guaranteed to be released. It does not explain return values, though no output schema exists. Overall, it meets minimum viability but leaves room for improvement.

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 zero parameters, so the baseline is 4. The description does not need to explain parameter meanings, and the empty schema fully covers this aspect.

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 clear verb ('leave') and a specific resource ('paired chart session'), making the action unambiguous. It also naturally distinguishes from sibling tool fxa_connect_chart, as it is the inverse operation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites like an active session, nor does it name alternative tools for similar operations, leaving the agent to infer context.

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

fxa_instrumentsA

List every instrument FXAbsolute has candle data for, with bar counts and pip size. Call this first if you are unsure what is available. Also states plainly which fields exist — notably, this dataset has no volume.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses a key data limitation ('this dataset has no volume') and implies a read-only operation through 'List', which is valuable behavioral context beyond the schema.

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 just two sentences: the first states the core purpose and output, the second adds usage guidance and a data caveat. Every sentence earns its place, with no 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?

For a zero-parameter tool with no output schema, the description fully explains what the tool returns (instrument list with bar counts and pip size) and provides a notable data caveat. It is complete for an agent to decide when and how to use it.

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 zero parameters, so the input schema is empty. The description doesn't need to explain parameters, and the baseline for zero-parameter tools is 4. The description's focus on output and data caveats 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 the specific verb 'List' and clearly identifies the resource ('every instrument FXAbsolute has candle data for') with output details (bar counts, pip size). This distinguishes it from sibling tools like fxa_candles, making its purpose unmistakable.

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 explicitly advises calling this tool first when unsure of available data, providing a clear usage context. It does not mention exclusions or alternatives, but the guidance is direct and actionable.

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

fxa_level_touchesA

Test whether a price level actually held. Finds every time price reached the level, de-duplicates clustered touches, and measures the reaction that followed. This is the numeric version of asking whether a horizontal line on the chart is respected.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
priceYesThe level to test.
timeframeNoDefault M15.
instrumentYes
includeRowsNoDefault 40.
tolerancePipsNoHow close counts as a touch. Default 5.
separationBarsNoMinimum bars between distinct touches. Default 4.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden. It discloses the algorithm: finds touches, de-duplicates cluster, and measures reaction. This goes beyond a simple 'tests levels' and provides meaningful behavioral detail, though it omits output format specifics.

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. The first sentence front-loads the core purpose, the second adds process detail, and the third uses a useful analogy. No unnecessary 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?

Given 8 parameters and no output schema, the description explains the concept well but lacks explicit return-value specification. 'Measures the reaction' is vague; the agent doesn't know what numeric output to expect. Time range parameters (from/to) are not addressed, leaving some completeness 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?

Schema coverage is 63%, and the description adds context for key parameters: 'de-duplicates clustered touches' explains separationBars, and 'how close counts' relates to tolerancePips. It doesn't explain to/from but the schema already has no descriptions for those, so the description partially compensates.

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: 'Test whether a price level actually held' with a specific verb and resource. It also explains the process (finds touches, de-duplicates, measures reaction), making it distinct from siblings like candle retrieval or session scanning.

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?

Usage is implied ('when you want to test a price level') but no explicit alternatives or when-not scenarios are mentioned. The description doesn't contrast with sibling tools, so the agent must infer applicability from the purpose.

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

fxa_replyA

Send your answer back to the trader's chart panel. Keep it short and concrete — it renders in a narrow side panel next to the chart, not a terminal.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe message to show the trader.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosure. It provides useful context about the narrow side panel and the need for brevity, but omits potential side effects, prerequisites (e.g., whether a chart connection is required), or error behavior.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and every clause adds meaning. It is concise and well-structured 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?

For a simple tool with a single string parameter and no output schema, the description covers the essential aspects: purpose, destination, and formatting constraints. It could mention what happens after sending, but this is not critical for such a straightforward operation.

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 schema already defines the 'text' parameter, but the description adds valuable guidance on the expected format (short and concrete) and the rendering context, which directly informs how the parameter should be populated.

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 sends a reply to the trader's chart panel. It uses the specific verb 'answer back' and identifies the destination, distinguishing it from sibling tools like fxa_connect_chart or fxa_wait_for_message.

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 implies the tool is for responding to the trader and explicitly instructs to keep the message short and concrete, with a note about the narrow panel. However, it does not explicitly mention when not to use it or name alternatives, though sibling context helps.

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

fxa_session_scanA

Pull specific bars out of a trading session across a whole date range, and summarise them. Example: the first 5-minute candle of the New York session every day for six months (instrument SPX500, session nyse, timeframe M5, bars [1]). Session windows are evaluated in exchange-local time with daylight saving handled, so results do not shift by an hour in summer. Use this instead of pulling raw candles and filtering them yourself.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date YYYY-MM-DD
barsNoWhich bars of the session to take, 1-based (1 = the opening bar). Use ["all"] for every bar in the session. Default [1].
fromNoISO date YYYY-MM-DD
sessionNoOne of: sydney, tokyo, london, newyork, nyse, overlap. "nyse" is the 09:30–16:00 New York cash session; "newyork" is the wider 08:00–17:00 FX session.
timeframeNoDefault M5.
daysOfWeekNoOptional filter, e.g. ["Monday","Friday"] or [1,5].
instrumentYes
includeRowsNoHow many individual rows to return alongside the summary. Default 50.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description adds valuable behavioral context: session windows are evaluated in exchange-local time and daylight saving is handled, preventing hour shifts. However, it does not disclose return format or summary contents, which would be important for a summarizing tool, but the disclosed behavior is meaningful.

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 concise (three sentences) and well-structured: action, example, DST behavior, then alternative usage. Each sentence earns its place with no 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?

No output schema exists, and the description does not explain what the summary consists of or how includeRows affects output. This is a notable gap for a tool whose core purpose is summarization, though the example and parameter descriptions provide enough context for basic invocation.

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

Parameters4/5

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

Schema coverage is 88%, but the description enhances parameter understanding with a concrete example that clarifies relationships: 'bars [1]' means the opening bar, session 'nyse' is the cash session, and timeframe 'M5' is specified. This adds meaning beyond the schema's field descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Pull specific bars out of a trading session' and specifies the resource (trading session data) with a summarization output. It distinguishes from sibling fxa_candles by emphasizing summarization and pre-filtered session bars.

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 explicitly says 'Use this instead of pulling raw candles and filtering them yourself,' naming the alternative and giving clear guidance on when to prefer this tool. The example and DST/Exchange-local-time note further define appropriate usage conditions.

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

fxa_set_thinkingA

Show or hide the thinking indicator in the trader's panel. Call with on:true before a long lookup so they know you are working. fxa_reply clears it automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
onYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It discloses that the indicator is automatically cleared by fxa_reply, which is a useful behavioral trait beyond the raw toggle. It could specify whether on:false also clears the indicator, but the phrase 'Show or hide' implies both states.

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 three sentences, each adding value: the action, the call pattern, and the clearing behavior. No filler 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?

The tool is a simple boolean setter with no output schema. The description covers its purpose, usage context, and interaction with fxa_reply, making it complete for an agent to select and call 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 0% (the 'on' property has no description in the schema), so the description must compensate. It gives a concrete example ('on:true') and the first sentence clarifies that true means show and false means hide, though not explicitly stated. For a single boolean parameter, this is adequate.

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 'Show or hide the thinking indicator in the trader's panel,' which precisely identifies the action and target. This clearly distinguishes it from sibling tools like fxa_candles or fxa_reply, none of which manage this indicator.

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 explicitly instructs to 'Call with on:true before a long lookup,' establishing a clear when-to-use scenario. It also mentions 'fxa_reply clears it automatically,' providing an interaction note with a sibling tool, though it does not explicitly enumerate exclusions.

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

fxa_wait_for_messageA

Wait for the trader's next message on the paired chart. Blocks until they send something or the timeout expires. Returns their text plus a structured snapshot of the chart at the moment they asked — read that instead of asking them to describe what they are looking at. Returns waiting:false when nothing arrived, in which case call it again to keep listening.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutSecNoHow long to wait, 5–600 seconds. Default 240.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses blocking behavior ('Blocks until...'), timeout handling, and return semantics ('Returns waiting:false when nothing arrived'). It also explains the structured snapshot, which is a key behavioral outcome.

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, each earning its place: the core action, the return value, and the recommended follow-up action. Front-loaded with the primary purpose, no fluff or repetition.

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 simplicity (one parameter, no output schema), the description adequately covers all essential aspects: what it does, what it returns (text + snapshot, waiting flag), and how to handle the no-message case. No significant gaps remain.

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 input schema already fully documents timeoutSec with range and default ('How long to wait, 5–600 seconds. Default 240.'). The description adds no additional parameter-specific meaning, so the baseline score of 3 applies.

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 action: 'Wait for the trader's next message on the paired chart' with a specific verb and resource. It distinguishes itself from sibling tools like fxa_reply (sending) and fxa_connect_chart (connecting) by focusing on the waiting/blocking behavior.

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 useful context on how to use the result ('read that instead of asking them to describe what they are looking at') and instructs to 'call it again to keep listening' when waiting:false. Though it doesn't explicitly name alternatives, the sibling list makes the intended use clear.

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

TDQS

A4.2/5.0
Disambiguation5/5

Each tool serves a distinct purpose: data retrieval (instruments, candles), analysis (session_scan, bucket_stats, level_touches), and chart communication (connect, disconnect, wait_for_message, reply, set_thinking). No two tools overlap; even candles and session_scan are explicitly differentiated, with session_scan described as a higher-level alternative to manual filtering.

Naming Consistency4/5

All tool names share the fxa_ prefix and use snake_case, providing clear brand consistency. However, data tools are named as noun phrases (instruments, candles, bucket_stats), while interaction tools use verb phrases (connect_chart, reply), which is a minor inconsistency but still predictable by function.

Tool Count5/5

With 10 tools, the server is well-scoped for its stated purpose of FX data analysis and chart interaction. The count is within the ideal 3-15 range, and each tool contributes a meaningful capability without unnecessary bloat.

Completeness5/5

The tool set covers the full workflow of a trader using FXAbsolute: discovering available instruments, fetching OHLC data, performing session-based and time-based analysis, testing price levels, and communicating through a paired chart. There are no obvious gaps for the intended use case, as all necessary read and interaction operations are present.

Maintenance

ActivityMaintained
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

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides AI agents with financial tools including real-time quotes, backtesting, technical analysis, and multi-exchange data via a simple CLI interface.
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that exposes the Backtest360 backtesting engine API as tools, enabling AI agents to conversationally discover indicators, build and validate strategies, run backtests, and read results.
    14
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP server that bridges AI coding agents with MetaTrader 5 for inspection, market data, MQL5 development, compiling, Strategy Tester review, workspace sync, logs, audit trails, demo trading, and carefully gated live trading.
    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/varsansri/fxabsolute-mcp'

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