API Reference
Makechain exposes a single gRPC service (MakechainService) for reading and writing state. The service supports grpc-web for browser clients and server reflection for runtime discovery.
Write Operations
Submit signed messages for inclusion in the consensus pipeline.
| RPC | Description |
|---|---|
SubmitMessage | Submit a single signed message (verify, validate, mempool) |
BatchSubmitMessages | Submit multiple signed messages atomically |
DryRunMessage | Validate a message against current state without submitting |
Read Operations
Query the current state of projects, accounts, refs, and commits. All list operations support cursor-based pagination (max 200 items per page).
Projects
| RPC | Description |
|---|---|
GetProject | Get project metadata and status by project ID |
GetProjectByName | Look up a project by owner MID and project name |
SearchProjects | Search projects by name prefix with pagination |
ListProjects | List projects with optional owner filter and pagination |
GetProjectActivity | Recent messages for a specific project |
Git Objects
| RPC | Description |
|---|---|
GetRef | Get a single ref by project ID and ref name |
ListRefs | List all refs in a project with pagination |
GetRefLog | Get the update history of a ref |
GetCommit | Get commit metadata by project ID and commit hash |
ListCommits | List commits in a project with pagination |
GetCommitAncestors | Walk the commit graph and return ancestor chain |
ListCollaborators | List project collaborators with pagination |
Accounts
| RPC | Description |
|---|---|
GetAccount | Get account metadata, keys, storage units, project count, and verifications |
GetAccountByKey | Look up an account by its Ed25519 public key |
GetAccountActivity | Recent messages for a specific account |
GetKey | Inspect a single key entry (scope, status, allowed projects) |
ListKeys | List all keys registered to an account with pagination |
ListVerifications | List verified external addresses for an account |
Blocks & Messages
| RPC | Description |
|---|---|
GetBlock | Get a committed block by block number (includes transaction chunks) |
ListBlocks | List recent committed blocks (newest first) |
GetMessage | Look up a committed message by its BLAKE3 hash |
ListMessages | List committed messages across a range of blocks |
Node Operations
| RPC | Description |
|---|---|
GetNodeStatus | Current block height, mempool size, pending blocks, network, version, and uptime |
GetHealth | Liveness and readiness probe for load balancers |
GetChainStats | Cumulative chain analytics (total messages, projects, accounts, blocks) |
GetSnapshotInfo | Current snapshot status (block number, entry count, state root) |
GetMempoolInfo | Mempool size and per-type message counts |
Streaming
| RPC | Description |
|---|---|
SubscribeMessages | Server-streaming RPC for live message updates |
SubscribeBlocks | Server-streaming RPC for live block updates |
SubscribeMessages supports filtering by:
project_id— only receive messages for a specific projecttypes— only receive specific message types (e.g., onlyCOMMIT_BUNDLE)
Connection
The default gRPC endpoint is localhost:50051. Use --grpc-addr to configure.
# gRPC (native clients)
grpcurl -plaintext localhost:50051 list
# CLI client
cargo run --bin cli -- --endpoint http://localhost:50051 get-account --mid 1
grpc-web
Browser clients can connect via grpc-web (HTTP/1.1). The node accepts HTTP/1.1 requests and translates them to gRPC internally via tonic-web. CORS headers are configured to allow cross-origin requests.