get_market_lifecycle
Retrieve the complete lifecycle of a market, including creation, trading statistics, splits/merges, resolution status, and redemptions from on-chain data with metadata.
Instructions
Get the complete lifecycle of a market: creation, trading stats, splits/merges, resolution status, and redemptions — all from on-chain data with metadata.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| conditionId | Yes | Market conditionId |
Implementation Reference
- mcp-server/src/index.ts:912-981 (handler)The handler function for 'get_market_lifecycle' performs queries against both Simple and NegRisk markets, aggregates metadata, and returns a comprehensive market lifecycle object.
async ({ conditionId }) => { try { const lifecycleQuery = (marketEntity: string) => `{ ${marketEntity}(id: "${conditionId}") { id venue tradesCount buysCount sellsCount volumeUSD buyVolumeUSD sellVolumeUSD feesUSD createdAt createdTx } condition(id: "${conditionId}") { id oracle questionId outcomeSlotCount resolved payoutNumerators resolvedAt resolvedTx createdAt } splits(where: { conditionId: "${conditionId}" }, first: 100, orderBy: timestamp) { id stakeholder { id } amount amountUSD timestamp } merges(where: { conditionId: "${conditionId}" }, first: 100, orderBy: timestamp) { id stakeholder { id } amount amountUSD timestamp } redemptions(where: { conditionId: "${conditionId}" }, first: 100, orderBy: timestamp) { id redeemer { id } payout payoutUSD timestamp } }`; const [simpleData, negriskData, meta] = await Promise.all([ querySimple(lifecycleQuery("market")).catch(() => ({})), queryNegRisk(lifecycleQuery("negRiskMarket")).catch(() => ({})), getMarketMeta(conditionId), ]); const market = (simpleData as any).market || (negriskData as any).negRiskMarket; const condition = (simpleData as any).condition || (negriskData as any).condition; const splits = [...((simpleData as any).splits || []), ...((negriskData as any).splits || [])]; const merges = [...((simpleData as any).merges || []), ...((negriskData as any).merges || [])]; const redemptions = [...((simpleData as any).redemptions || []), ...((negriskData as any).redemptions || [])]; const totalSplitUSD = splits.reduce((a: number, s: any) => a + parseFloat(s.amountUSD || "0"), 0); const totalMergeUSD = merges.reduce((a: number, m: any) => a + parseFloat(m.amountUSD || "0"), 0); const totalRedemptionUSD = redemptions.reduce((a: number, r: any) => a + parseFloat(r.payoutUSD || "0"), 0); return textResult({ title: meta?.title || "Unknown", description: meta?.description || "", categories: meta?.categories || [], expirationDate: meta?.expirationDate || "", currentPrices: meta?.prices || [], marketType: (simpleData as any).market ? "simple" : "negrisk", creation: { createdAt: market?.createdAt || condition?.createdAt, createdTx: market?.createdTx, }, trading: market || null, condition: condition || null, liquidity: { splitsCount: splits.length, totalSplitUSD, mergesCount: merges.length, totalMergeUSD, redemptionsCount: redemptions.length, totalRedemptionUSD, }, resolved: condition?.resolved || false, resolution: condition?.resolved ? { payoutNumerators: condition.payoutNumerators, resolvedAt: condition.resolvedAt, resolvedTx: condition.resolvedTx, } : null, }); } catch (e) { return errorResult(e); - mcp-server/src/index.ts:903-911 (registration)Registration of the 'get_market_lifecycle' tool including its description and input schema.
server.registerTool( "get_market_lifecycle", { description: "Get the complete lifecycle of a market: creation, trading stats, splits/merges, resolution status, and redemptions — all from on-chain data with metadata.", inputSchema: { conditionId: z.string().describe("Market conditionId"), }, },