Query BondTerminal API using x402 keyless payments. No API key needed — pay $0.01 USDC per request on Base mainnet. Use when users ask for Argentine bond data, analytics, cashflows, history, riesgo país, or ISIN/ticker lookups (e.g. AL30, GD30, US040114HS26). Supports automatic 402 → payment → retry.
Install with Tessl CLI
npx tessl i github:NeverSight/skills_feed --skill bondterminal-x402100
Quality
100%
Does it follow best practices?
Impact
100%
2.50xAverage score across 6 eval scenarios
Query the BondTerminal API with x402 pay-per-call auth. No API key, no subscription — just sign and pay per request.
Cost: $0.01 USDC per request on Base mainnet.
Base URL: https://bondterminal.com/api/v1
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /treasury-curve | US Treasury yield curve | Free |
| GET | /bonds | List all bonds (60+) | x402 |
| GET | /bonds/:id | Bond details by ISIN or local ticker | x402 |
| GET | /bonds/:id/analytics | Price, YTM, duration, spreads | x402 |
| GET | /bonds/:id/cashflows | Cashflow schedule | x402 |
| GET | /bonds/:id/history | Historical price/yield/spread | x402 |
| POST | /calculate | Bond analytics from custom price | x402 |
| GET | /riesgo-pais | Current Argentina country risk | x402 |
| GET | /riesgo-pais/history | Historical riesgo país series | x402 |
| POST | /calculate/batch | Batch calculations | Bearer only |
Identifier formats: ISIN (US040114HS26), local ticker with D/C suffix (AL30D, GD30D).
Full docs: https://bondterminal.com/developers
Endpoint reference in this skill: references/endpoints.md
402 with PAYMENT-REQUIRED headertransferWithAuthorization via the x402 client libraryPAYMENT-SIGNATURE header (v2), with X-PAYMENT as legacy fallbackPAYMENT-RESPONSE headernpm install @x402/core @x402/evm viemNote: The code examples use ES modules. Use
.mjsfile extension or add"type": "module"to yourpackage.json.
The x402 payment flow requires an EVM signer on Base mainnet with USDC balance. Configure your signer following the x402 EVM documentation.
The signer must implement { address, signTypedData } — any viem-compatible wallet client works (hardware wallet, KMS, injected provider, etc).
See references/signer-setup.md for a complete signer configuration example.
import { x402Client } from '@x402/core/client';
import { x402HTTPClient } from '@x402/core/http';
import { ExactEvmScheme } from '@x402/evm'; // exact export name
// signer = { address, signTypedData } — see references/signer-setup.md
const scheme = new ExactEvmScheme(signer);
const client = new x402Client();
client.register('eip155:8453', scheme); // Base mainnet
const httpClient = new x402HTTPClient(client);async function fetchBT(path) {
const url = `https://bondterminal.com/api/v1${path}`;
let res = await fetch(url);
if (res.status === 402) {
const paymentRequired = httpClient.getPaymentRequiredResponse(
(name) => res.headers.get(name),
await res.json()
);
const payload = await httpClient.createPaymentPayload(paymentRequired);
// Preferred v2 header
res = await fetch(url, {
headers: httpClient.encodePaymentSignatureHeader(payload),
});
// Legacy fallback for servers still expecting X-PAYMENT
if (res.status === 402) {
const encoded = Buffer.from(JSON.stringify(payload)).toString('base64');
res = await fetch(url, { headers: { 'X-PAYMENT': encoded } });
}
}
if (!res.ok) {
throw new Error(`BondTerminal request failed (${res.status})`);
}
return res.json();
}
// Examples
const bonds = await fetchBT('/bonds');
const analytics = await fetchBT('/bonds/AL30D/analytics');
const riesgo = await fetchBT('/riesgo-pais');Validate both free and paid flows:
await fetchBT('/treasury-curve'); // free route (no payment)
await fetchBT('/riesgo-pais'); // paid route (triggers x402 flow)The signing wallet needs:
No ETH for gas is required — x402 uses EIP-3009 (off-chain signature), not on-chain transactions.
POST /calculate/batch requires a Bearer API key subscription — not available via x402AL30D (USD), AL30C (ARS) — not AL30PAYMENT-RESPONSE header contains settlement metadata (payer, tx hash, network)80215e3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.