Agent skill

Wise API

by lineofflight in lineofflight/frankfurter

A skill your agent uses when querying Wise for exchange rates (real-time or historical), validating Frankfurter rates against Wise mid-market, debugging rate discrepancies, or when the user mentions…

MITAuto-check passedDevelopment

Install Wise API

skills CLI
$ npx skills add lineofflight/frankfurter --skill wise-api -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install lineofflight/frankfurter wise-api --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/lineofflight/frankfurter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/querying-wise-api .claude/skills/wise-api && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
wise-api
GitHub stars
2k
Token cost
~1.1k tokens
SKILL.md length
259 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when querying Wise for exchange rates (real-time or historical), validating Frankfurter rates against Wise mid-market, debugging rate discrepancies, or when the user mentions…

  • Querying Wise for exchange rates (real-time
  • SKILL.md covers Endpoints, Parameters, Response and Rate limit, plus 3 more sections
  • Calls curl and jq; reaches api.wise.com; needs WISE_API_KEY
  • Validating Frankfurter rates against Wise mid-market

What it does

Wise API is an agent skill from lineofflight/frankfurter. Use when querying Wise for exchange rates (real-time or historical), validating Frankfurter rates against Wise mid-market, debugging rate discrepancies, or when the user mentions Wise, sanity check, or rate comparison.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. It works with Ruby. The licence is MIT.

When your agent uses it

  • Querying Wise for exchange rates (real-time
  • Validating Frankfurter rates against Wise mid-market
  • Debugging rate discrepancies
  • The user mentions Wise

Example prompts

  • “/wise-api”

Requirements

  • A credential in WISE_API_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 71334f7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.wise.com

    Also links to:

    • docs.wise.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • WISE_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wise API loads about 1.1k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 259 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~57
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from lineofflight/frankfurter at commit 71334f7, republished under its MIT licence (© lineofflight). 259 words, ~1,052 tokens.

Download SKILL.mdSave it as .claude/skills/wise-api/SKILL.md (or your agent's skills folder).
name
wise-api
description
Use when querying Wise for exchange rates (real-time or historical), validating Frankfurter rates against Wise mid-market, debugging rate discrepancies, or when the user mentions Wise, sanity check, or rate comparison.

Wise Exchange Rate API

Query real-time and historical mid-market rates from Wise for troubleshooting and data validation.

Endpoints

Base: https://api.wise.com/v1/rates

Current rates
bash
# Single pair
curl -s -H "Authorization: Bearer $WISE_API_KEY" \
  'https://api.wise.com/v1/rates?source=EUR&target=USD' | jq

# All targets for a source (omit target entirely)
curl -s -H "Authorization: Bearer $WISE_API_KEY" \
  'https://api.wise.com/v1/rates?source=EUR' | jq

target only accepts a single currency. Comma-separated lists (target=USD,GBP,JPY) return 400 Bad Request. For multiple pairs from the same source, omit target to get all ~163 currencies in one call and filter the response locally. Loop per-pair only as a last resort.

Historical rate at a specific time
bash
curl -s -H "Authorization: Bearer $WISE_API_KEY" \
  'https://api.wise.com/v1/rates?source=EUR&target=USD&time=2025-06-15T12:00:00' | jq
Historical rate series
bash
curl -s -H "Authorization: Bearer $WISE_API_KEY" \
  'https://api.wise.com/v1/rates?source=EUR&target=USD&from=2025-06-01&to=2025-06-30&group=day' | jq

Parameters

ParamDescriptionExample
sourceSource currency (required)EUR
targetSingle target currency (omit for all)USD
timeSingle historical timestamp (ISO 8601)2025-06-15T12:00:00
fromPeriod start (date or timestamp)2025-06-01
toPeriod end (date or timestamp, tz offset ok)2025-06-30T23:59:59+0100
groupGrouping interval for seriesday, hour, minute

Response

json
[
  {
    "rate": 1.08234,
    "source": "EUR",
    "target": "USD",
    "time": "2025-06-15T12:00:00+0000"
  }
]

Always returns an array. Historical series returns one entry per group interval.

Rate limit

500 requests/minute. Plenty for ad-hoc troubleshooting.

Comparing with Frankfurter

bash
# Frankfurter blended (multi-target OK here)
curl -s 'http://localhost:8080/v2/rates?base=EUR&quotes=USD,GBP,JPY' | jq

# Wise current: one call for all targets, filter locally
curl -s -H "Authorization: Bearer $WISE_API_KEY" \
  'https://api.wise.com/v1/rates?source=EUR' \
  | jq '.[] | select(.target | IN("USD","GBP","JPY"))'

Deviation: abs(frankfurter - wise) / wise * 100

DeviationAssessment
< 0.1%Excellent
0.1-0.5%Acceptable (institutional vs real-time spread)
> 0.5%Investigate — stale data or provider outlier
> 1.0%Likely data issue — check individual provider rates

Currency support

Not all currencies work as source. Exotic currencies (MMK, NPR, KGS, etc.) often return 400 Bad Request when used as source. Always use a major currency (EUR, USD, GBP) as source and put the exotic currency in target.

bash
# WRONG — will 400:
curl -s -H "Authorization: Bearer $WISE_API_KEY" \
  'https://api.wise.com/v1/rates?source=MMK&target=USD'

# RIGHT:
curl -s -H "Authorization: Bearer $WISE_API_KEY" \
  'https://api.wise.com/v1/rates?source=USD&target=MMK'

Notes

  • Wise rates are real-time; Frankfurter rates are daily institutional snapshots. Some spread is normal.
  • For historical comparison, use time param with the date you're checking, not from/to.
  • This is for internal validation only, Wise is NOT a Frankfurter provider.
  • API docs: https://docs.wise.com/api-reference/rate

© lineofflight, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/querying-wise-api of lineofflight/frankfurter.

Open the folder on GitHubat commit 71334f7

Compare with similar skills

Wise API next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Wise API compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wise API this skilllineofflight/frankfurter2k—~1.1kAutomated safety check: PassMIT
Gumroad Prod Consoleantiwork/gumroad9.8k—~2.9kAutomated safety check: NotesMIT
Breaking Change Analysisruby-git/ruby-git1.8k—~1.7kAutomated safety check: PassMIT
Dhhmarckohlbrugge/37signals-skills724—~2.2kAutomated safety check: PassNone
Dhh Rails Styledavekilleen/Dex4931 repos~1.7kAutomated safety check: PassCustom licence
Ruby Prodavila7/claude-code-templates32k7 repos~445Automated safety check: PassMIT

Similar skills

  • Gumroad Prod Console

    antiwork/gumroad

    Execute read-only Ruby/Rails commands against Gumroad's production database for debugging and investigation.

    9.8k GitHub stars~2.9k tokensUpdated today
    DevelopmentAuto-check: notes
  • Breaking Change Analysis

    ruby-git/ruby-git

    Assesses what an API change would break before it is made, finds every usage, documents the impact and plans a deprecation or migration path.

    1.8k GitHub stars~1.7k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Dhh

    marckohlbrugge/37signals-skills

    Review Ruby/Rails code like DHH would - direct, opinionated, allergic to over-engineering.

    724 GitHub stars~2.2k tokensUpdated 4 mo ago
    DevelopmentAuto-check passed
  • Dhh Rails Style

    davekilleen/Dex

    This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style.

    493 GitHub starsUsed in 1 repo~1.7k tokens
    DevelopmentAuto-check passed
  • Ruby Pro

    davila7/claude-code-templates

    Write idiomatic Ruby code with metaprogramming, Rails patterns, and performance optimization.

    32k GitHub starsUsed in 7 repos~445 tokens
    DevelopmentAuto-check passed
  • Readme Refresh

    joshukraine/dotfiles

    Audit and update a project README, or bootstrap a new one. An agent skill from joshukraine/dotfiles.

    429 GitHub stars~2.1k tokensUpdated yesterday
    DevelopmentAuto-check: notes

More from lineofflight/frankfurter

  • Evaluating Pegs

    lineofflight/frankfurter

    A skill your agent uses when adding, evaluating, or removing an entry in db/seeds/pegs/, when the user mentions a pegged or fixed currency, or when an issue suggests we should "pin" or "lock" a…

    2k GitHub stars~1.6k tokensUpdated 5 days ago
    Auto-check passed

Works with

Questions about Wise API

What does Wise API do?

A skill your agent uses when querying Wise for exchange rates (real-time or historical), validating Frankfurter rates against Wise mid-market, debugging rate discrepancies, or when the user mentions…. Wise API is an agent skill from lineofflight/frankfurter. Use when querying Wise for exchange rates (real-time or historical), validating Frankfurter rates against Wise mid-market, debugging rate discrepancies, or when the user mentions Wise, sanity check, or rate comparison.

When should I use Wise API?

Wise API fits situations like: querying Wise for exchange rates (real-time; validating Frankfurter rates against Wise mid-market; debugging rate discrepancies; the user mentions Wise.

How do I install Wise API in Claude Code?

Run `npx skills add lineofflight/frankfurter --skill wise-api -a claude-code`. Or copy the skill folder (.agents/skills/querying-wise-api in lineofflight/frankfurter) into .claude/skills/wise-api in your project. Claude Code loads it when a task matches its description.

How do I install Wise API in Codex?

Run `npx skills add lineofflight/frankfurter --skill wise-api -a codex`. Or copy the skill folder (.agents/skills/querying-wise-api in lineofflight/frankfurter) into .agents/skills/wise-api in your project. Codex loads it when a task matches its description.

Can I use Wise API in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lineofflight/frankfurter --skill wise-api -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wise-api, .gemini/skills/wise-api, .github/skills/wise-api and .opencode/skills/wise-api in your project.

What does Wise API need to run?

Going by SKILL.md and its folder, Wise API needs the command-line tools its instructions call (curl and jq) and credentials named WISE_API_KEY. Our summary lists: A credential in WISE_API_KEY.

Does Wise API access the network?

SKILL.md names 2 domains. In commands or code: api.wise.com; the agent is likely to contact it when it follows the instructions. As links in the text: docs.wise.com. This is read from the text; nothing was executed.

Is Wise API safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Wise API use?

Wise API is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wise API use?

About 1.1k tokens (SKILL.md is roughly 4.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Wise API?

Skills that share tags, products or a category with Wise API: Gumroad Prod Console (antiwork/gumroad, 9.8k stars), Breaking Change Analysis (ruby-git/ruby-git, 1.8k stars), Dhh (marckohlbrugge/37signals-skills, 724 stars) and Dhh Rails Style (davekilleen/Dex, 493 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wise API?

lineofflight (a GitHub organization) maintains it in lineofflight/frankfurter, which has 1,954 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 2, 2026.

Source: lineofflight/frankfurter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.