Developers & Pricing

Build with the canonical data layer for tokenized real-world assets. Structured schemas, eligibility data, and AI-ready APIs.

What RWA Kernel Provides

Structured asset data: Every RWA is modeled with a consistent TypeScript schema covering legal, eligibility, cash flow, risks, and onchain locations.
Live metrics with provenance: NAV, AUM, and yield where issuer or onchain sources exist. Every metric includes source attribution and quality scoring. Unavailable data is clearly marked.
Token inspection: Given a token address, get an instant explanation of what it represents, suitable for AI agents or developer tooling.
Lab assets: Simulated instruments like the Kernel Revenue Share Token demonstrating full lifecycle tokenization.

API Access & Pricing

Mission-critical infrastructure for tokenized assets. Structured data, risk analysis, and AI-ready APIs.

Free
$0

Explore & experiment

  • Browse all assets
  • 3 token inspections (UI)
  • 50 API calls/day
  • Public documentation
Start Browsing →
Basic
$199/mo

For individuals & small teams

  • All 400+ assets
  • Full details & research
  • Live metrics API
  • 10K API calls/month
  • Eligibility checker
  • Email support
ProPOPULAR
$499/mo

For teams & power users

  • Everything in Basic
  • Risk profiles & rationales
  • Full eligibility data
  • MCP server for AI tools
  • 100K API calls/month
  • Priority support
Enterprise
Custom

For institutions & platforms

  • High-volume access
  • Everything in Pro
  • Bulk data export
  • Custom integrations
  • SLA & dedicated support
  • White-glove onboarding
Contact Sales →

Include your API key in requests:

curl -H "x-api-key: rwa_live_xxx" \
  https://rwakernel.com/api/assets

TypeScript SDK

Install the SDK to get typed access to all RWA Kernel APIs:

npm install @rwakernel/sdk
import { RwaKernel } from "@rwakernel/sdk";

// Initialize with your API key
const kernel = new RwaKernel({ apiKey: "rwa_live_xxx" });

// Get live metrics with full provenance
const metrics = await kernel.getMetrics("buidl");
console.log(`AUM: $${metrics.metrics.aumUsd?.value}`);
console.log(`Source: ${metrics.metrics.aumUsd?.sourceType}`); // "onchain_contract"

// Get all treasury assets
const treasuries = await kernel.getAssets({ assetClass: "treasury" });

// Inspect a token (for AI agents)
const info = await kernel.inspectToken(1, "0x7712c34...");

// Check eligibility
const eligible = await kernel.checkEligibility({
  region: "US",
  investorType: "accredited",
});
getMetrics(assetId)

Live NAV, AUM, yield with source provenance.

getAssets(filters?)

Get all assets with optional filters.

getAsset(id)

Get a single asset by ID or slug.

inspectToken(chainId, address)

Get detailed info + AI summaries for any token.

checkEligibility(query)

Check which assets are available for a given profile.

getMetricsBatch(ids[])

Batch metrics for multiple assets.

Full TypeScript types included. Zero dependencies.

MCP Server for AI Tools

Let Claude Desktop, Cursor, and other AI tools natively query RWA Kernel using the Model Context Protocol:

// claude_desktop_config.json
{
  "mcpServers": {
    "rwakernel": {
      "command": "npx",
      "args": ["@rwakernel/mcp-server"]
    }
  }
}

Then ask Claude:

“Compare the risk profiles of BUIDL and OUSG”
“What tokenized treasuries can a US accredited investor hold?”
“What is 0x7712c34... on Ethereum?”
rwa_get_metrics

Live metrics with source provenance.

rwa_list_assets

List and filter tokenized assets.

rwa_inspect_token

Inspect any token by chain + address.

rwa_compare_assets

Compare risk profiles side-by-side.

rwa_check_eligibility

Check eligibility for a user profile.

rwa_get_asset

Get detailed asset information.

API Endpoints

GET/api/metrics/:id★ Featured

Live metrics with full provenance. Default: expanded (all data including aggregators like CoinGecko). Use mode=verified for issuer/onchain data only. Returns sourceType, qualityScore, qualityGate for each metric.

curl -H "x-api-key: rwa_xxx" "https://rwakernel.com/api/metrics/buidl?mode=verified"
GET/api/assets

List all assets. Filters: assetClass, chainId, tag, isLabAsset, search. Metrics omitted by default (use includeMetrics=true).

curl "https://rwakernel.com/api/assets?assetClass=treasury&includeMetrics=true"
GET/api/assets/:id

Get a single asset by ID or slug. Metrics omitted by default (use includeMetrics=true).

curl "https://rwakernel.com/api/assets/buidl?includeMetrics=true"
GET/api/assets/by-address/:chain/:address

Look up an asset by its onchain token address.

curl "https://rwakernel.com/api/assets/by-address/1/0x7712..."
GET/api/inspect/:chain/:address★ Featured

Token Inspector: returns classification, summary, details, agentSummary, and promptSnippet for AI agents.

curl "https://rwakernel.com/api/inspect/1/0x7712..."
GET/api/eligibility

Check which assets a user can hold based on region, investor type, and holder type.

curl "https://rwakernel.com/api/eligibility?region=US&investorType=accredited"
GET/api/stats

Registry statistics: total assets, AUM, breakdown by class.

curl "https://rwakernel.com/api/stats"
GET/api/labs/krs

Kernel Revenue Share lab data: deal terms, holders, revenue history.

curl "https://rwakernel.com/api/labs/krs"

Provider APIs

Specialized endpoints for third-party provider collections with dedicated data pipelines.

GET/api/providers/ondo-gm★ Featured

Ondo Global Markets: 115 tokenized stocks and ETFs (TSLA, AAPL, SPY, QQQ, etc.). Multi-source enriched data from Yahoo Finance, The Graph subgraph, and onchain oracles.

curl "https://rwakernel.com/api/providers/ondo-gm?format=enriched&include=all"

Ondo GM Query Parameters

formatResponse format:
  • full — Complete RwaAsset structure (default)
  • enriched — Rich data with prices, onchain metrics, market status
  • list — Compact listing format
  • summary — Statistics only, no individual assets
includeComma-separated data to include:
  • prices — Token prices + underlying stock prices (Yahoo Finance)
  • onchain — Onchain metrics from The Graph (holders, supply, transfers)
  • all — Include everything
tickerFilter by underlying ticker (e.g., TSLA, AAPL)
categoryFilter by type: stock or etf
chainFilter by chain: Ethereum, BNB Chain, Solana

Enriched Response Example

// GET /api/providers/ondo-gm?format=enriched&ticker=TSLA&include=all
{
  "provider": { "id": "ondo-gm", "name": "Ondo Global Markets", ... },
  "assets": [{
    "tokenTicker": "TSLAon",
    "underlyingTicker": "TSLA",
    "underlyingName": "Tesla, Inc.",
    "exchange": "NASDAQ",
    "category": "stock",
    "chains": [{ "chainId": 1, "chainName": "Ethereum", "tokenAddress": "0x..." }],
    "underlyingPrice": {        // From Yahoo Finance
      "price": 435.20,
      "changePercent": -0.53,
      "dayHigh": 442.50,
      "dayLow": 432.10,
      "fiftyTwoWeekHigh": 498.83,
      "fiftyTwoWeekLow": 214.25,
      "volume": 49000000
    },
    "tokenPrice": {             // From CoinMarketCap/CoinGecko
      "price": 437.19,
      "changePercent24h": -1.62
    },
    "onChainMetrics": {         // From The Graph subgraph
      "totalSupply": "125000000000000000000000",
      "holderCount": 1250,
      "transferCount24h": 45,
      "transferVolume24h": 2500000
    },
    "marketStatus": { "isUSMarketOpen": false, "nextOpen": "..." }
  }],
  "summary": { "totalAssets": 115, "stocks": 85, "etfs": 30 },
  "dataSources": {
    "official": { "success": true, "count": 115 },
    "subgraph": { "success": true, "count": 98 },
    "yahooFinance": { "success": true, "count": 112 }
  }
}

Note: Ondo Global Markets products are Reg S offerings and NOT available to U.S. persons. These tokens provide economic exposure only — no shareholder rights.

Schema Overview

NEW: The /api/metrics/:id endpoint returns live metrics with provenance:

interface MetricsResponse {
  assetId: string;
  symbol: string;
  request: {                    // Shows what mode was used
    mode: "verified" | "expanded";  // Default: expanded
    minQuality: number;         // Quality threshold used
  };
  provenance: "collector" | "onchain" | "aggregator" | "static" | "estimated";
  hasLiveData: boolean;         // True if live collector data exists
  usedStaticFallback: boolean;  // True if static JSON was used
  qualityGate?: {               // What was filtered out
    minScoreThreshold: number;
    verifiedOnly: boolean;
    withheldMetrics: Array<{ metric: string; reason: string }>;
  };
  metrics: {
    aumUsd?: SourcedMetric;     // AUM (or null if withheld)
    yieldApy?: SourcedMetric;   // Yield APY (or null if withheld)
    navUsd?: SourcedMetric;     // NAV per share
    overallQuality: 1-5;
    qualitySummary: string;
  };
}

interface SourcedMetric {
  value: number;
  sourceType: "onchain_contract" | "onchain_oracle" | "issuer_official" 
            | "aggregator" | "estimated";
  sourceRef: string;
  qualityScore: 1-5;
  isStale: boolean;
  timestamp: string;
}

Every asset conforms to the RwaAsset interface:

interface RwaAsset {
  id: string;                // Unique identifier
  slug: string;              // URL-friendly slug
  name: string;              // Full name
  symbol?: string;           // Token symbol
  assetClass: AssetClass;    // "treasury" | "money_market_fund" | ...
  description: string;       // Short description

  chains: ChainLocation[];   // Where deployed
  legal: LegalInfo;          // Issuer, jurisdiction, wrapper
  eligibility: Eligibility;  // KYC, accreditation, regions
  cashFlow: CashFlowModel;   // Type, frequency, rates
  risk: RiskFlags;           // Contract, custody, regulatory
  riskProfile?: RiskProfile; // Multi-dimensional risk grid
  links: AssetLinks;         // Official site, docs, explorers

              metrics?: AssetMetrics;    // AUM, yield (returned only when includeMetrics=true)
  tags?: string[];           // For filtering
  isLabAsset?: boolean;      // True for simulated assets
}

The /api/inspect endpoint returns:

interface InspectResponse {
  asset: RwaAsset | null;    // Full asset data, or null if not found
  classification: "rwa" | "unknown";
  summary: string;           // Human-readable summary
  details: string[];         // Bullet points of key properties
  agentSummary: string;      // Concise summary for AI agents
  promptSnippet: string;     // Instructions for agent interpretation
}

NEW: The RiskProfile provides machine-readable risk analysis:

interface RiskProfile {
  underlyingCredit?: RiskDimension;  // Credit risk of backing
  marketRate?: RiskDimension;        // Interest rate exposure
  structural?: RiskDimension;        // Legal/structural complexity
  legalRegulatory?: RiskDimension;   // Regulatory clarity
  smartContract?: RiskDimension;     // Technical/audit risk
  liquidity?: RiskDimension;         // Redemption/trading risk
  lastReviewedAt?: string;
}

interface RiskDimension {
  level: "low" | "medium" | "high";
  rationale: string;
}

Asset Class Extensions

Beyond financial RWAs, the registry includes Compute, IP, Carbon, Energy, and Data assets. Each class has an optional extension with specialized fields:

// Asset classes
type AssetClass = 
  | "treasury" | "money_market_fund" | "credit" | "stablecoin"
  | "tokenized_equity" | "fund" | "real_estate"
  | "compute"   // GPU, AI inference, storage
  | "ip"        // Music royalties, patents, biotech
  | "carbon"    // Carbon credits, environmental
  | "energy"    // RECs, solar revenue
  | "data"      // Data marketplaces, streams
  | "other";

// Extended RwaAsset for non-financial classes
interface RwaAsset {
  // ... core fields ...
  
  compute?: ComputeExtension;  // When assetClass === "compute"
  ip?: IpExtension;            // When assetClass === "ip"
  carbon?: CarbonExtension;    // When assetClass === "carbon"
  energy?: EnergyExtension;    // When assetClass === "energy"
  data?: DataExtension;        // When assetClass === "data"
}
ComputeExtension
{
  resource: {
    computeType: "gpu_rendering",
    networkCapacity: {
      totalNodes: 5000,
      totalGpus: 10000,
      utilizationRate: 0.75
    }
  },
  economics: {
    tokenUtility: "Payment + Staking",
    stakingYield: { currentApy: 8.5 }
  }
}
IpExtension
{
  ipType: "music",
  rights: {
    rightsType: "royalty_share",
    duration: "perpetual"
  },
  revenue: {
    paymentFrequency: "quarterly",
    historicalRevenue: {
      amount: 2500000
    }
  }
}
CarbonExtension
{
  credit: {
    creditType: "voluntary_offset",
    standard: "Verra VCS",
    vintage: "2020-2023"
  },
  environmental: {
    co2EquivalentTonnes: 25000000
  }
}
DataExtension
{
  dataAsset: {
    dataType: "data_marketplace",
    accessModel: "token_gated",
    updateFrequency: "real-time"
  },
  economics: {
    pricingModel: "pay_per_query"
  }
}

Filtering by Asset Class

Use the assetClass query parameter to filter assets:

# Get all compute/GPU tokens
GET /api/assets?assetClass=compute

# Get all carbon credit tokens
GET /api/assets?assetClass=carbon

# Get all IP/royalty tokens
GET /api/assets?assetClass=ip

# Combine with other filters
GET /api/assets?assetClass=compute&chainId=1
GET /api/assets?assetClass=treasury&tag=featured

Building AI Agents on RWA Kernel

The /api/inspect endpoint returns two fields specifically designed for AI agents:

agentSummary

A concise, factual summary of the asset. Contains: name, type, issuer, underlying assets, yield, AUM, and eligibility requirements. Use this to answer "what is this token?" questions.

promptSnippet

Instructions for how to interpret this token. Explains what exposure it represents, how yield works, and key constraints (KYC, transfer restrictions). Inject this into your agent's context.

Example: Agent Lookup Flow

1. User asks about a token

"What is 0x7712c34205737192402172409a8f7ccef8aa2aec on Ethereum?"

2. Agent calls RWA Kernel
curl https://rwakernel.com/api/inspect/1/0x7712c34...

{
  "classification": "rwa",
  "agentSummary": "BlackRock USD Institutional Digital Liquidity Fund (BUIDL) is a money market fund issued by BlackRock / Securitize. Backed by US Treasury bills, repo agreements, cash. 2.95% yield, $2.3B AUM. KYC required, accredited investors only, $5M minimum.",
  "promptSnippet": "When you see this token, treat it as exposure to a money market fund holding short-term, high-quality debt. Yield accrues daily, typically via NAV appreciation or rebasing. The holder earns yield passively. Important: only whitelisted (KYC'd) addresses can hold this token, holders must be accredited/qualified investors. This token is NOT freely tradeable on public DEXs.",
  "asset": { ... }
}
3. Agent responds to user

Uses agentSummary to answer the question, and promptSnippet to guide any follow-up reasoning about the asset.

More Agent Examples

Explain a Token

Prompt

What is the token at 0x7712... on Ethereum?

API Call
GET /api/inspect/1/0x7712c34205737192402172409a8f7ccef8aa2aec
Response
{ "classification": "rwa", "agentSummary": "BlackRock USD Institutional...", "promptSnippet": "When you see this token...", "asset": {...} }

Filter Assets

Prompt

Show me treasury tokens available to non-US investors

API Call
GET /api/assets?assetClass=treasury&tag=non-us
Response
{ "assets": [{ "id": "usdy", ... }, { "id": "usdm", ... }], "total": 3 }

Summarize Cash Flow

Prompt

How does BUIDL pay out?

API Call
GET /api/assets/buidl
Response
{ "asset": { "cashFlow": { "type": "money_market_yield", "frequency": "daily", ... } } }

Data Coverage & Disclaimers

Two data modes. By default, the API returns expanded data (all sources including aggregators like CoinGecko). Use mode=verified for issuer/onchain data only.

Coverage varies by asset. Some issuers publish live data (NAV, AUM), others don't. Verified mode may return empty for assets without issuer feeds.

Quality gate. Each API response includes a qualityGate object showing which metrics were withheld and why.

Not investment advice. Nothing here constitutes a recommendation. Do your own research.

Ready to integrate?

Try the Token Inspector or explore the asset registry.