| -- RMI v5.0 ClickHouse Schema (T07) | |
| -- Apply: docker exec rmi-clickhouse clickhouse-client < infra/clickhouse_schema.sql | |
| -- Idempotent: all CREATE statements use IF NOT EXISTS. | |
| CREATE DATABASE IF NOT EXISTS rmi; | |
| USE rmi; | |
| CREATE TABLE IF NOT EXISTS x402_revenue ( | |
| tx_hash String, | |
| tool_id String, | |
| agent_id String, | |
| amount_usd Float64, | |
| chain String, | |
| paid_at DateTime, | |
| tier String | |
| ) ENGINE = MergeTree() ORDER BY paid_at; | |
| CREATE TABLE IF NOT EXISTS mcp_calls ( | |
| call_id String, | |
| tool_id String, | |
| agent_id String, | |
| latency_ms UInt32, | |
| success UInt8, | |
| called_at DateTime | |
| ) ENGINE = MergeTree() ORDER BY called_at; | |
| CREATE TABLE IF NOT EXISTS indexer_lag ( | |
| chain String, | |
| block_lag UInt32, | |
| last_block UInt64, | |
| updated_at DateTime | |
| ) ENGINE = MergeTree() ORDER BY (chain, updated_at); | |
| CREATE TABLE IF NOT EXISTS reputation_deltas ( | |
| deployer_id String, | |
| old_alpha UInt32, | |
| old_beta UInt32, | |
| new_alpha UInt32, | |
| new_beta UInt32, | |
| event_type String, | |
| updated_at DateTime | |
| ) ENGINE = MergeTree() ORDER BY (deployer_id, updated_at); | |
| CREATE TABLE IF NOT EXISTS cost_attribution ( | |
| ts DateTime, | |
| tool_id String, | |
| agent_id String, | |
| llm_tokens_cents UInt32, | |
| rpc_requests_cents UInt32, | |
| storage_reads_cents UInt32, | |
| compute_cents UInt32, | |
| price_charged_cents UInt32 | |
| ) ENGINE = MergeTree() | |
| ORDER BY (ts, tool_id, agent_id) | |
| PARTITION BY toYYYYMM(ts); | |