ODATANOODATANOAPIpreprod

Seamless enterprise and agentic access to Cardano and Midnight.

One key for ODATANO CORE on Cardano, NIGHTGATE on Midnight and ASTRA, analytics over both.

http# base https://api.preprod.odatano.dev
Authorization: Bearer oda_…

GET  /odata/v4/cardano-odata/Addresses('addr1…')
POST /odata/v4/cardano-transaction/BuildSimpleAdaTransaction
POST /odata/v4/nightgate/anchorDocument
GET  /odata/v4/astra/compare(metric='tx.count',window='7d')
GET  /me

Blocks, transactions, UTxOs and pools as OData. Build and submit transactions.

  • Routes/odata/v4/cardano-odata
    /odata/v4/cardano-transaction
    /odata/v4/cardano-sign
  • Network
  • Readblocks, transactions, UTxOs, addresses, pools, epochs, assets
  • BuildADA, multi-asset, mint, metadata and Plutus transactions
  • Sign, submitsigning requests, signature verification, submission

Blocks and contract state on Midnight. Attestations and zero-knowledge proofs, transactions sponsored.

  • Routes/odata/v4/nightgate
    /odata/v4/nightgate-verify
  • NetworkMidnight
  • Readblocks, transactions, contract state, job status
  • Verifyattestations, predicates and documents against chain state
  • Anchordocuments and agent output; sponsored, no NIGHT or DUST needed
  • Provefield, equality, membership, document integrity and diff attestations

Analytics over both chains as OData, computed from the data the hosted ODATANO and NIGHTGATE already index. Reads only, no grant underneath.

  • Routes/odata/v4/astra
  • Status
  • Readchain overview, metric buckets, snapshots, reorgs, sync status
  • Windows1h, 24h, 7d, 30d: value, previous window and change; series in the matching resolution
  • Comparethe same metric on Cardano and Midnight side by side
  • Ranktop entities, concentration (Gini, Nakamoto), distributions, anomalies against a baseline

Getting a key

Cardano wallet

Free
  • Sign-inyour wallet signs a one-time message, no transaction
  • First key

Code

Free
  • Whata short voucher, handed out at events and in giveaways
  • Exchangehere, for a key with the voucher's calls

AI agents

Reads the chain and builds unsigned transactions. A human or a CIP-30 wallet signs, the agent verifies and submits. HSM signing and operator services are out of reach.

  • Package@odatano/core-mcp
  • Readget_transactionget_utxosget_asset_infoquery_entity
  • Buildbuild_ada_transferbuild_mint_transactionbuild_plutus_spend
  • Signcreate_signing_requestverify_signature
  • Submitsubmit_signed_transactionget_submission_status
  • ASTRAanalytics_overviewanalytics_key_figuresanalytics_dailyanalytics_top

Anchors documents, proves zero-knowledge predicates over hidden fields and verifies against live contract state. Transactions are sponsored, the agent holds no NIGHT.

  • Package@odatano/nightgate-mcp
  • Verifyverify_attestationverify_predicateverify_document
  • Proveprove_field_predicateprove_field_equalityprove_field_membership
  • Anchoranchor_documentattest_agent_outputprepare_document_proof
  • Grantgrant_disclosurerevoke_disclosureget_job_status
  • ASTRAanalytics_overviewanalytics_key_figuresanalytics_dailyanalytics_compare
.mcp.json# Claude Code, Claude Desktop, Cursor or any MCP client. One key, both chains;
# the key comes from a sign-in, a code or a purchase above and is shown once.
{ "mcpServers": {
  "odatano":   { "command": "npx", "args": ["-y", "@odatano/core-mcp"],      "env": { "ODATANO_ACCESS_KEY": "oda_…" } },
  "nightgate": { "command": "npx", "args": ["-y", "@odatano/nightgate-mcp"], "env": { "ODATANO_ACCESS_KEY": "oda_…" } }
} }
analytics# Both servers carry the ODATANO ASTRA tools for their chain.
# What an agent asks, and the tool it reaches for:
"How busy was Cardano this week?"                analytics_key_figures(window: "7d")
"Fees per day for the last two weeks"            analytics_daily(topic: "fees", days: 14)
"Which tokens moved most today?"                 analytics_top(ranking: "tokens", window: "24h")
"How many Midnight transactions were shielded?"  analytics_key_figures(metric: "tx.shielded")
"Cardano and Midnight side by side"              analytics_compare(metric: "tx.count", window: "7d")
"Anything unusual yesterday?"                    analytics_anomalies()