skills/ordfs/SKILL.md
This skill should be used when the user asks "what is ORDFS", "how to use ordfs.network", "ordfs API", "access on-chain content", "inscription gateway", "ordfs query parameters", "ordfs sequence", "ordfs directory", "ordfs preview", "recursive inscriptions", "ord-fs/json", or needs to reference, access, or serve on-chain content through ORDFS.
npx skillsauth add b-open-io/bsv-skills ordfsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
HTTP gateway for accessing on-chain content (inscriptions) from BSV blockchain.
Live Gateway: https://ordfs.network Repository: https://github.com/b-open-io/1sat-stack
| Endpoint | Purpose |
|----------|---------|
| /{txid}_{vout} | Direct content access |
| /content/{pointer} | Content with options |
| /content/{pointer}:{seq} | Specific version |
| /content/{pointer}/{file} | File from directory |
| /preview/{b64Html} | Preview HTML code |
| /v2/metadata/{outpoint} | Metadata only |
https://ordfs.network/{txid}_{vout}
Example:
https://ordfs.network/abc123...def_0
All formats resolve to the same content:
| Format | Example |
|--------|---------|
| Underscore | abc123..._0 |
| Period | abc123....0 |
| Txid only | abc123... (defaults to vout 0) |
/content/{pointer}[:{sequence}][/{filepath}]
Query Parameters:
| Param | Default | Description |
|-------|---------|-------------|
| content | true | Include content data |
| map | false | Include MAP metadata |
| out | false | Include raw output (base64) |
| parent | false | Include parent reference |
| raw | - | Return directory JSON instead of index.html |
Examples:
/content/abc123..._0?map=true # With MAP metadata
/content/abc123..._0?content=false # Metadata only
/content/abc123..._0?raw # Directory listing
Track inscription updates using sequence numbers.
/content/{pointer} # Raw content from the outpoint, no origin resolution
Behavior: Returns content directly from the specified outpoint. No crawl is performed.
| Seq | Behavior | |-----|----------| | (none) | Raw content from the outpoint, no origin resolution, no crawl | | -2 | Origin only — backward crawl to find origin, returns origin data, no forward crawl | | 0 | Resolve at the requested outpoint, also resolves origin to return in metadata | | -1 | Latest state — full forward crawl to current tip | | N (positive) | Specific sequence in the ordinal's transfer chain |
/content/{pointer}:-2 # Origin only
/content/{pointer}:0 # Resolve at outpoint, with origin metadata
/content/{pointer}:-1 # Latest state (full forward crawl)
/content/{pointer}:5 # 5th transfer in chain
:N where N >= 0): Long TTL (30 days), immutable content:-1): Short TTL (60s)| Header | Description |
|--------|-------------|
| X-Outpoint | Current outpoint |
| X-Origin | Original inscription outpoint |
| X-Ord-Seq | Sequence number |
| X-Map | JSON MAP metadata |
| X-Parent | Parent inscription outpoint |
Inscriptions with content type ord-fs/json represent directories.
{
"index.html": "ord://abc123..._0",
"style.css": "abc123..._1",
"app.js": "def456..._0"
}
Values can be:
ord://txid_vout - Full ordinal referencetxid_vout or txid - Direct reference_N - Relative vout reference (resolved to {manifest_txid}_N)_N)ORDFS natively resolves _N patterns in directory manifests. When an ord-fs/json entry has a value like _1, ORDFS resolves it to {manifest_txid}_1 — the sibling output in the same transaction.
{
"SKILL.md": "_1",
"README.md": "_2",
"lib/utils.ts": "_3"
}
Clients do NOT need to parse the manifest and construct outpoint URLs. Instead, request files by path:
/content/{manifest_outpoint}/SKILL.md → resolves _1 → {txid}_1
/content/{manifest_outpoint}/lib/utils.ts → resolves _3 → {txid}_3
ORDFS supports nested directories. If a directory entry points to another ord-fs/json inscription, ORDFS recurses into it automatically:
{
"SKILL.md": "_1",
"references": "_2"
}
Where _2 is itself an ord-fs/json manifest:
{
"api-docs.md": "_1",
"examples.md": "_2"
}
Accessing /content/{root_manifest}/references/api-docs.md traverses both levels.
/content/{directory_pointer}/index.html
/content/{directory_pointer}/style.css
/content/{directory_pointer}/app.js
For SPAs, unknown paths fall back to index.html:
/content/{pointer}/unknown/path → Returns index.html
Add ?raw to get the directory listing instead of index.html:
/content/{pointer}?raw
Test HTML inscriptions before broadcasting.
/preview/{base64EncodedHtml}
Example:
const html = "<html><body>Hello!</body></html>";
const b64 = btoa(html);
const previewUrl = `https://ordfs.network/preview/${b64}`;
curl -X POST https://ordfs.network/preview \
-H "Content-Type: text/html" \
-d "<html><body>Hello!</body></html>"
Reference other inscriptions from HTML/JS content.
<script src="/content/abc123..._0"></script>
<img src="/def456..._0" />
<link href="/content/style123..._0/main.css" rel="stylesheet">
ORDFS sets up base paths for recursive content to resolve correctly.
| Endpoint | Purpose |
|----------|---------|
| /v1/bsv/block/latest | Latest block info |
| /v1/bsv/block/height/{h} | Block by height |
| /v1/bsv/block/hash/{hash} | Block by hash |
| /v1/bsv/tx/{txid} | Raw transaction |
| Endpoint | Purpose |
|----------|---------|
| /v2/tx/{txid} | Raw transaction |
| /v2/tx/{txid}/proof | Merkle proof |
| /v2/tx/{txid}/beef | BEEF format proof |
| /v2/tx/{txid}/{vout} | Specific output |
| /v2/block/tip | Latest block header |
| /v2/chain/height | Current height |
| /v2/metadata/{outpoint} | Inscription metadata |
| /v2/stream/{outpoint} | Streaming content |
Map custom domains to inscriptions.
Create _ordfs.yourdomain.com:
_ordfs.yourdomain.com IN TXT "ordfs=abc123..._0:5"
Format: ordfs={pointer}[:{sequence}]
yourdomain.com/path/to/file// Using bitcoin-image for normalization
import { getDisplayUrl } from "bitcoin-image";
const imageUrl = await getDisplayUrl("ord://abc123..._0");
// Returns: https://ordfs.network/abc123..._0
// Direct construction
const url = `https://ordfs.network/${txid}_${vout}`;
// Get inscription content
const response = await fetch(`https://ordfs.network/${origin}`);
const content = await response.text();
// Get with metadata
const metaResponse = await fetch(
`https://ordfs.network/content/${origin}?map=true`
);
const mapData = metaResponse.headers.get("X-Map");
// Get latest sequence
const response = await fetch(`https://ordfs.network/content/${origin}`);
const sequence = response.headers.get("X-Ord-Seq");
const currentOutpoint = response.headers.get("X-Outpoint");
| Request Type | Cache TTL |
|--------------|-----------|
| Specific sequence (:N) | 30 days |
| Latest sequence (default) | 60 seconds |
| Block headers (depth 100+) | 30 days |
| Block headers (depth 4-99) | 1 hour |
| Block tip | No cache |
references/api-reference.md - Complete API documentationreferences/advanced-features.md - DNS, streaming, directoriesexamples/fetch-content.ts - Content fetching patternsexamples/recursive-inscription.html - Recursive inscription examplebitcoin-image - URL normalization for ordfs.network@1sat/actions - Create inscriptions@1sat/templates - Inscription templatesdevelopment
This skill should be used when the user asks to integrate "Yours Wallet", "connect a BSV wallet", use "BRC-100", "pay with BSV wallet", add "wallet checkout in a web app", use "yours-wallet-provider", build a "pay with Yours Wallet" button, access "window.CWI", or connect a React app to a BRC-100 wallet.
development
This skill should be used when the user asks to "send BSV", "transfer satoshis", "create payment transaction", "send from WIF", "P2PKH transaction", or needs to build, sign, and broadcast P2PKH transactions from a WIF private key using @bsv/sdk.
development
This skill should be used when the user asks to "encrypt message with BSV key", "decrypt with private key", "ECDH encryption", "AES-256-GCM BSV", "EncryptedMessage", "BRC-2 encryption", or needs to encrypt/decrypt data using BSV keys and @bsv/sdk.
tools
This skill should be used when the user asks to "implement BRC-100 wallet", "use wallet-toolbox", "TypeScript BSV wallet", "BRC-100 implementation", "desktop wallet", "Electron wallet", "browser wallet", "IndexedDB wallet storage", "wallet actions", "wallet baskets", "UTXO management", "createAction", "listOutputs", "wallet certificates", "WalletClient", "noSend", "BEEF payment", "pay-beef", "send BEEF", "Transaction.fromBEEF", "toHexBEEF", or needs guidance on building conforming wallets using @bsv/wallet-toolbox or connecting to a user's BRC-100 wallet via WalletClient.