{"service":"AlgoTerminal","methodology_version":"1.2.0","network":"algorand-mainnet","payment":{"protocol":"x402","version":2,"scheme":"exact","asset":"31566704","asset_symbol":"USDC","decimals":6,"network":"algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=","facilitator":"https://facilitator.goplausible.xyz","payTo":"36AZ3YZGHLUFFVU4STAQGSQMRB2W3TK5VVTKZVN6L2LH7NRCK7X27TMEJM","fee_sponsored":true},"schemas":{"kpi_fact":"https://api-production-36692.up.railway.app/schema/kpi-fact.json","methodology":"https://api-production-36692.up.railway.app/methodology","methodology_version":"1.2.0"},"protocols":[{"id":"folks","name":"Folks Finance","class":"lending","kpis":["tvl","total_borrows","utilization","supply_apr","borrow_apr","gross_fees_24h","supply_side_revenue_24h","protocol_revenue_24h","take_rate","capital_efficiency","active_users_24h","pool_count"],"sources":["algod:mainnet-api.4160.nodely.dev","mainnet-idx.4160.nodely.dev"]},{"id":"pact","name":"Pact","class":"dex","kpis":["tvl","volume_24h","gross_fees_24h","capital_efficiency","volume_to_tvl","pool_count"],"sources":["api.pact.fi"],"declined":{"protocol_revenue_24h":"Pact does not publish the protocol's share of the swap fee. `pact_fee_bps` is null on every pool in the catalogue (3,961 of 3,961, measured 2026-09-09), so the only honest bound is \"at least $0\", which constrains nothing. Publishing $0.00 would read as \"Pact captures no revenue\" when the fact is that Pact does not disclose its cut (DATA_SCHEMA.md §1.5, §3.4). gross_fees_24h — what swappers actually paid — is published and is exact.","supply_side_revenue_24h":"Derived from a fee split Pact does not publish (`pact_fee_bps` is null on all 3,961 pools). With the protocol share unknown, this figure would equal gross_fees_24h exactly, which asserts that LPs receive 100% of swap fees — a claim about Pact we cannot support (DATA_SCHEMA.md §3.4). Use gross_fees_24h, which is measured.","take_rate":"take_rate is protocol_revenue_24h / gross_fees_24h, and Pact does not publish the numerator: `pact_fee_bps` is null on all 3,961 pools. A take_rate of 0.000000 would rank Pact below every protocol that discloses its cut, for a reason that is about disclosure rather than economics (DATA_SCHEMA.md §1.5, §3.4).","fee_apr":"fee_apr is supply_side_revenue_24h * 365 / tvl, and the supply-side split is unpublished (`pact_fee_bps` is null on all 3,961 pools). Computing it would silently assume LPs keep 100% of fees and would return a number identical to capital_efficiency. Use capital_efficiency, which is built on measured gross fees and makes no split assumption.","active_users_24h":"DATA_SCHEMA.md §4.1 counts distinct addresses transacting against a protocol's application ids, and Pact has no single validator application to filter on: every pool is its own application (3,961 distinct app ids), so the count would require 3,961 paged indexer walks per refresh, and any smaller sample would answer a narrower question than the KPI names. Declined rather than approximated (DATA_SCHEMA.md §1.5)."}},{"id":"tinyman","name":"Tinyman","class":"dex","kpis":["tvl","volume_24h","gross_fees_24h","supply_side_revenue_24h","protocol_revenue_24h","take_rate","capital_efficiency","fee_apr","volume_to_tvl","active_users_24h","pool_count"],"sources":["mainnet.analytics.tinyman.org","algod:mainnet-api.4160.nodely.dev","indexer:mainnet-idx.4160.nodely.dev"]}],"routes":[{"path":"/metric/{protocol}/{kpi}","method":"GET","price_usdc":"0.005","price_fresh_usdc":"0.02","price_active_users_usdc":"0.03","available":true},{"path":"/compare","method":"GET","price_usdc":"0.05","price_fresh_usdc":"0.08","available":true},{"path":"/ask","method":"POST","price_usdc":"0.15","price_deep_usdc":"0.2","available":false}]}