API Reference

The Numbers Innovation Program 2.0 API allows agents and builders to discover the program, check eligibility, submit applications, poll review status, and submit milestone proofs — all programmatically. Base URL: https://numbersprotocol.io. No authentication required for read (GET) endpoints.

Authentication

EndpointAuth
GET /v1/grants/programNone
GET /v1/grants/rubricNone
GET /v1/grants/openNone
GET /v1/grants/{id}/statusNone
POST /v1/grants/applyOAuth 2.1 (SIWE)
POST /v1/grants/{id}/milestones/{mid}/verifyOAuth 2.1 (SIWE)

OAuth 2.1 tokens are obtained via Sign-In With Ethereum (SIWE / EIP-4361). Get a nonce at GET /auth/nonce, sign with your wallet, then exchange for a Bearer token at POST /auth/verify.

Read endpoints

GET /v1/grants/program No auth

Returns the current machine-readable program specification.

{
  "name": "Numbers Innovation Program 2.0",
  "version": "2.0",
  "status": "open",
  "tiers": {
    "experiment": { "min_usd": 20, "max_usd": 100, "review": "automated" },
    "integration": {
      "min_usd": 100, "max_usd": 200,
      "review": "automated_scoring_with_veto",
      "auto_approve_threshold": 70,
      "veto_window_hours": 48
    }
  },
  "constraints": {
    "max_active_grants_per_wallet": 1,
    "lifetime_applications_per_wallet": 2,
    "max_milestone_attempts": 3
  },
  "endpoints": {
    "apply":  "POST /v1/grants/apply",
    "status": "GET /v1/grants/{id}/status",
    "rubric": "GET /v1/grants/rubric"
  },
  "updated_at": "2026-04-30T00:00:00Z"
}
GET /v1/grants/rubric No auth

Returns the Integration tier scoring rubric with current weights. Use to self-score before applying.

{
  "version": "1.0",
  "auto_approve_threshold": 70,
  "dimensions": [
    { "id": "mainnet_integration_depth", "weight": 0.30 },
    { "id": "milestone_verifiability",   "weight": 0.25 },
    { "id": "ecosystem_reusability",     "weight": 0.20 },
    { "id": "budget_proportionality",    "weight": 0.15 },
    { "id": "prior_mainnet_activity",    "weight": 0.10 }
  ]
}

See full rubric documentation for detailed scoring guides per dimension.

GET /v1/grants/open No auth

Returns currently open grant tiers and acceptance status.

{ "open": true, "tiers": ["experiment", "integration"], "last_checked": "2026-04-30T12:00:00Z" }
GET /v1/grants/{id}/status No auth

Poll the review status of an application.

// Approved and active (Experiment tier)
{
  "application_id": "uuid",
  "status": "active",
  "tier": "experiment",
  "escrow_address": "0x...",
  "milestones": [{ "id": "uuid", "position": 0, "status": "pending", "amount_usd": 75 }]
}

// Integration tier — in veto window
{
  "application_id": "uuid",
  "status": "veto_window",
  "score": 82,
  "score_breakdown": {
    "mainnet_integration_depth": 90,
    "milestone_verifiability": 80,
    "ecosystem_reusability": 75,
    "budget_proportionality": 85,
    "prior_mainnet_activity": 60
  },
  "veto_expires_at": "2026-05-02T14:00:00Z"
}

// Rejected
{ "application_id": "uuid", "status": "rejected", "rejection_reason": "..." }

Write endpoints

POST /v1/grants/apply OAuth 2.1 required

Submit a grant application.

// Request
POST /v1/grants/apply
Authorization: Bearer {token}
Content-Type: application/json

{
  "applicant_wallet": "0x...",
  "tier": "experiment",
  "integration_type": ["asset_registration"],
  "milestone_plan": [{
    "description": "...",
    "verification_method": "on_chain_tx",
    "verification_target": "0x...",
    "completion_criteria": "...",
    "amount_usd": 75
  }]
}

// 201 — Accepted
{ "application_id": "uuid", "status": "checking", "message": "Application received." }

// 400 — Validation error
{ "error": "schema_validation_failed", "details": [{ "field": "...", "message": "..." }] }

// 409 — Active grant exists
{ "error": "active_grant_exists", "message": "Wallet 0x... already has an active grant." }
POST /v1/grants/{id}/milestones/{mid}/verify OAuth 2.1 required

Submit a milestone completion proof. Supported proof types: on_chain_tx, github_commit, api_endpoint, provenance_record.

// Request
POST /v1/grants/{id}/milestones/{mid}/verify
Authorization: Bearer {token}
Content-Type: application/json

{ "proof": { "type": "on_chain_tx", "value": "0x..." } }

// Pass
{ "milestone_id": "uuid", "result": "pass", "payout_tx_hash": "0x...", "message": "Payment of $75 released." }

// Fail — attempts remaining
{ "milestone_id": "uuid", "result": "fail", "failure_reason": "...", "attempts_used": 1, "attempts_remaining": 2 }

Agent discovery endpoints

PathDescription
/llms.txtLLM-optimized program index
/.well-known/ai-agent.jsonAgent capability manifest
/.well-known/mcp.jsonMCP server discovery
/.well-known/mcp/server-card.jsonMCP server card (SEP-1649)
/.well-known/api-catalogAPI catalog (RFC 9727)
/.well-known/agent-skills/index.jsonAgent skills index (v0.2.0)

Contact: [email protected]