Skip to main content
Glama

vfat Metrics MCP

A read-only Model Context Protocol server for querying public vfat Metrics position data by EVM address. It gives MCP clients structured access to current vfat/Sickle positions, NFT lifecycle actions, historical value and performance series, CSV exports, and a compact portfolio summary.

This is an independent community project. It is not affiliated with or endorsed by vfat, Sickle, or their contributors.

Tools

Tool

Purpose

get_vfat_positions

Return every current position and the provider's position fields

get_vfat_position

Find one position by NFT/token ID

get_vfat_portfolio_summary

Count positions by chain/protocol and aggregate selected USD metrics

get_vfat_position_actions

Group deposits, rebalances and other events by transaction

get_vfat_position_value_history

Return historical value, token balances and range state

get_vfat_position_performance

Return APR, ROI, PnL and balance time series

export_vfat_position_csv

Export actions, value history or performance as CSV text

Every tool is declared read-only and idempotent. The server cannot sign messages, submit transactions, rebalance liquidity, or move funds.

Related MCP server: MTRKR MCP Server

Requirements

  • Node.js 20 or newer

  • An MCP client such as Codex, Claude Desktop, or another MCP-compatible agent

  • Internet access to https://info-api.vf.at

No API key is required.

Install and run

From a checkout:

npm install
npm run build
node dist/index.js

For development:

npm run dev

The default transport is stdio. The process writes protocol messages to stdout and diagnostics to stderr.

Codex configuration

Build the project, then add it to ~/.codex/config.toml:

[mcp_servers.vfat_metrics]
command = "node"
args = ["/absolute/path/to/vfat-metrics-mcp/dist/index.js"]

Restart Codex after changing MCP configuration. You can then ask, for example:

Show and summarize the current vfat positions for <EVM_ADMIN_ADDRESS>.

Analyze rebalance costs and cashflows for the position identified by <CHAIN_ID>, <SICKLE_ADDRESS>, <NFT_ID>, and <NFT_MANAGER_ADDRESS>.

Claude Desktop configuration

{
  "mcpServers": {
    "vfat-metrics": {
      "command": "node",
      "args": ["/absolute/path/to/vfat-metrics-mcp/dist/index.js"]
    }
  }
}

Streamable HTTP

For local development or a trusted private network:

npm run build
node dist/index.js --http
  • MCP endpoint: http://127.0.0.1:3000/mcp

  • Health endpoint: http://127.0.0.1:3000/health

HTTP mode is stateless. Do not expose it publicly without authentication, TLS, request limits, and a suitable reverse proxy. Configure it with MCP_HTTP_HOST, MCP_HTTP_PORT, or MCP_TRANSPORT=http.

Data and precision

The server reads public endpoints used by the vfat Metrics website:

GET https://info-api.vf.at/open-positions-v2?admin_address=<address>
GET https://info-api.vf.at/sickle-nft-actions?...position identity...
POST https://info-api.vf.at/historical-underlying-assets
GET https://info-api.vf.at/position-performance-history?...position identity...

The upstream endpoint is not documented as a stable public API and may change without notice. Raw position fields are passed through so new fields remain available. Portfolio totals use decimal.js; provider-supplied decimal strings are therefore summed without JavaScript binary floating-point addition.

USD values, PnL, ROI, APR, token prices, timestamps, range state, and rewards are provider-derived estimates. They may be delayed, incomplete, or calculated differently from on-chain state. Verify material decisions independently with on-chain reads and protocol contracts.

Position history

vfat can emit several raw rows for one transaction. get_vfat_position_actions groups them by transaction hash, selects the lifecycle action, sums provider cashflow fields with decimal arithmetic, and retains rewards and swaps. Set include_raw_events=true when an audit needs every provider row.

Value history follows NFT migrations and rebalances by discovering every token ID in the action chain before requesting historical underlying assets. Points at the same timestamp are aggregated into normalized token balances, USD values, and one in_range state.

All history tools accept optional inclusive from and to ISO 8601 timestamps. Position identity fields are supplied at runtime and are never stored by the server.

CSV export

export_vfat_position_csv accepts dataset=actions, value_history, or performance. It returns UTF-8 CSV text plus structured metadata (filename, mime_type, and row_count). The CSV is built from the same normalized JSON returned by the history tools, making calculations reproducible without browser automation.

Configuration

Copy .env.example values into your process environment if you need overrides:

Variable

Default

Meaning

VFAT_METRICS_API_URL

https://info-api.vf.at

Upstream base URL

VFAT_METRICS_TIMEOUT_MS

15000

Request timeout in milliseconds

MCP_TRANSPORT

stdio

stdio or http

MCP_HTTP_HOST

127.0.0.1

HTTP bind address

MCP_HTTP_PORT

3000

HTTP port

Development

npm run check

This runs formatting checks, ESLint, TypeScript typechecking, unit tests, and a production build.

License

MIT

Available Tools

7 tools
export_vfat_position_csvExport vfat position CSVA
Read-onlyIdempotent

Exports transaction actions, position value history or performance history as RFC-style CSV text for reproducible analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOptional inclusive ISO 8601 timestamp with timezone
fromNoOptional inclusive ISO 8601 timestamp with timezone
nft_idYesNFT or position token ID
datasetYesDataset to export
chain_idYesEVM chain ID
nft_addressYesNFT position manager address
sickle_addressYesSickle account address

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint=false. The description adds return format ('RFC-style CSV text') and dataset options, but does not disclose further behavioral traits like response size, error handling, or authentication needs. No contradiction with 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 a single, well-structured sentence that front-loads the verb 'Exports' and delivers the key information without 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 tool with 7 parameters and no output schema, the description states the output format (CSV text) and the three dataset types, which is reasonably complete. However, it does not detail the CSV structure or edge cases, but the dataset enum provides necessary context.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters documented. The description repeats dataset options but does not add new meaning beyond the schema. Baseline 3 is appropriate since the schema handles parameter semantics.

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 purpose: exporting transaction actions, value history, or performance history as CSV text. It distinguishes itself from sibling 'get' tools by emphasizing CSV export for reproducible analysis, which differentiates it from likely JSON-returning functions.

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 'reproducible analysis' but does not explicitly state when to use this tool over alternatives or provide exclusions. It lacks direct references to sibling tools or when-not-to-use scenarios, leaving the user to infer.

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

get_vfat_portfolio_summarySummarize vfat portfolioA
Read-onlyIdempotent

Returns a compact cross-chain position count, protocol breakdown, range status and provider-derived USD totals for an EVM admin address.

ParametersJSON Schema
NameRequiredDescriptionDefault
admin_addressYesEVM admin/owner address used by vfat

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the read-only and non-destructive annotations, the description adds useful behavioral context: it is cross-chain (implying multiple network queries) and relies on a provider for USD valuations. No contradictions with annotations are present.

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, front-loaded sentence without redundancy. Every word contributes to conveying the tool's purpose and output composition.

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?

With no output schema, the description lists the returned components but does not detail the exact structure or format (e.g., how range status is represented). It is adequate for a compact summary tool but leaves some ambiguity about the response shape.

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 schema provides complete documentation for the single parameter (admin_address) with pattern and description. The tool description adds no additional parameter semantics, so a baseline score of 3 is appropriate given the high schema coverage.

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 a specific verb ('Returns') and resource ('compact cross-chain position count, protocol breakdown, range status and provider-derived USD totals'). It distinguishes itself from sibling tools that focus on individual positions or actions by highlighting the cross-chain aggregate 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?

Usage is implied through the word 'summary' and the compact nature of the output, suggesting use for a high-level overview. However, the description does not explicitly state when to use this tool over siblings like get_vfat_positions or get_vfat_position, nor does it mention any exclusions.

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

get_vfat_positionGet one vfat positionA
Read-onlyIdempotent

Finds a single position by NFT/token ID among the positions reported for an EVM admin address.

ParametersJSON Schema
NameRequiredDescriptionDefault
token_idYesNFT or position token ID
admin_addressYesEVM admin/owner address used by vfat

TDQS

A3.9/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 the safety profile. The description adds the scoping constraint (positions reported for an EVM admin address) but does not disclose return format, error behavior, or pagination, which is acceptable given the simple read-only nature.

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, front-loaded sentence with no redundant words. It efficiently conveys the tool's purpose and scope without waste.

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 simple 2-parameter lookup with rich annotations (read-only, idempotent) and no output schema, the description is complete. It explains what the tool does, the key inputs, and the context (position for an EVM admin address), which is sufficient for an agent to select and invoke it correctly.

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 thoroughly documents both parameters. The description adds marginal context by linking token_id to the admin address (position found 'among the positions reported' for that address), but the schema already provides the essential semantics.

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 finds a single position by NFT/token ID for a given EVM admin address. It uses a specific verb ('Finds') and resource ('position'), and the scope ('among the positions reported for an EVM admin address') distinguishes it from siblings like get_vfat_positions (plural) and get_vfat_position_actions.

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: use when you have a specific token ID and admin address to retrieve one position. However, it does not explicitly mention when not to use it or name alternative tools (e.g., get_vfat_positions for all positions), so it lacks explicit when/when-not guidance.

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

get_vfat_position_actionsGet vfat position actionsA
Read-onlyIdempotent

Returns transaction-grouped lifecycle actions for one vfat/Sickle NFT position, including deposits, rebalances, cashflows, token deltas, dust, rewards and swaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOptional inclusive ISO 8601 timestamp with timezone
fromNoOptional inclusive ISO 8601 timestamp with timezone
nft_idYesNFT or position token ID
chain_idYesEVM chain ID
nft_addressYesNFT position manager address
sickle_addressYesSickle account address
include_raw_eventsNoInclude every raw provider event in each transaction group

TDQS

A4/5.0
Behavior3/5

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

Annotations already cover the read-only, idempotent, and non-destructive nature. The description adds useful detail about the content (lifecycle actions) but does not disclose additional behavioral aspects like pagination, ordering, or error cases. With annotations present, this is acceptable 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 a single clear sentence, front-loaded with the main action and resource, and includes a concise list of included action types. No fluff or 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 tool with 7 parameters and no output schema, the description gives a solid summary of what the tool returns but does not specify the return structure (e.g., array vs object, grouping format) or any default behavior for time filters. It is adequate but not fully complete.

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 provides 100% coverage with descriptions for all parameters. The tool description itself does not add any extra meaning beyond the schema, so 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 clearly states the tool returns transaction-grouped lifecycle actions for a single vfat/Sickle position, listing specific action types (deposits, rebalances, etc.), which distinguishes it from sibling tools like get_vfat_position_value_history or get_vfat_portfolio_summary.

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 provides clear context that this tool is for a single NFT position's actions, implying use when detailed transaction history is needed. However, it does not explicitly mention alternatives or exclusion cases, so it falls 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.

get_vfat_position_performanceGet vfat position performanceA
Read-onlyIdempotent

Returns a chronological APR, ROI, PnL, realized PnL and balance time series for one vfat/Sickle NFT position.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOptional inclusive ISO 8601 timestamp with timezone
fromNoOptional inclusive ISO 8601 timestamp with timezone
nft_idYesNFT or position token ID
chain_idYesEVM chain ID
nft_addressYesNFT position manager address
sickle_addressYesSickle account address

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds value by specifying the exact metrics returned (APR, ROI, PnL, realized PnL, balance) and the chronological time series nature, which is useful context beyond 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?

The description is a single, well-structured sentence that front-loads the core purpose ('Returns...') and packs all essential information without unnecessary words. Every phrase contributes to understanding the tool.

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 read-only tool with a full schema (6 params, all described) and strong annotations, the description sufficiently explains the tool's purpose and output content. It could mention the structure of the time series (e.g., array of objects) but is otherwise complete given the schema and annotations.

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 baseline is 3. The description adds no additional parameter-level semantics beyond what the schema already provides, such as the role of from/to in filtering the time series. It relies entirely on the schema for parameter 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?

The description clearly states the tool 'Returns a chronological APR, ROI, PnL, realized PnL and balance time series for one vfat/Sickle NFT position.' This is a specific verb+resource with a clear scope (one position) and distinguishes it from siblings like portfolio summary (multi-position) and position value history (value-only).

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 by specifying 'for one vfat/Sickle NFT position,' which suggests this is for a single position's performance over time. However, it does not explicitly mention alternatives or when not to use it, leaving the agent to infer distinctions from sibling names.

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

get_vfat_positionsGet vfat positionsA
Read-onlyIdempotent

Returns all current vfat/Sickle positions reported for an EVM admin address, including provider metrics and underlying position fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
admin_addressYesEVM admin/owner address used by vfat

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful context about the return content ('provider metrics and underlying position fields') and scope ('all current'), which goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the main action and resource. It includes enough detail without wasting words, making it easy to parse and understand.

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 a simple input (one parameter with full schema coverage), strong annotations, and no output schema. The description provides a clear scope and hints at the data returned, which is sufficient for a list-type read operation. It could be more explicit about the return format, but given the simplicity, it is adequately complete.

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 fully describes the single parameter with a pattern and a clear description ('EVM admin/owner address used by vfat'). The description text repeats the notion of an EVM admin address but does not add new parameter semantics, so a baseline score 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 clearly states the verb 'Returns' and the specific resource 'all current vfat/Sickle positions reported for an EVM admin address'. It also elaborates on the content ('including provider metrics and underlying position fields'), which distinguishes it from sibling tools like get_vfat_position (singular) and portfolio summary.

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 implicitly communicates its use case by emphasizing 'all current positions', which differentiates it from more focused tools. However, it does not explicitly mention alternatives or when not to use it, 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.

get_vfat_position_value_historyGet vfat position value historyA
Read-onlyIdempotent

Returns a chronological time series of position value, normalized underlying token balances and in-range status across NFT migrations and rebalances.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOptional inclusive ISO 8601 timestamp with timezone
fromNoOptional inclusive ISO 8601 timestamp with timezone
nft_idYesNFT or position token ID
chain_idYesEVM chain ID
nft_addressYesNFT position manager address
sickle_addressYesSickle account address

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond the read-only/idempotent annotations by explaining the output is a chronological time series and spans migrations/rebalances. It does not contradict annotations, but it could disclose details like pagination or data availability limitations.

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, front-loaded sentence that is clear and free of redundant information. Every phrase contributes to understanding the tool's output and scope.

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 no output schema, the description adequately explains the return values (position value, token balances, in-range status) and the historical scope across migrations. It could be more detailed about time range handling, but the schema covers parameters and the description is sufficient for a read-only 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 parameters are already fully documented. The description does not add significant meaning to parameters, but it aligns with the high coverage baseline without needing to compensate.

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 returns a chronological time series of position value, normalized token balances, and in-range status across migrations and rebalances. It uses a specific verb and resource, and the scope differentiates it from siblings like get_vfat_position (current state) and get_vfat_position_performance (performance metrics).

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 historical value tracking across migrations/rebalances, but it does not explicitly state when to use this tool over alternatives or provide exclusions. It gives context but lacks direct comparison to sibling tools.

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.

  1. 7 tool updatesv0.2.0
    • First observedexport_vfat_position_csv
    • First observedget_vfat_portfolio_summary
    • First observedget_vfat_position
    • First observedget_vfat_position_actions
    • First observedget_vfat_position_performance
    • First observedget_vfat_position_value_history
    • First observedget_vfat_positions

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct aspect: portfolio summary aggregates across chains, positions list all, position finds one, actions provide lifecycle events, value history and performance provide different time series, and export handles CSV output. No two tools overlap in purpose.

Naming Consistency5/5

All tools follow a consistent verb_vfat_noun pattern: get_ or export_ prefix, vfat_ domain marker, and a specific resource or metric. Singular/plural forms are used logically for list vs. single item.

Tool Count5/5

Seven tools is well-scoped for a DeFi metrics server, covering summary, list, detail, history, performance, and export without excess. Each tool earns its place.

Completeness5/5

The toolset covers the full read-only analytics surface for vfat positions: portfolio-level summary, position listing, detail lookup, transaction actions, value history, performance metrics, and CSV export. No obvious gaps for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Self-custodial crypto portfolio and DeFi MCP server. Read balances and positions (Aave, Compound, Morpho, Uniswap V3, Lido, EigenLayer) across Ethereum, Arbitrum, Polygon, and Base, and prepare transactions for approval on a Ledger via WalletConnect.
    100
    1,066 npm
    4
    Business Source 1.1
  • A
    license
    A
    quality
    D
    maintenance
    A read-only MCP server connecting AI agents to MTRKR wallet intelligence on MegaETH, enabling wallet portfolio, DeFi positions, security scanning, and transaction analytics.
    14
    10 npm
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server exposing Polymarket's public prediction-market data. Search markets, read live odds and order books, pull historical probability time-series, and inspect public wallet positions.
    14
    MIT