Finance Toolkit
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Description from the maker (original English)
IBAN, ISIN, VAT/tax ID, GTIN validation; timezone, geo, text, chain utilities. Pay per call
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://api.duoleads.com/mcpRun this in your terminal
claude mcp add --transport http data-utilities https://api.duoleads.com/mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"data-utilities": {
"url": "https://api.duoleads.com/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"data-utilities": {
"type": "http",
"url": "https://api.duoleads.com/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://api.duoleads.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The publisher (api.duoleads.com) is not the repo owner (hiesem); someone else may have listed it
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 0 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.0.4) reached the registry 13 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Finance Toolkit, SolidInvoice, Korea Tax Calculator
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Korean tax calculation and tax-audit judgment MCP: 96 tools with statutory citations.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
IBAN, ISIN, VAT/tax ID and GTIN barcode validation plus 29 more utilities for AI agents. Pay per call ($0.05 USDC on Base via x402), no API key, no signup.
Timezone and DST, geo distance and geohash, hashes and JWT decoding, airport, country, currency and NUTS lookups, money split, base conversion and more. Every call is one HTTP GET, paid per request.
Also crypto derivatives data for trading agents: perp funding rates, funding arbitrage, open interest, futures basis, implied volatility, liquidations and order book depth across Bybit, Hyperliquid, dYdX, Gate, Kraken, Bitfinex, Deribit and OKX, at $0.003 or $0.005 per call (below).
npm install duo-data-utilities viem
viem creates the wallet account that pays. This package also depends on it. Node.js 20 or later.
Python (not on PyPI, install from GitHub):
pip install "git+https://github.com/hiesem/duo-data-utilities#subdirectory=python"
import { privateKeyToAccount } from "viem/accounts";
import { createClient } from "duo-data-utilities";
// Your wallet holds USDC on Base. Read the key from the environment, never a literal. const client = createClient({ account: privateKeyToAccount(process.env.DUO_PAYER_KEY as 0x${string}) });
const iban = await client.iban.validate({ iban: "NL91 ABNA 0417 1643 00" }); // $0.05 console.log(iban.valid, iban.country); // true NL
checkCounterparty runs three checks in one call: IBAN (/v1/id/iban), tax ID (/v1/id/national) and country (/v1/ref/country). It costs $0.15.
const check = await client.checkCounterparty({
iban: "NL91 ABNA 0417 1643 00", country: "NL", taxIdType: "bsn", taxId: "111222333", }); console.log(check.verdict, check.reasons); // "pass", "fail" or "review"
fail: the IBAN or the tax ID fails its checksum, the country is not an ISO 3166-1 country, or the API rejects an input as malformed.review: the IBAN country differs from the tax ID country, or the API does not cover that country or tax ID kind.pass: every check passed.Structure and checksum only. The check does not query a company register, a bank or a tax authority, and it does not confirm that an account exists. UK is read as GB.
client.derivs calls https://derivs.duoleads.com: crypto derivatives data from 8 exchanges (Bybit, Hyperliquid, dYdX, Gate, Kraken, Bitfinex, Deribit, OKX) for trading agents and bots. Perpetual futures (perp) funding rates with predicted funding, funding rate history and a funding arbitrage scanner, a perp screener, open interest (OI), futures basis and term structure, options implied volatility (IV), skew and max pain, liquidations, and order book depth with slippage. $0.003 or $0.005 per call, same wallet, same x402 payment, no API key.
import { privateKeyToAccount } from "viem/accounts";
import { createClient, createDerivsClient } from "duo-data-utilities";
const account = privateKeyToAccount(process.env.DUO_PAYER_KEY as 0x${string}); const client = createClient({ account });
const funding = await client.derivs.fundingRates({ coin: "BTC" }); // $0.003 for (const v of funding.venues) console.log(v.venue, v.apr_pct, v.next_funding_time);
const arb = await client.derivs.fundingArbitrage({ min_apr: 20, min_volume_usd: 1_000_000 }); // $0.005, all coins const snap = await client.derivs.derivativesSnapshot({ coin: "ETH" }); // $0.005: funding, OI, basis, liquidations, long/short
// Or a derivs-only client: const derivs = createDerivsClient({ account }); await derivs.openInterest({ coin: "SOL" }); // $0.003
import os
from eth_account import Account from duo_data_utilities import DerivsClient, DuoClient
client = DuoClient(Account.from_key(os.environ["DUO_PAYER_KEY"])) rates = client.derivs.funding_rates(coin="BTC") # $0.003 book = client.derivs.orderbook(coin="BTC", size_usd=250_000) # $0.003 derivs = DerivsClient(Account.from_key(os.environ["DUO_PAYER_KEY"])) # derivs only
client.derivs has its own cap, $0.005 per call by default. createClient({ account, derivs: { maxPriceUsd: 0.003 } }) refuses the $0.005 routes (Python: derivs_max_price_usd=0.003). The other rules are the same: Base USDC only, only to 0xCD673f7e1daD254347AEab6be0DEFe8b9C6b3A39, nothing is signed before the check.error.expected. When fewer venues answer than the route needs, the answer is a 503 and nothing is charged. Both throw DuoApiError.data envelope), with venues_missing, units, as_of and a see_also pointer to the next useful route. TypeScript types: DerivsFundingRatesData and so on.https://derivs.duoleads.com/mcp. Snippets for Claude Code, Claude Desktop, Cursor and VS Code: mcp/README.md.| TypeScript | Python | Route | Price | What it returns |
|---|---|---|---|---|
derivs.fundingRates | derivs.funding_rates | /v1/funding-rates | $0.003 | Perp funding rates per exchange for one coin: rate, 8h rate, APR, next funding, predicted funding (incl. Binance and Bybit), last 24 prints |
derivs.fundingHistory | derivs.funding_history | /v1/funding-history | $0.003 | Funding rate history of one coin on one exchange, up to 30 days, with avg/min/max/% positive |
derivs.fundingArbitrage | derivs.funding_arbitrage | /v1/funding-arbitrage | $0.005 | Funding arbitrage scanner for all coins: widest cross-venue spread, long and short venue, fee-adjusted net APR, breakeven days |
derivs.perpScreener | derivs.perp_screener | /v1/perp-screener | $0.005 | Perp screener: every perpetual across venues, sorted by funding APR, open interest, 24h volume or 24h change |
derivs.openInterest | derivs.open_interest | /v1/open-interest | $0.003 | Open interest (OI) per exchange in coins and USD, share, and 1h/4h/24h OI change |
derivs.basis | derivs.basis | /v1/basis | $0.003 | Futures basis and term structure (annualised, contango/backwardation), perp premium, predicted funding |
derivs.options | derivs.options | /v1/options | $0.003 | Implied volatility (ATM IV), 25-delta skew, put/call OI ratio, max pain, DVOL; options chain with greeks for one expiry |
derivs.liquidations | derivs.liquidations | /v1/liquidations | $0.003 | Long and short liquidations in USD per venue over 1-24h, totals and the largest events |
derivs.orderbook | derivs.orderbook | /v1/orderbook | $0.003 | Order book depth within 0.1/0.5/1/2% of mid, spread, imbalance, slippage for your order size, walls |
derivs.derivativesSnapshot | derivs.derivatives_snapshot | /v1/derivatives-snapshot | $0.005 | One-call snapshot: funding, open interest, perp premium and nearest basis, 24h liquidations, long/short ratio |
Derivs docs: https://derivs.duoleads.com/docs · OpenAPI: https://derivs.duoleads.com/openapi.json · Index: https://derivs.duoleads.com/llms.txt · Terms: https://derivs.duoleads.com/terms · Privacy: https://derivs.duoleads.com/privacy
client.keywords calls https://keywords.duoleads.com. It returns Google keyword search volume, CPC, competition, keyword difficulty and search intent (Google Ads data), keyword ideas for a seed, and Google Trends (interest over time, related queries, interest by region). Calls cost $0.03 to $0.045 each and use the same wallet and the same x402 payment, with no API key.
const volume = await client.keywords.searchVolume({ keywords: ["phone", "watch"], country: "us" }); // $0.04, up to 20 keywords
const overview = await client.keywords.keywordOverview({ keywords: myList }); // $0.04, up to 100 keywords (POST) const ideas = await client.keywords.keywordIdeas({ keyword: "seo api", limit: 50 }); // $0.04 (POST) const trend = await client.keywords.trend({ keyword: "seo tools", timeframe: "past_12_months" }); // $0.045
// Or a keywords-only client: const keywords = createKeywordsClient({ account }); await keywords.relatedQueries({ keyword: "seo api", country: "us" }); // $0.03
client.keywords has its own cap, $0.045 per call by default. createClient({ account, keywords: { maxPriceUsd: 0.04 } }) refuses the $0.045 trend route. The other rules are the same: Base USDC only, only to 0xCD673f7e1daD254347AEab6be0DEFe8b9C6b3A39, and nothing is signed before the check.DuoApiError.https://keywords.duoleads.com/mcp.| Method | Route | Price | What it returns |
|---|---|---|---|
keywords.keywordOverview | POST /v1/keyword-overview | $0.04 | Search volume, CPC, competition, keyword difficulty and intent for 1-100 keywords |
keywords.searchVolume | GET /v1/search-volume | $0.04 | The same metrics for 1-20 keywords in one country |
keywords.keywordIdeas | POST /v1/keyword-ideas | $0.04 | Up to 100 related keyword ideas for one seed, each with the same metrics |
keywords.trend | GET /v1/trend | $0.045 | Google Trends interest over time (0-100), 7 days to 5 years |
keywords.relatedQueries | GET /v1/related-queries | $0.03 | Google Trends top and rising related queries |
keywords.interestByRegion | GET /v1/interest-by-region | $0.03 | Google Trends interest per region of a country |
Keyword docs: https://keywords.duoleads.com/docs · OpenAPI: https://keywords.duoleads.com/openapi.json · Index: https://keywords.duoleads.com/llms.txt
Every method costs $0.05 per call. Each method's JSDoc gives the route and the parameters. client.call(path, params) calls any route, and client.callWithReceipt(path, params) also returns the settlement receipt.
| Method | Route | What it does |
|---|---|---|
iban.validate | /v1/id/iban | IBAN validator: length, mod-97 check digits, bank/branch/account breakdown (89 countries) |
iban.generate | /v1/id/iban-build | IBAN generator: build an IBAN from country and BBAN or bank/branch/account, computing check digits |
taxId.validate | /v1/id/national | VAT, tax ID and national ID validator: 23 countries, checksum only (VAT formats BE, DE, FR, IT, PL, AT, CH, IE) |
isin.validate | /v1/id/security | ISIN validator plus CUSIP, SEDOL and FIGI check-digit validation; builds an ISIN from an NSIN |
barcode.validate | /v1/id/gs1 | GTIN barcode validator: EAN-13, UPC-A (GTIN-12), GTIN-8/14, GLN and SSCC check digits |
timezone.convert | /v1/time/zone | Timezone converter: instant to local time in an IANA time zone and back, with UTC offset and DST state |
timezone.dstTransitions | /v1/time/dst | DST transitions: next daylight-saving time changes for an IANA time zone |
businessDays.calculate | /v1/time/business-days | Business days calculator: add or count working days with your weekend mask and holiday list |
rrule.expand | /v1/time/rrule | RRULE expander: RFC 5545 recurrence rule to concrete occurrence dates |
calendar.convert | /v1/time/calendar | Calendar converter: Gregorian to Hijri, Hebrew, Japanese era, Persian and more, plus Easter date |
| text.similarity | /v1/text/similarity | String similarity: Levenshtein, Jaro-Winkler distance
Only the beginning is shown; read the rest in the repo