TILLA - market data on one clock
io.github.TillaCrypto/tilla-mcpTillaCryptostreamable-httpv2.0.2Scanned
Aligned market data for AI agents: crypto, stocks, FX and macro on one clock. Local or hosted.
14 tools: 13 change things and 1 only read.
- Reads private data · 0
- Reads text others write · 14
- Can send data out · 0
- No findings
Anlyon alternative
13 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
14 tools
Changes things 13Claude Code: ask
tilla_aboutWhat TILLA is, who it's for, and how to start.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it What TILLA is, who it's for, and how to start. No API key needed.
Annotations the server declares
- title: About TILLA
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_changesEvery 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.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Corrections since a time
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_docsThe whole API manual in one call, no key needed: every call, every parameter, every plan, how paging, tick, resume, changes and bulk work.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: The API manual
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_healthThe newest bar of every lane on every layer - is the data current?Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it The newest bar of every lane on every layer - is the data current? No API key needed.
Annotations the server declares
- title: Is every lane current
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_inventoryExactly what the caller's key holds.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Series this key holds
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_latestThe newest bar of the named series on one lane.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it The newest bar of the named series on one lane. Needs TILLA_API_KEY.
Annotations the server declares
- title: Latest bar
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_marketOne market in one call: every series of `market` (an id from tilla_markets, e.g.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: One whole market
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_marketsEvery 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.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Every market
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_sampleThe 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.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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/<tier>.csv and .db (named in the answer's `files`).
Annotations the server declares
- title: Free sample of a plan
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_tickYour 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).Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Everything that just closed
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_tiersThe public plans: price, history cap, request limits and size.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it The public plans: price, history cap, request limits and size. No API key needed.
Annotations the server declares
- title: Plans and limits
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_usageThe caller's plan and budget right now: tier, history days, limits, used today.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it The caller's plan and budget right now: tier, history days, limits, used today. Needs TILLA_API_KEY.
Annotations the server declares
- title: Plan and budget
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
tilla_windowA window of bars.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it 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.
Annotations the server declares
- title: Bars in a time range
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 1Show 1 read-only tool
tilla_statusThe newest 1-minute bar and the tiers served.Reads text others writeNo findings
Why it is in this group
- The name "tilla_status" says "status": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it The newest 1-minute bar and the tiers served. No API key needed.
Annotations the server declares
- title: Feed status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write14
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 2.0.2. Values in angle brackets are yours to fill in.
claude mcp add --transport http tilla https://mcp.tillacrypto.com/mcpclaude mcp add --transport http tilla https://mcp.tillacrypto.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__tilla__tilla_status"
],
"ask": [
"mcp__tilla__tilla_about",
"mcp__tilla__tilla_tiers",
"mcp__tilla__tilla_inventory",
"mcp__tilla__tilla_window",
"mcp__tilla__tilla_latest",
"mcp__tilla__tilla_usage",
"mcp__tilla__tilla_markets",
"mcp__tilla__tilla_market",
"mcp__tilla__tilla_sample",
"mcp__tilla__tilla_health",
"mcp__tilla__tilla_docs",
"mcp__tilla__tilla_tick",
"mcp__tilla__tilla_changes"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as tilla. Review it before you use it.
Capability tags behind 14 rules
- mcp__tilla__tilla_about untrusted-input
- mcp__tilla__tilla_status untrusted-input
- mcp__tilla__tilla_tiers untrusted-input
- mcp__tilla__tilla_inventory untrusted-input
- mcp__tilla__tilla_window untrusted-input
- mcp__tilla__tilla_latest untrusted-input
- mcp__tilla__tilla_usage untrusted-input
- mcp__tilla__tilla_markets untrusted-input
- mcp__tilla__tilla_market untrusted-input
- mcp__tilla__tilla_sample untrusted-input
- mcp__tilla__tilla_health untrusted-input
- mcp__tilla__tilla_docs untrusted-input
- mcp__tilla__tilla_tick untrusted-input
- mcp__tilla__tilla_changes untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.github.TillaCrypto/tilla-mcp/verify?hash=63147fc15ed18616e6d5e18ae6441b419bb53a882f0ee154b5504e5b7913c4be" | jq -e '.changed == false'Pinned hash 63147fc15ed1, from Nov 1, 2026, 09:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.github.TillaCrypto/tilla-mcp/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.github.TillaCrypto/tilla-mcp)Source: MCP Registry · repository. Synced Nov 1, 2026, 09:17 UTC.