loop-mcp
by loopxxi.com · remote · no sign-in to list tools · v2.4.0 · published by com.loopxxi
15 pay-per-call Bitcoin and developer tools, paid in sats over Lightning (L402).
15 tools: 2 do something that can't be undone, 8 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone2Claude Code: ask: see these tools
- Changes things8Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
7 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http loop https://mcp.loopxxi.com/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "btc_send_decision" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "btc_send_decision" says "send": a word for sending, and what is sent cannot be taken back.
The server marks "optimal_send_window" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "optimal_send_window" says "send": a word for sending, and what is sent cannot be taken back.
- Warncsv_to_json
The server marks "csv_to_json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The description's first verb is "convert": a word for a change.
- Warnhash_generate
The server marks "hash_generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "hash_generate" says "generate": a word for a change.
- Warnbase64_convert
The server marks "base64_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "base64_convert" says "convert": a word for a change.
The server marks "timestamp_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "timestamp_convert" says "convert": a word for a change.
Show 1 more findingShow fewer
- Warnuuid_generate
The server marks "uuid_generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "uuid_generate" says "generate": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Can't be undone 2Claude Code: ask
btc_send_decisionReturns a composited send-or-wait recommendation for a Bitcoin transaction.1 finding
Why it is in this group
- The name "btc_send_decision" says "send": a word for sending, and what is sent cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "btc_send_decision" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "btc_send_decision" says "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it Returns a composited send-or-wait recommendation for a Bitcoin transaction. Fetches live mempool and fee data, then outputs a machine-actionable verdict (SEND_NOW, WAIT, or URGENT_ONLY) with fee rates in sat/vB, mempool pressure level, and estimated savings if you wait. Ideal for agents that need a single decision call instead of parsing multiple raw mempool endpoints.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Bitcoin Send Decision
optimal_send_windowBitcoin transaction timing intelligence.1 finding
Why it is in this group
- The name "optimal_send_window" says "send": a word for sending, and what is sent cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "optimal_send_window" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "optimal_send_window" says "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it Bitcoin transaction timing intelligence. Returns a congestion forecast for the next 1-4h, a recommended UTC send window when fees are projected at/below your target, a fee trajectory (rising/stable/falling) with a calibrated confidence score, next-block minimum fee, confirmation targets for 3/6/144 blocks, and an RBF-viability flag. A synthesis layer above raw fee data — the decision an autonomous payment agent needs before broadcasting. Source: mempool.space.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Optimal Send Window
Changes things 8Claude Code: ask
base64_convertEncode UTF-8 text to Base64 or decode Base64 safely, with standard and URL-safe alphabets.1 finding
Why it is in this group
- The name "base64_convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "base64_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "base64_convert" says "convert": a word for a change.
Description, as the server wrote it Encode UTF-8 text to Base64 or decode Base64 safely, with standard and URL-safe alphabets.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Base64 Convert
csv_to_jsonConvert CSV, TSV, semicolon, or pipe-delimited text into structured JSON with bounded row output.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "csv_to_json" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it Convert CSV, TSV, semicolon, or pipe-delimited text into structured JSON with bounded row output.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: CSV to JSON
hash_generateGenerate a SHA-256 or SHA-512 digest in hexadecimal or Base64 form.1 finding
Why it is in this group
- The name "hash_generate" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "hash_generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "hash_generate" says "generate": a word for a change.
Description, as the server wrote it Generate a SHA-256 or SHA-512 digest in hexadecimal or Base64 form.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Hash Generate
json_extractExtract one value from JSON using a simple dot path with array indexes, for example users[0].email.No 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.
Description, as the server wrote it Extract one value from JSON using a simple dot path with array indexes, for example users[0].email.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: JSON Extract
jwt_decodeDecode JWT header and payload claims locally without verifying the signature.No 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.
Description, as the server wrote it Decode JWT header and payload claims locally without verifying the signature. The response always marks verification as false.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: JWT Decode
timestamp_convertConvert Unix seconds, Unix milliseconds, RFC3339, or ISO dates into normalized UTC timestamp forms.1 finding
Why it is in this group
- The name "timestamp_convert" says "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "timestamp_convert" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "timestamp_convert" says "convert": a word for a change.
Description, as the server wrote it Convert Unix seconds, Unix milliseconds, RFC3339, or ISO dates into normalized UTC timestamp forms.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Timestamp Convert
url_parseParse an HTTP or HTTPS URL into normalized scheme, host, port, path, query, and fragment fields without fetching it.No 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.
Description, as the server wrote it Parse an HTTP or HTTPS URL into normalized scheme, host, port, path, query, and fragment fields without fetching it.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: URL Parse
uuid_generateGenerate one to one hundred cryptographically random RFC 4122 UUID version 4 identifiers.1 finding
Why it is in this group
- The name "uuid_generate" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "uuid_generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":true}; The name "uuid_generate" says "generate": a word for a change.
Description, as the server wrote it Generate one to one hundred cryptographically random RFC 4122 UUID version 4 identifiers.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: UUID Generate
Only reads 5Claude Code: allow
btc_priceGet the current Bitcoin price in USD and other major currencies.No findings
Why it is in this group
- The description's first verb is "get": a word for reading.
Description, as the server wrote it Get the current Bitcoin price in USD and other major currencies. Source: mempool.space. Real-time.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Bitcoin Price
json_validateValidate JSON, identify its root type, and return normalized JSON plus a SHA-256 content hash.No findings
Why it is in this group
- The name "json_validate" says "validate": a word for reading.
Description, as the server wrote it Validate JSON, identify its root type, and return normalized JSON plus a SHA-256 content hash.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: JSON Validate
lightning_address_resolveResolve a Lightning Address (user@domain.com) to a payable BOLT11 invoice for a given amount.No findings
Why it is in this group
- The name "lightning_address_resolve" says "resolve": a word for reading.
Description, as the server wrote it Resolve a Lightning Address (user@domain.com) to a payable BOLT11 invoice for a given amount. Handles the full LNURL-pay protocol internally. Returns the invoice plus min/max sendable amounts for validation.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Lightning Address Resolve
text_analyzeReturn deterministic text statistics, estimated tokens, reading time, and a SHA-256 content hash.No findings
Why it is in this group
- The name "text_analyze" says "analyze": a word for reading.
Description, as the server wrote it Return deterministic text statistics, estimated tokens, reading time, and a SHA-256 content hash.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Text Analyze
tx_decode_explainFetch a Bitcoin transaction by txid and return a structured, agent-ready summary: type (P2WPKH/P2TR/P2SH/etc.), input/output counts, fees, fee rate in sat/vB, confirmation status, …No findings
Why it is in this group
- The name "tx_decode_explain" says "explain": a word for reading.
Description, as the server wrote it Fetch a Bitcoin transaction by txid and return a structured, agent-ready summary: type (P2WPKH/P2TR/P2SH/etc.), input/output counts, fees, fee rate in sat/vB, confirmation status, RBF flag, SegWit/Taproot flags, and a one-line agent_summary string ready for LLM context injection. Saves 500-2000 tokens vs parsing raw TX JSON.
Annotations the server declares
- destructiveHint: false
- openWorldHint: true
- readOnlyHint: true
- title: Transaction Decode and Explain
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.
Install
Pinned to version 2.4.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http loop https://mcp.loopxxi.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__loop__btc_price",
"mcp__loop__lightning_address_resolve",
"mcp__loop__tx_decode_explain",
"mcp__loop__json_validate",
"mcp__loop__text_analyze"
],
"ask": [
"mcp__loop__btc_send_decision",
"mcp__loop__optimal_send_window",
"mcp__loop__json_extract",
"mcp__loop__csv_to_json",
"mcp__loop__hash_generate",
"mcp__loop__base64_convert",
"mcp__loop__timestamp_convert",
"mcp__loop__uuid_generate",
"mcp__loop__url_parse",
"mcp__loop__jwt_decode"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as loop. Review it before you use it.