Fuelwright
CANO TOKEN YET
Docs

Build on Fuelwright

One key reaches every agent and every relay enabled model. Usage is charged in credit at the public rate card. All timestamps are UTC.

Quick start

  • Connect a Solana wallet on the account page.
  • Get credit: buy it with SOL, receive it hourly as a holder, or buy it below face value on the market.
  • Create an API key and send it as a Bearer token.
curl https://fuelwright.43-156-127-79.sslip.io/v1/runs \
  -H "Authorization: Bearer fw_your_key" \
  -H "Content-Type: application/json" \
  -d '{"agent": "researcher", "task": "Summarize what changed in Solana fees this month."}'

Authentication

Base URL: https://fuelwright.43-156-127-79.sslip.io/v1

Send Authorization: Bearer fw_... on every request. Keys are shown once when created and can be revoked on the account page. A key spends the credit of the wallet that created it.

Agent runs

POST/v1/runs

Runs one agent to completion and returns the answer, the tool trace and the exact cost. A run can take up to a minute when it searches the web.

{
  "agent": "researcher",
  "task": "Your instruction, up to 8000 characters"
}

Response:

{
  "object": "run",
  "run": {
    "id": "run_0123456789abcdef",
    "agent": "researcher",
    "status": "done",
    "output": "...",
    "model": "openai/gpt-oss-120b",
    "tokens_in": 4210,
    "tokens_out": 612,
    "tool_calls": 2,
    "cost": "0.010999",
    "created": "2026-10-03 15:47:05 UTC",
    "steps": [{"type": "tool", "name": "web_search", "args": {"query": "..."}, "preview": "..."}]
  },
  "balance": 4.989001
}

GET/v1/runs/{id} returns a past run. GET/v1/agents lists the agents:

AgentWhat it doesTools
researcherSearches the live web, reads the sources and returns a cited brief.web_search, fetch_url
token-scoutPulls live market data for a token and writes a sober risk brief.token_lookup, web_search, fetch_url
ledger-analystExplains the public Fuelwright numbers: credits issued, credits used, revenue and realized discount.ledger_stats
drafterWrites and rewrites: posts, summaries, replies, documentation. No tools, lowest cost.none

Chat completions

POST/v1/chat/completions

Follows the OpenAI chat completions format, including stream, tools and response_format. Point an OpenAI client at the base URL above and use your Fuelwright key.

from openai import OpenAI

client = OpenAI(base_url="https://fuelwright.43-156-127-79.sslip.io/v1", api_key="fw_your_key")
reply = client.chat.completions.create(
    model="openai/gpt-oss-120b",
    messages=[{"role": "user", "content": "Hello"}],
)
print(reply.choices[0].message.content)

Models and prices

GET/v1/models

Model idInput per 1M tokensOutput per 1M tokensContextRelay
openai/gpt-oss-120b 0.150 0.600 131,072 off
qwen/qwen3.8-27b 0.290 0.590 131,072 off
openai/gpt-oss-20b 0.075 0.300 131,072 off

Tool calls made by agents:

ToolPurposeCredits per call
web_searchWeb search0.0050
fetch_urlRead a page0.0010
token_lookupToken market data0.0005
ledger_statsFuelwright ledgerfree

Prices are in credits. One credit has a face value of $1.00.

Balance

GET/v1/balance

{
  "wallet": "YourWalletAddress",
  "credits": 12.5,
  "transferable": 10.0,
  "bonus": 2.5,
  "listed": 0,
  "spent": 3.21
}

Errors and limits

Errors use the OpenAI shape: {"error": {"message": "...", "type": "...", "code": "..."}}.

StatusCodeMeaning
401invalid_api_keyThe key is missing, wrong or revoked.
402insufficient_creditsThe wallet does not hold enough credit for the request.
404model_not_foundUnknown model or agent id.
429rate_limit_exceededMore than 60 requests in a minute. Retry after the Retry-After header.
429too_many_requestsMore than 3 requests of one wallet are running at the same time. Wait for one to finish.
503relay_unavailableThe model is not cleared for raw relay. Use an agent run.

How credit works

  • Each token trade pays a 1.5% fee. 50% of it becomes credit for holders, which is 0.75% of volume.
  • 40% of product revenue joins the same pool, 30% accrues to the buyback reserve and 30% pays for supply and operations.
  • The pool is shared every hour between wallets whose time weighted balance over the last 24 hours is at least 1,000 tokens. Balances are sampled every 10 minutes.
  • A wallet's share of the pool equals its time weighted balance divided by the total of all eligible wallets.
  • Credit bought or earned can be listed on the market. Credit granted by the operator is spent first and cannot be resold.
  • The marketplace fee is 5%, taken from the seller side inside the on chain payment.

Launchpad

Anyone can launch a token on a Meteora bonding curve. The token trades against the asset it is paired with: SOL, or a tokenized stock.

  • Supply is 1,000,000,000 tokens with no mint authority and metadata that cannot be changed.
  • The curve starts near 30 SOL market cap and migrates near 400 SOL, or the same value in the paired stock.
  • The dev buy is always paid in SOL. For a stock pair the SOL is swapped to that stock and the first buy happens inside the launch transaction, so the creator never needs to hold the stock.
  • Trading costs 1%. It starts at 25% and falls within 60 seconds to slow snipers.
  • The creator earns 50% of the trading fees and claims them as SOL on the token page. The other half is protocol income.
  • When the curve fills, 20% of the raise is taken for the Fuelwright treasury. The rest moves into a permanent pool whose liquidity is locked forever.
  • Buyers and sellers can pay and receive SOL on every token. For a stock pair the swap through the stock happens in the same transaction.
  • Protocol income from the launchpad is counted as product revenue on the ledger and follows the same split as everything else.

The first launch paired with a given stock opens that market once. The launcher pays that one time account cost, shown on the launch form.

Verify the ledger

Every closed hour has a frozen record. Its digest is the SHA-256 of the exact bytes served at /ledger/epoch/{hour}.json, where hour is the Unix time divided by 3600.

curl -s https://fuelwright.43-156-127-79.sslip.io/ledger/epoch/HOUR.json | sha256sum

When the ledger program is live, hours that had activity are posted in order. The program keeps one running value:

head = SHA-256( previous_head (32 bytes) + hour (8 bytes, little endian) + digest (32 bytes) )

Start from 32 zero bytes, fold in every posted hour, and the result must equal the chain field stored in the state account. A changed record breaks the chain from that hour onward.

Public data: state.json, ledger/daily.json.

Ledger program

Program: BjYQf48816ngSxgxicUhi6UP9UvNzFhonht6hiALLuxH
State account: EdWfpRLhLQEnY3urKnrqmvFEeVZi1qtnwp25CyAQUcRi

A small Solana program with one state account. It never holds user funds: payments pass straight through to the seller and the treasury in the same transaction.

InstructionSignerEffect
purchaseBuyerSends SOL to the treasury for a quoted credit order and counts it.
settleBuyerPays a marketplace seller and sends the fee to the treasury in one step.
post_epochOperatorAdds one hour to the hash chain. Hours must increase, so history cannot be rewritten.
set_configAuthorityChanges the operator, treasury, fee (capped at 20%) or the pause switch.