nibiru-gql · git:20260920.5b15663 · 2026-09-20 · sha256 ce6bd8cd76127a7c
nibiru-gql git:20260920.5b15663A
Immutable. This exact content never changes and is served at /api/v1/blob/ce6bd8cd76127a7c.
--- name: nibiru-gql description: >- Query the Nibiru Heart Monitor GraphQL API and its indexed chain data. Use for wallet balances, staking, validators, delegations, Cosmos transaction messages, Wasm events, indexing gaps, or comparisons with Sai Keeper. Read the matching reference before querying. --- # Nibiru GraphQL and Heart Monitor Use this skill for data owned by the Heart Monitor (HM), Nibiru's blockchain indexer and GraphQL API. The HM is not the Sai Keeper. It provides the chain-event and wallet/indexer evidence that Sai Keeper consumes. ## Endpoints | Network | GraphQL endpoint | Playground | | --- | --- | --- | | Mainnet | `https://hm-graphql.nibiru.fi/query` | `https://hm-graphql.nibiru.fi/graphql` | | Testnet | `https://hm-graphql.itn-2.nibiru.fi/query` | `https://hm-graphql.itn-2.nibiru.fi/graphql` | ## Reference router | Need | Read | | --- | --- | | Validators, delegations, redelegations, unbondings, rewards boundaries | [`db-staking.md`](db-staking.md) | | Account, bank, and enriched EVM balances | [`db-user-balances.md`](db-user-balances.md) | | Cosmos transaction messages and custom Wasm events | [`db-events.md`](db-events.md) | ## Source boundaries ```text Nibiru chain -> Heart Monitor database and GraphQL -> Sai Keeper reads HM event data and refreshes Sai contract state -> Sai Keeper database and GraphQL -> Sai application ``` Use the owning layer for each fact: - Heart Monitor owns indexed chain messages, custom Wasm events, and ordinary chain account balances. - Sai Perp contracts own live deposits and trading credits. - Sai Keeper owns its derived Perp state, including table `sai_user_deposit_balances`, and exposes that state through its GraphQL API. - The Sai application is a client of Sai Keeper; a UI mismatch does not prove an HM or Sai Keeper indexing failure. For a Sai incident, first prove the contract state with agent skill `sai-perps`, then verify the chain event through this skill. Use agent skill `sai-db` to locate the API-serving Sai Keeper database and inspect its derived row. Finally, query the Sai Keeper GraphQL API to verify app-visible data. ## Routing boundaries - Use agent skill `nibiru-cli-nibid` for authoritative chain state, address normalization, and transaction lookup. - Use agent skill `sai-perps` for Perp contract state and reconciliation across contracts, Sai Keeper GraphQL, REST, and operator records. - Use agent skill `sai-db` for safe discovery and read-only inspection of the API-serving Sai Keeper PostgreSQL database. Do not infer its endpoint from a database name or a remembered private IP. ## Common rules - Prefer GraphQL field `user.all_balances` to legacy field `user.balances` for wallet balance investigations. - Use GraphQL container `staking` for staking queries; root-level staking fields are deprecated. - HM is asynchronous. For strict, height-specific chain state, use the chain rather than the indexer. - Token and balance amounts are base units. Interpret them with the relevant decimal metadata. - Distinguish an HM event from a Sai Keeper state row. A present event establishes that HM indexed the chain event; it does not by itself establish that a Keeper refresh completed.