Tracks how many unique multisigs were active each day for all agents across all supported networks. This metric is useful to understand the operational footprint and engagement of specific agents over time. The active multisig count reflects the number of unique multisigs that performed at least one on-chain interaction attributed to a given agent within the UTC day window.
The following query is used to compute daily active agents:
query DailyActiveMultisigs($timestamp_gt: Int!, $timestamp_lt: Int!) {
dailyActiveMultisigs_collection(
where: {
and: [
{ dayTimestamp_gt: $timestamp_gt }
{ dayTimestamp_lt: $timestamp_lt }
]
}
orderBy: dayTimestamp
orderDirection: desc
) {
id
count
}
}
Tracks how many unique multisigs were active each day for selected agents on Mode and Optimism. This metric is useful to understand the operational footprint and engagement of specific agents over time. The active multisig count reflects the number of unique multisigs that performed at least one on-chain interaction attributed to a given agent within the UTC day window.
The following query is used to compute daily active agents:
query DailyPerformance($timestamp_gt: Int!, $timestamp_lt: Int!) {
dailyAgentPerformances(
where: {
and: [
{ agentId: 40 }
{ dayTimestamp_gt: $timestamp_gt }
{ dayTimestamp_lt: $timestamp_lt }
]
}
orderBy: dayTimestamp
orderDirection: desc
) {
id
dayTimestamp
activeMultisigCount
}
}
Tracks how many unique multisigs were active each day for selected agents on Gnosis and Base. This metric is useful to understand the operational footprint and engagement of specific agents over time. The active multisig count reflects the number of unique multisigs that performed at least one on-chain interaction attributed to a given agent within the UTC day window.
The following query is used to compute daily active agents:
query DailyPerformance($timestamp_gt: Int!, $timestamp_lt: Int!) {
dailyAgentPerformances(
where: {
and: [
{
or: [
{ agentId: 9 }
{ agentId: 26 }
{ agentId: 29 }
{ agentId: 36 }
{ agentId: 37 }
]
}
{ dayTimestamp_gt: $timestamp_gt }
{ dayTimestamp_lt: $timestamp_lt }
]
}
orderBy: dayTimestamp
orderDirection: desc
) {
id
activeMultisigCount
}
}
Tracks how many unique multisigs were active each day for selected Predict agents on Gnosis. The active multisig countreflects the number of unique multisigs that performed at least one on-chain interaction attributed to a given agent within the UTC day window.
The following query is used to compute daily active agents:
Subgraph links: 1
query DailyPredictPerformances(
$agentIds: [Int!]!
$timestamp_gt: Int!
$timestamp_lt: Int!
) {
dailyAgentPerformances(
where: {
and: [
{ agentId_in: $agentIds }
{ dayTimestamp_gt: $timestamp_gt }
{ dayTimestamp_lt: $timestamp_lt }
]
}
orderBy: dayTimestamp
orderDirection: asc
first: 1000
) {
dayTimestamp
activeMultisigCount
}
}
Tracks how many unique multisigs were active each day for all agents in the Pearl app. The active multisig count reflects the number of unique multisigs that performed at least one on-chain interaction attributed to these agents within the UTC day window.
The following queries are used to compute Pearl daily active agents:
Subgraph links: 1
query DailyPredictPerformances(
$agentIds: [Int!]!
$timestamp_gt: Int!
$timestamp_lt: Int!
) {
dailyAgentPerformances(
where: {
and: [
{ agentId_in: $agentIds }
{ dayTimestamp_gt: $timestamp_gt }
{ dayTimestamp_lt: $timestamp_lt }
]
}
orderBy: dayTimestamp
orderDirection: asc
first: 1000
) {
dayTimestamp
activeMultisigCount
}
}
Subgraph links: 1
query DailyPerformance($timestamp_gt: Int!, $timestamp_lt: Int!) {
dailyAgentPerformances(
where: {
and: [
{ agentId: 40 }
{ dayTimestamp_gt: $timestamp_gt }
{ dayTimestamp_lt: $timestamp_lt }
]
}
orderBy: dayTimestamp
orderDirection: desc
) {
id
dayTimestamp
activeMultisigCount
}
}
This API aggregates Optimus agent metrics from the BabyDegen and Optimism staking subgraphs. Population metrics (daily APR projections, agent age, and funded AUM) are fetched from the BabyDegen subgraph, while staking reward snapshots come from the Optimism staking subgraph. Together with the live OLAS price, those datasets are used to compute the derived staking APR exposed on the BabyDegen economy page.
The resulting API response populates the Optimus agent economy card with three values:
sma7dProjectedUnrealisedPnL field from the population metrics query.sma7dEthAdjustedProjectedUnrealisedPnL field in the same response.fetch-babydegen-staking-apr.js.Subgraph link Optimism BabyDegen
{
dailyPopulationMetrics(
first: 10
orderBy: timestamp
orderDirection: desc
) {
timestamp
totalFundedAUM
medianUnrealisedPnL
averageAgentDaysActive
sma7dProjectedUnrealisedPnL
sma7dEthAdjustedProjectedUnrealisedPnL
medianAUM
}
}
Subgraph link Optimism Staking
{
cumulativeDailyStakingGlobals(
first: 10
orderBy: timestamp
orderDirection: desc
) {
timestamp
medianCumulativeRewards
numServices
}
}
Subgraph link Mode BabyDegen
{
dailyPopulationMetrics(
first: 7
orderBy: timestamp
orderDirection: desc
where: { timestamp_lte: 1758153600 }
) {
timestamp
totalFundedAUM
medianUnrealisedPnL
averageAgentDaysActive
sma7dProjectedUnrealisedPnL
sma7dEthAdjustedProjectedUnrealisedPnL
medianAUM
}
}
Subgraph link Mode Staking
{
cumulativeDailyStakingGlobals(
first: 7
orderBy: timestamp
orderDirection: desc
where: { timestamp_lte: 1758153600 }
) {
timestamp
medianCumulativeRewards
numServices
}
}
Total requests are aggregated from two sources: legacy Mech requests on Gnosis and Mech Marketplace requests on Gnosis and Base. The legacy Mech requests are read from the legacy Mech subgraph, while the marketplace requests are read from the Mech Marketplace subgraphs.
Subgraph link: Legacy Mech (Gnosis)
query MechGlobalsTotalRequests {
global(id: "") {
totalRequests
}
}
query MechMarketplaceTotalRequests {
global(id: "") {
totalRequests
}
}
Predict, Contribute, and Governatooorr request counts are computed by summing per-agent totals across subgraphs using fixed agent IDs: Predict [14, 25, 13], Contribute [6], Governatooorr [5]. The "Other" bucket is computed as Total Requests minus these known categories.
Subgraph link: Mech (on-chain)
query MechRequestsPerAgentOnchains {
requestsPerAgentOnchains(where: { id_in: ["14", "25", "13", "6", "5"] }) {
id
requestsCount
}
}
query MechMarketplaceRequestsPerAgents {
requestsPerAgents(where: { id_in: ["14", "25", "13", "6", "5"] }) {
id
requestsCount
}
}
Aggregates the number of unique OLAS token holders across supported networks. Each network's tokenomics subgraph is queried for the token holder count, and results are summed to obtain the total holders metric shown on the OLAS Token page.
0x0001A500A6B18995B03f44bb040A5fFc28E45CB00xcE11e14225575945b8E6Dc0D4F2dD4C570f79d9f0xFEF5d947472e72Efbb2E388c730B7428406F2F950x064F8B858C2A603e1b106a2039f5446D32dc81c10xFC2E6e6BCbd49ccf3A5f029c79984372DcBFE5270x54330d28ca3357F294334BDC454a032e7f3534160xaCFfAe8e57Ec6E394Eb1b41939A8CF7892DbDc510xcfD1D50ce23C46D3Cf6407487B2F8934e96DC8f9The same query is executed against each tokenomics subgraph with the network's token address to retrieve the holder count.
query HolderCounts($tokenId: ID!) {
token(id: $tokenId) {
holderCount
}
}
Counts the number of wallets with an active veOLAS lock on Ethereum. The metric sums all veOLAS depositors where unlockTimestamp is in the future, using the tokenomics subgraph.
The following queries power the veOLAS metrics shown on the Govern page:
Used for counting wallets with active veOLAS locks whereunlockTimestamp is in the future.
query ActiveVeOlasDepositors {
_page1: veolasDepositors(
first: 1000
skip: 0
where: { unlockTimestamp_gt: $unlockAfter }
orderBy: unlockTimestamp
orderDirection: asc
) {
id
unlockTimestamp
}
_page2: veolasDepositors(
first: 1000
skip: 1000
where: { unlockTimestamp_gt: $unlockAfter }
orderBy: unlockTimestamp
orderDirection: asc
) {
id
unlockTimestamp
}
_page3: veolasDepositors(
first: 1000
skip: 2000
where: { unlockTimestamp_gt: $unlockAfter }
orderBy: unlockTimestamp
orderDirection: asc
) {
id
unlockTimestamp
}
_page4: veolasDepositors(
first: 1000
skip: 3000
where: { unlockTimestamp_gt: $unlockAfter }
orderBy: unlockTimestamp
orderDirection: asc
) {
id
unlockTimestamp
}
_page5: veolasDepositors(
first: 1000
skip: 4000
where: { unlockTimestamp_gt: $unlockAfter }
orderBy: unlockTimestamp
orderDirection: asc
) {
id
unlockTimestamp
}
}
Reads the locked OLAS amount directly from the veOLAS token entry in the same subgraph.
query VeOlasLockedBalance($tokenId: ID!) {
token(id: $tokenId) {
balance
}
}
Tracks the total number of unique operators across all supported networks. This metric aggregates operator data from multiple blockchain sources to provide a comprehensive view of the autonomous agent operator ecosystem and network participation.
The following query aggregates operators from all chains:
Subgraph links: GnosisBaseModeOptimismCeloEthereumPolygonArbitrum
query OperatorGlobals {
globals {
id
totalOperators
}
}
Tracks the total number of transactions executed by all agents across all supported networks. This metric provides insight into the overall activity level and transaction volume generated by the autonomous agent ecosystem.
The following query is used to compute total daily transactions:
query RegistryGlobals {
global(id: "") {
id
txCount
}
}
Breaks down total Predict transactions by agent category using agent-level counters. Categories mirror the UI: Traders, Mechs (Prediction Brokers), and Market Creators/Closers.
Market maker agent IDs: 13
Valory trader agent IDs: 14, 25
Mech agent IDs: 9, 26, 29, 37, 36
The following query is used to fetch per-agent tx counts:
Subgraph link: Gnosis
query AgentTxs($agentIds: [Int!]!) {
agentPerformances(
where: { id_in: $agentIds }
orderBy: id
orderDirection: asc
) {
id
txCount
}
}
Tracks agent-to-agent transactions across Gnosis and Base networks from multiple subgraph sources. This metric aggregates transaction data from Mech Marketplace and Legacy Mech subgraphs to provide a comprehensive view of autonomous agent interaction volume and cross-chain activity.
The following query aggregates ATA transactions from all sources:
Subgraph links: Gnosis MMBase MMGnosis LM
query AtaTransactions {
globals(where: { id: "" }) {
id
totalAtaTransactions
}
}
Tracks the total fees collected from the Mech Marketplace across three different sources: new mech fees from Gnosis and Base networks, and legacy mech fees from Gnosis. New mech fees are already in USD, while legacy fees are converted from wei to XDAI (treated as 1 USD equivalent) before being summed together to provide the total mech marketplace turnover.
The following queries aggregate mech fees from all three sources:
query NewMechFees {
global(id: "") {
id
totalFeesInUSD
}
}
Subgraph link: Gnosis
Note: Legacy mech fees are returned in wei and converted to XDAI by dividing by 10^18 before being added to the total turnover.
query LegacyMechFees {
global(id: "") {
id
totalFeesIn
}
}
These include both in and out totals to compute claimed and unclaimed amounts in the API aggregator.
query NewMechFeesTotals {
global(id: "") {
totalFeesInUSD
totalFeesOutUSD
}
}
Subgraph link: Gnosis
query LegacyMechFeesTotals {
global(id: "") {
totalFeesIn
totalFeesOut
}
}
Tracks the total amount of OLAS tokens currently staked across all agents in the ecosystem. This metric provides insight into the overall economic security and commitment level across all supported networks.
The following query is used to compute total OLAS staked:
query StakingGlobals {
global(id: "") {
totalRewards
currentOlasStaked
}
}
Total ROI shows your agent's overall earnings, including profits from predictions and staking rewards, minus all related costs such as bet amounts, gas fees, and Mech request fees. Requests made for unresolved (open) markets are excluded to ensure accuracy.
The following queries are used to define the value:
query TotalMechRequests {
global(id: "") {
totalRequests
}
}
query MechRequests {
_page1: requests(
first: 1000
skip: 0
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page2: requests(
first: 1000
skip: 1000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page3: requests(
first: 1000
skip: 2000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page4: requests(
first: 1000
skip: 3000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page5: requests(
first: 1000
skip: 4000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page6: requests(
first: 1000
skip: 5000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page7: requests(
first: 1000
skip: 6000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page8: requests(
first: 1000
skip: 7000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page9: requests(
first: 1000
skip: 8000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
_page10: requests(
first: 1000
skip: 9000
where: { blockTimestamp_gt: 1762732800 }
) {
id
questionTitle
blockTimestamp
}
}
query MarketsAndBets {
fixedProductMarketMakerCreations(
where: { blockTimestamp_gt: 1762732800 }
) {
id
question
}
global(id: "") {
totalFees
totalPayout
totalTraded
}
}
Used for getting cumulative staking rewards in OLAS
Subgraph link
query StakingGlobals {
global(id: "") {
totalRewards
currentOlasStaked
}
}
APR is computed from the OLAS staking contracts on Gnosis by querying rewards per second, minimum staking deposit, and number of agent instances, then taking the maximum APR across contracts.
Subgraph used:
Staking subgraph (Gnosis)Query:
{
stakingContracts(where: {instance_in: ["0xeF44Fb0842DDeF59D37f85D61A1eF492bbA6135d","0x389B46c259631Acd6a69Bde8B6cEe218230bAE8C","0x5344B7DD311e5d3DdDd46A4f71481bD7b05AAA3e","0xb964e44c126410df341ae04B13aB10A985fE3513","0x80faD33Cadb5F53f9D29F02Db97D682E8b101618","0x1c2F82413666d2a3fD8bC337b0268e62dDF67434","0x238EB6993b90a978ec6AAD7530d6429c949C08DA","0xDaF34eC46298b53a3d24CBCb431E84eBd23927dA","0x998dEFafD094817EF329f6dc79c703f1CF18bC90","0xaD9d891134443B443D7F30013c7e14Fe27F2E029","0xE56dF1E563De1B10715cB313D514af350D207212","0xBd59Ff0522aA773cB6074ce83cD1e4a05A457bc1","0x3052451e1eAee78e62E169AfdF6288F8791F2918","0x4Abe376Fda28c2F43b84884E5f822eA775DeA9F4","0x2546214aEE7eEa4bEE7689C81231017CA231Dc93","0xD7A3C8b975f71030135f1a66e9e23164d54fF455","0xdB9E2713c3dA3C403F2eA6E570eB978b00304e9E","0x1E90522b45c771DCF5f79645B9e96551d2ECaF62","0x6c65430515c70a3f5E62107CC301685B7D46f991","0x88eB38FF79fBa8C19943C0e5Acfa67D5876AdCC1","0x356C108D49C5eebd21c84c04E9162de41933030c","0x17dBAe44BC5618Cc254055b386A29576b4F87015","0xB0ef657b8302bd2c74B6E6D9B2b4b39145b19c6f","0x3112c1613eAC3dBAE3D4E38CeF023eb9E2C91CF7","0xF4a75F476801B3fBB2e7093aCDcc3576593Cc1fc","0x6C6D01e8eA8f806eF0c22F0ef7ed81D868C1aB39","0x1430107A785C3A36a0C1FC0ee09B9631e2E72aFf","0x041e679d04Fc0D4f75Eb937Dea729Df09a58e454","0x9d6e7aB0B5B48aE5c146936147C639fEf4575231","0x9fb17E549FefcCA630dd92Ea143703CeE4Ea4340","0xCAbD0C941E54147D40644CF7DA7e36d70DF46f44","0xAb10188207Ea030555f53C8A84339A92f473aa5e","0x8d7bE092d154b01d404f1aCCFA22Cef98C613B5D","0x9D00A0551F20979080d3762005C9B74D7Aa77b85","0xE2f80659dB1069f3B6a08af1A62064190c119543","0x75EECA6207be98cAc3fDE8a20eCd7B01e50b3472","0x9c7F6103e3a72E4d1805b9C683Ea5B370Ec1a99f","0xcdC603e0Ee55Aae92519f9770f214b2Be4967f7d","0x22D6cd3d587D8391C3aAE83a783f26c67ab54A85","0xaaEcdf4d0CBd6Ca0622892Ac6044472f3912A5f3","0x168aED532a0CD8868c22Fc77937Af78b363652B1"]}) {
id
rewardsPerSecond
minStakingDeposit
numAgentInstances
}
}
Success rate shows how often your agent's predictions were correct in resolved markets. Bets on unresolved markets or with invalid outcomes are excluded, and the rate is based on the latest 10,000 bets from closed markets to ensure performance remains relevant.
The following query is used:
Used to fetch all bets along with their outcome and the final answer of the associated market
Subgraph link
query ClosedMarketsBets {
_page1: bets(
first: 1000
skip: 0
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page2: bets(
first: 1000
skip: 1000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page3: bets(
first: 1000
skip: 2000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page4: bets(
first: 1000
skip: 3000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page5: bets(
first: 1000
skip: 4000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page6: bets(
first: 1000
skip: 5000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page7: bets(
first: 1000
skip: 6000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page8: bets(
first: 1000
skip: 7000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page9: bets(
first: 1000
skip: 8000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
_page10: bets(
first: 1000
skip: 9000
where: { fixedProductMarketMaker_: { currentAnswer_not: null } }
orderBy: timestamp
orderDirection: desc
) {
outcomeIndex
fixedProductMarketMaker {
id
currentAnswer
}
}
}