Skip to main content
Glama
TillaCrypto

tilla-mcp

Official

TILLA

Market data for people building trading models, bots and AI agents: crypto, US stocks and ETFs, FX, indices, commodities, rates and macro on one 1-minute clock, plus data from a Bitcoin node I run myself.

This repo is everything you need to start, free: a live terminal dashboard that keeps a local copy of the data in sync, an MCP server so your AI agent can pull the data itself, and three short examples.

Site: https://tillacrypto.com · Docs: https://tillacrypto.com/docs · X: @TillaCryptoHub

Get a free key (no account, no card)

curl -X POST https://api.tillacrypto.com/v1/demo_key

Or sign up at https://tillacrypto.com for a free key tied to your account.

Related MCP server: x402 crypto market structure

Your first call

curl -H "X-API-Key: tk_live_YOUR_KEY" "https://api.tillacrypto.com/v1/free/raw/1min?series=btc_close,eth_close&limit=5"

Every bar is labelled by its close, in UTC. A value a source never published stays empty; nothing is guessed.

What's in here

Folder

What it does

starter/

tilla_dashboard.py - one command keeps a SQLite copy current: resume what you missed, tick every new bar, heal values a source corrected later. Standard library only.

mcp/

tilla_mcp.py - the MCP server for Claude, Cursor or any MCP client

examples/

three short scripts: your first call, every coin's close in one call, a day of data into pandas

cd starter
python tilla_dashboard.py --keep tilla.db

The three calls the dashboard is built on

  • Tick - GET /v1/<tier>/tick - every series your plan holds for the bar that just closed, in one answer

  • Resume - GET /v1/<tier>/resume/<layer>/<lane>?since=... - every bar since you stopped, streamed

  • Heal - GET /v1/<tier>/changes?since=... - every value corrected since a time, so your copy gets the fix

Plans

Free forever with no card. Paid plans add more markets, more history and more clocks: https://tillacrypto.com/pricing

Safe by design

  • Read-only. Everything here only reads market data from api.tillacrypto.com over HTTPS. Nothing places trades, touches a wallet or reads your other files.

  • Your key stays yours. It is read from your own .env or environment and sent only to the TILLA API. No key is in this repo, and .gitignore keeps .env out of any commit.

  • What gets written: only the SQLite file you name with --keep (the dashboard). The MCP server writes nothing.

  • Open code, MIT licensed. Read every line before you run it. The MCP server is one file: mcp/tilla_mcp.py.

Licence

The code is MIT (see LICENSE). The market data you pull with it is governed by your TILLA plan terms: https://tillacrypto.com/docs

Questions

I answer every message myself: https://tillacrypto.com/contact, or a DM on X. Issues on this repo are welcome too.

Available Tools

14 tools
tilla_aboutAbout TILLAA
Read-onlyIdempotent

What TILLA is, who it's for, and how to start. No API key needed.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered structurally. The description adds one genuinely useful behavioral fact beyond annotations: no API key is required to call it. It says nothing about the form of the response (text vs structured), which would matter with no output 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?

Two short front-loaded sentences with zero filler: the content of the tool first, the access precondition second. Nothing could be trimmed without losing information.

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 zero-param informational tool with no output schema, the description tells the agent what topic coverage to expect and that no credential is needed. The only missing piece is whether the result is prose/markdown or structured data, which would help an agent decide how to consume 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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No misleading param claims are present.

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?

States a specific, understandable purpose: what TILLA is, who it's for, and how to get started. It reads as an introductory/onboarding resource, which is clear enough to select, but it never distinguishes itself from the sibling tilla_docs, which plausibly covers overlapping documentation.

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?

'How to start' implies an onboarding use case, and 'No API key needed' hints that it's safe to call before authenticating. But there is no explicit when-to-use versus tilla_docs or tilla_status, and no stated exclusions.

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

tilla_changesCorrections since a timeA
Read-onlyIdempotent

Every value our checks repaired since since ('YYYY-MM-DD HH:MM:SS') that the key holds, with its value now - apply them and a kept copy stays correct. Pass the answer's until as the next since. Needs a key.

NameRequiredDescriptionDefault
sinceYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive, open-world operation. The description adds meaningful context beyond those annotations by disclosing the key requirement, the pagination pattern, and that applying the returned corrections keeps a kept copy correct.

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 compact and front-loads the returned content before explaining pagination and the key requirement. The phrase about applying corrections is purposeful but slightly indirect, keeping it short of maximally crisp.

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 one-parameter tool with rich safety annotations and no output schema, the description covers the key invocation details: timestamp format, pagination via `until`, and authentication. It could more explicitly describe the response envelope, but it is broadly complete for correct invocation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the parameter meaning. It does so by documenting the `since` format as 'YYYY-MM-DD HH:MM:SS' and by explaining that the response's `until` should be used as the next `since`, though it omits timezone or inclusivity details.

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

Purpose4/5

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

The description identifies a specific resource and scope: values repaired by checks since a given timestamp, with their current values. It is understandable as a corrections/changes feed, though it does not explicitly distinguish this tool from siblings such as tilla_latest or tilla_window.

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?

It provides useful invocation guidance for pagination by saying to pass the answer's `until` as the next `since`, and notes that a key is needed. However, it does not state when to choose this tool over the many sibling tools or when not to use it.

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

tilla_docsThe API manualA
Read-onlyIdempotent

The whole API manual in one call, no key needed: every call, every parameter, every plan, how paging, tick, resume, changes and bulk work. Read this first when you need to know how to do anything.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and open-world semantics, so the bar is lower. The description still adds real context: no API key is required, the response is the complete manual with no filtering, and it is authoritative enough to be read first. It stops short of describing the return format or size of the dump.

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 short sentences, zero waste. The scope claim is front-loaded and the usage instruction follows immediately, so the agent gets both 'what' and 'when' in the first read.

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 does the work of telling the agent what comes back (calls, parameters, plans, paging/tick/resume/changes/bulk behavior). The remaining gap is the response format and rough size — an agent can't tell whether it's getting markdown or JSON, or how large the payload is.

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 takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. Schema coverage is 100% on an empty object, and the description correctly signals that the call is argument-free.

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?

States a specific resource (the whole API manual) and enumerates its contents — every call, parameter, plan, and behavior (paging, tick, resume, changes, bulk). This clearly separates it from the data-returning siblings like tilla_tick or tilla_changes, which fetch live data rather than documentation.

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?

"Read this first when you need to know how to do anything" gives an explicit trigger condition for invoking the tool. It does not explicitly name the siblings as alternatives or state when not to use it, which keeps it 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.

tilla_healthIs every lane currentB
Read-onlyIdempotent

The newest bar of every lane on every layer - is the data current? No API key needed.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds one useful operational fact, 'No API key needed', which is authentication context not present in the annotations. It says nothing about cost, latency, or what the check actually returns.

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?

It is a single compact sentence with no filler, and the core question is front-loaded. The brevity comes at some cost, because the 'lane' and 'layer' vocabulary is never grounded.

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?

The absence of an output schema means the description should hint at what a health check returns, such as a per-lane currency verdict; it only poses the question. For a zero-parameter read tool the annotations carry most of the weight, but the jargon leaves a real gap.

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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.

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

Purpose3/5

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

The phrase 'is the data current?' together with the tool name 'tilla_health' signals a freshness or health check, but 'lane' and 'layer' are unexplained in-house jargon, so what exactly gets checked is unclear. It does not distinguish itself from close siblings such as tilla_status or tilla_latest.

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?

There is no explicit statement of when to call this tool instead of tilla_status, tilla_latest, or tilla_changes, and no precondition or exclusion is given. The agent must infer the routing from the title alone.

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

tilla_inventorySeries this key holdsA
Read-onlyIdempotent

Exactly what the caller's key holds. No arguments: every lane per layer with its series count. layer=raw|derived|node and lane=1min|hour|daily|...: every series name there. Call this before tilla_latest / tilla_window and use the names it returns. Needs TILLA_API_KEY.

NameRequiredDescriptionDefault
laneNo
layerNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world and non-destructive behavior, so the description adds genuine value beyond them: it discloses the TILLA_API_KEY auth requirement, that the no-argument call returns counts rather than names, and that the returned names are intended inputs to downstream calls. Return shape detail is described only loosely.

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?

Three short, front-loaded sentences organized by mode (no-arg, filtered, prerequisite) with no filler. The colon-heavy telegraphic style is compact but costs a little readability.

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 zero-required-param read tool with annotations and no output schema, the description covers what is returned (lanes per layer with series counts, or series names per layer/lane), the auth prerequisite, and downstream usage. Only the precise response structure is left implicit, which is a minor gap given the tool's simplicity.

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 description coverage is 0% and neither parameter has an enum, so the description carries the full burden — and it does supply the layer vocabulary (raw|derived|node) and the lane vocabulary (1min|hour|daily|...). It leaves the interaction between the two optional parameters (e.g., lane without layer) unstated, so it is not fully compensatory.

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 states a concrete resource — the inventory of series names available to the caller's API key — and distinguishes unfiltered mode (all lanes per layer with counts) from filtered mode (layer/lane selection listing series names). It is specific about what is enumerated, though the telegraphic phrasing makes the core verb ('lists series') implicit rather than stated outright.

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 gives explicit sequencing guidance — 'Call this before tilla_latest / tilla_window and use the names it returns' — which routes the agent correctly against two named siblings. It does not state when not to use it or what happens if names are already known, 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.

tilla_latestLatest barB
Read-onlyIdempotent

The newest bar of the named series on one lane. Needs TILLA_API_KEY.

NameRequiredDescriptionDefault
laneNo1min
layerNoraw
seriesYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld behavior, so the main behavioral gap is lower. The description adds useful auth context by stating that TILLA_API_KEY is required, but it does not describe error behavior, rate limits, or return characteristics.

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

Conciseness5/5

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

The description is two short, front-loaded sentences with no filler. The core purpose appears first, followed immediately by the API-key requirement.

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

Completeness2/5

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

This is a simple read tool with annotations, but the schema has 0% description coverage and there is no output schema. The description leaves the layer parameter undocumented and does not explain what a returned bar contains, which leaves meaningful gaps for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It mentions the named series and one lane, which maps to two parameters, but it says nothing about the layer parameter, its default, or allowed values.

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 states a specific resource and scope: the newest bar of a named series on one lane. It clearly identifies a read operation and avoids tautology, though it does not explicitly differentiate itself from siblings such as tilla_window or tilla_sample.

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

Usage Guidelines2/5

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

The description gives only a prerequisite (TILLA_API_KEY) and does not say when to use this tool versus siblings like tilla_window, tilla_sample, or tilla_tick. No when-not-to-use guidance or alternative selection criteria are provided.

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

tilla_marketOne whole marketA
Read-onlyIdempotent

One market in one call: every series of market (an id from tilla_markets, e.g. btc, nvda, eurusd, gold) the key holds on lane, on one clock. layer = raw | derived | node | deep | all. related=True adds its connected markets (btc: its ETFs and miners). period = 1d 7d 30d 2m 3m 6m 1y 2y 3y all. At most 200 columns an answer: series_next_offset names the next page. Needs TILLA_API_KEY.

NameRequiredDescriptionDefault
laneNo1min
layerNoraw
limitNo
marketYes
periodNo
relatedNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld and idempotent, so the bar is lower, yet the description adds real context: a TILLA_API_KEY is required, answers are capped at 200 columns, and `series_next_offset` signals the next page. It does not explain what the different layers actually return or how offset paging is driven, but the added operational context is well above baseline.

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?

Dense, front-loaded and nearly waste-free: the core promise comes first, then parameter semantics, then the pagination and auth constraints. Some fragmentary phrasing ('on one clock', 'At most 200 columns an answer') costs a little clarity.

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 6-parameter, open-world data read with no output schema, the description covers the essentials an agent needs to call it: required key, market id source, layer/period/related semantics, and pagination behavior. The uncovered items (valid lane values, the meaning of limit versus the 200-column cap, shape of returned series) are the remaining reasons it is not a 5.

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%, so the description must carry the load, and it does for most parameters: market (id source plus btc/nvda/eurusd/gold examples), layer (raw|derived|node|deep|all), period (full enum), and related (with the btc ETF/miner example). Gaps remain for `lane` (no valid values or meaning of the 1min default) and `limit` (its relation to the 200-column cap is never stated).

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?

States a concrete verb+resource: retrieves every series of one market across a lane in a single call, and implicitly distinguishes itself from tilla_markets by noting `market` is an id taken from that tool. The phrase 'on one clock' and the layer jargon slightly blur the exact payload, but an agent can tell what comes back at a high level.

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?

It gives a useful routing hint ('market is an id from tilla_markets') and explains when to set related=True, but says nothing about when to prefer this over close siblings like tilla_window, tilla_latest, or tilla_tick, which all sound like time-sliced data reads. Usage is implied rather than disambiguated.

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

tilla_marketsEvery marketA
Read-onlyIdempotent

Every market TILLA carries - crypto, US stocks and ETFs, FX, macro - with its category, its related markets, how many series each plan holds of it, and its lanes. No API key needed. Use the id with tilla_market.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely non-structured context: no API key is required, and it discloses the shape of each returned record (category, related markets, per-plan series counts, lanes).

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?

Front-loaded with the resource and scope, then the return fields, then the follow-up call. It is a single dense sentence whose embedded clause ('how many series each plan holds of it') reads awkwardly, but no sentence is filler.

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?

There is no output schema, so describing the per-entry fields is necessary and done here. Combined with the no-auth note and the handoff to tilla_market, an agent has enough to call it and use the result; only response size/pagination behavior is unstated, and 'every market' implies none.

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?

Zero parameters, so the baseline is 4. The description adds cross-tool semantics by naming `id` as the key to pass to tilla_market, which is useful even though it isn't a parameter of this tool.

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?

States a specific resource (every market TILLA carries) and enumerates the covered asset classes (crypto, US stocks/ETFs, FX, macro), plus what each entry includes. It is clearly distinguishable from the sibling tilla_market, which handles a single market, because the description tells the agent to take the `id` there.

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 routes to tilla_market via the returned `id`, giving a clear usage path. It doesn't state exclusions against other enumeration-ish siblings (tilla_inventory, tilla_tiers, tilla_sample), so the when-not is implied rather than stated.

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

tilla_sampleFree sample of a planA
Read-onlyIdempotent

The free sample of one plan (free, builder, pro or max), no key needed: how many series it holds on every lane, and one aligned 1-minute row of real values. The full one-tick files are at /v1/sample/.csv and .db (named in the answer's files).

NameRequiredDescriptionDefault
tierNofree

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real context: auth (‘no key needed’), that the response names full CSV/DB files in `files`, and that only one row is returned. It doesn't mention rate limits or what happens for an invalid tier, so not a 5.

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?

Two tight sentences that front-load the core purpose and then add the file-location detail. Every clause carries information, with only minor density in the path sentence.

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?

There is no output schema, and the description steps in to describe the return shape (series counts per lane, one aligned 1-minute row, a `files` field). For a single-optional-param read tool this is close to complete; only edge behavior for bad tiers 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 coverage is 0% and the single `tier` param has no enum, so the description carries the burden by enumerating the four valid values (free, builder, pro, max). It compensates well for the coverage gap, though it doesn't say what an invalid value does; a 4 rather than 5.

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 states a specific resource (‘the free sample of one plan’) and enumerates exactly what the response contains: series counts per lane plus one aligned 1-minute row. It's clear what the tool returns, though it doesn't name a specific sibling (e.g. tilla_tick) to explain why this is a sample rather than the full feed.

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?

‘no key needed’ implies a preview/unauth context and ‘the full one-tick files are at …’ hints at the boundary between sample and full data, but there is no explicit when-to-use / when-not / alternative named among the 13 siblings. Usage is implied rather than stated.

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

tilla_statusFeed statusA
Read-onlyIdempotent

The newest 1-minute bar and the tiers served. No API key needed.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is well covered. The description adds a useful auth detail—no API key needed—but does not mention rate limits, freshness guarantees, 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 short sentences: payload first, then the auth note. Both sentences add information and there is no filler.

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 zero-parameter read-only feed-status tool, the description covers the returned data and the API-key requirement, while annotations cover safety and idempotency. It could be stronger if it clarified why 'status' differs from sibling health/latest/tiers tools, but no critical calling information 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?

There are zero parameters, so there is no parameter meaning to explain, and schema description coverage is 100%. The baseline for a no-parameter tool is 4.

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 names the concrete payload—the newest 1-minute bar plus the tiers served—so an agent knows what data to expect. However, it does not state a verb or explicitly distinguish this from overlapping siblings like tilla_latest, tilla_tiers, or tilla_health.

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?

There is no when-to-use guidance or comparison to alternatives; the only condition given is 'No API key needed,' which is authorization information rather than a selection rule. The agent must infer that this is the feed-status check rather than one of the similar sibling tools.

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

tilla_tickEverything that just closedA
Read-onlyIdempotent

Your whole plan, live, in one call: every series the key holds on every lane that closed at a boundary (at = 'YYYY-MM-DD HH:MM', default the minute just closed). Per lane: bar, complete, series, values. Needs a key.

NameRequiredDescriptionDefault
atNo
lanesNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds real value beyond that: an auth prerequisite ('Needs a key'), the default time behavior, and the returned per-lane fields.

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?

Compact: one clause describing scope, a parenthetical for the time parameter, a short return-shape fragment, and a terse auth note. Front-loaded and free of filler, though the fragments are dense enough to require domain familiarity.

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 and 0% schema coverage, the description carries the full burden and covers the return field names, time format/default, and key requirement. It falls short on the `lanes` parameter's accepted format and on any indication of result volume or failure behavior.

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 0%, so the description must compensate. It does well for `at`, giving the exact format 'YYYY-MM-DD HH:MM' and the default ('the minute just closed'), but the `lanes` parameter is only obliquely referenced ('every lane that closed') and its syntax for selecting a subset is never explained.

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 concretely states what is returned: every series the key holds across all lanes that closed at a boundary, plus the per-lane shape (bar, complete, series, values). It is specific but uses domain jargon ('plan', 'lane', 'series') without definition and never names a sibling such as tilla_window or tilla_latest to differentiate scope.

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?

'In one call' hints this is the bulk/broad fetch versus narrower siblings, and the default 'minute just closed' implies the common call pattern. However, there is no explicit when-to-use, when-not-to-use, or named alternative, so routing between this and tilla_window/tilla_latest/tilla_sample is left to inference.

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

tilla_tiersPlans and limitsA
Read-onlyIdempotent

The public plans: price, history cap, request limits and size. No API key needed.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context the annotations do not: that no API key/authentication is required. It stops short of saying whether the data is static or cached.

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 short sentences with zero filler, and the most decision-relevant fact (what you get) is front-loaded before the auth note. Every clause 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?

For a zero-parameter, read-only public endpoint with no output schema, the description conveys enough to call it correctly and to know what the payload covers. Minor gap: it does not say how the tier data is structured or whether it changes over time.

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 takes zero parameters, so the baseline is 4; there is nothing the description needs to disambiguate, and schema coverage is 100%.

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?

Names the specific resource (public plans) and enumerates the fields returned: price, history cap, request limits and size. That is enough to distinguish it from siblings like tilla_usage or tilla_status, though it never states a verb ("returns" / "lists") and never explicitly contrasts with those siblings.

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?

"No API key needed" implies this is a safe, unauthenticated call an agent can make up front, but there is no explicit when-to-use or when-not-to-use guidance and no routing to alternatives such as tilla_usage or tilla_about. Usage is inferable rather than stated.

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

tilla_usagePlan and budgetA
Read-onlyIdempotent

The caller's plan and budget right now: tier, history days, limits, used today. Needs TILLA_API_KEY.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's real contribution is 'Needs TILLA_API_KEY' – an authentication prerequisite not captured by annotations, which is exactly the kind of context that matters. It also signals the data is current rather than cached, but says nothing about failure behavior if the key is missing or invalid.

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 short clauses with zero filler: the return contents come first, the auth prerequisite second. Every phrase carries information an agent needs.

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 correctly takes on the job of naming the returned fields, and with zero parameters and full annotation coverage there is little else required. It could still note the response shape or units (how 'limits' and 'used today' are expressed) for an agent that needs to parse the result.

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 takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description does not waste words on arguments, which is appropriate.

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?

States a specific resource ('the caller's plan and budget right now') and enumerates exactly what it returns: tier, history days, limits, used today. That field list separates it from siblings like tilla_tiers (presumably a tier catalogue) and tilla_status, though no sibling is named explicitly.

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 only implied: the mention of 'limits' and 'used today' suggests a quota/headroom check, and 'right now' implies a freshness-sensitive call. There is no explicit when-to-use, no when-not-to-use, and no routing to tilla_tiers or tilla_status as alternatives.

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

tilla_windowBars in a time rangeA
Read-onlyIdempotent

A window of bars. Name exactly what you want, one of: series = comma-separated names (at most 200) from tilla_inventory, or a pattern like 'btc_*' / '*_close'; or markets + fields ('btc,eth' + 'close,volume' -> btc_close, btc_volume, eth_close, eth_volume). layer = raw | derived | node | deep; lane = 1min, 5min, hour, daily, ... start/end = 'YYYY-MM-DD[ HH:MM[:SS]]' UTC inclusive, or period = 30d 2m 6m 1y all; no start = the newest bars. limit <= 50000. When more is true, call again with start = next_start. Needs TILLA_API_KEY.

NameRequiredDescriptionDefault
endNo
laneNo1min
layerNoraw
limitNo
startNo
fieldsNo
periodNo
seriesNo
marketsNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive open-world tool. The description adds meaningful context beyond that: `TILLA_API_KEY` is required, `limit` is capped at 50000, and pagination via `more`/`next_start` is documented.

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 content is dense and front-loaded, with no wasted sentences. It could be structured more cleanly for readability, but given the number of parameters and the lack of schema descriptions, the compactness is largely appropriate.

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 9-parameter tool with no required parameters, no output schema, and no schema descriptions, the description covers the essential inputs, authentication, and pagination. It is not fully complete because `layer`/`lane` meanings and response expectations are only partially described, but it is sufficient to call 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?

With 0% schema description coverage, the description carries nearly all parameter meaning and does so well: it explains `series`, `markets`+`fields`, `layer`, `lane`, `start`/`end`, `period`, `limit`, and pagination. Some values remain abbreviated—`layer` and `lane` are enumerated but not semantically defined—so it falls just short of fully compensating for the schema gap.

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 makes clear that this tool retrieves a window of bars and explains the two primary ways to name data: `series` or `markets`+`fields`. It is specific about the resource, but it does not explicitly distinguish this tool from close siblings such as tilla_latest or tilla_sample.

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?

It gives useful invocation guidance, including exactly how to name series or markets/fields, and how to handle pagination when `more` is true. However, it does not state when to prefer this tool over tilla_latest, tilla_sample, or other related siblings.

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. 14 tool updatesv0.1.0
    • First observedtilla_about
    • First observedtilla_changes
    • First observedtilla_docs
    • First observedtilla_health
    • First observedtilla_inventory
    • First observedtilla_latest
    • First observedtilla_market
    • First observedtilla_markets
    • First observedtilla_sample
    • First observedtilla_status
    • First observedtilla_tick
    • First observedtilla_tiers
    • First observedtilla_usage
    • First observedtilla_window

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation4/5

Most tools target clearly distinct resources or actions, and descriptions clarify boundaries well. There is some overlap between status/health for freshness checks and latest/window/tick for bar retrieval, but the intended use cases remain distinguishable.

Naming Consistency5/5

Every tool uses the same tilla_ prefix with snake_case naming, giving a highly predictable and consistent namespace. The set does not mix camelCase, vague verbs, or inconsistent conventions.

Tool Count5/5

Fourteen tools is well-scoped for a market data API, covering discovery, metadata, authentication context, and several bar retrieval modes. Each tool appears to earn its place without excessive surface area.

Completeness4/5

The surface covers discovery, plan/inventory inspection, market metadata, freshness checks, usage, and multiple data retrieval modes including paging and changes. Minor gaps exist around direct bulk file access or key management, but core read workflows are well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only crypto perps microstructure for AI agents: normalized cross-exchange market state (funding + multi-year percentile, OI, volume, CVD, order-book imbalance, liquidations, basis), OHLCV, 15-min state history, and measured conditional outcomes (historical base rates, not predictions) — 6 assets across Binance, Bybit, OKX and Hyperliquid, every metric with self-declared coverage and freshness
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Real-time crypto, stock, and prediction-market data for agents — prices, indicators, funding rates, DeFi TVL, macro calendar, and an AI momentum score. Configure one Base wallet key and it just works. No signup, no dashboard, no subscription.
    22
    44 npm
    MIT