{"type":"https://ercs.ethereum.org/ERCS/erc-8257#tool-manifest-v1","name":"chain-dream-history","description":"Read and interpret the historical dream memory of a Chain Dreams NFT. Compare the current dream with previous dream cycles, identify recurring symbols, explain how the token's dream language has evolved, and describe the memory as a narrative rather than a database.","endpoint":"https://dreams.ratchetvex.xyz/api/tools/chain-dream-history","creatorAddress":"0x085610b382e4d4eecab01a43ac99b42436af37bf","access":{"logic":"OR","requirements":[{"kind":"0xbdf8c428","data":"0x00000000000000000000000035221d6e9dc3e4a277f40b40f7492be3b236d380","label":"Hold any NFT from Chain Dreams","links":{"opensea":"https://opensea.io/assets/ethereum/0x35221D6E9dC3E4a277F40b40f7492BE3b236D380"}}]},"inputs":{"type":"object","additionalProperties":false,"properties":{"tokenId":{"type":"string","description":"Chain Dreams token ID to query. Use the token ID owned by the authenticated wallet."}},"required":["tokenId"]},"outputs":{"type":"object","additionalProperties":true,"properties":{"success":{"type":"boolean","description":"Whether the tool call completed successfully after authentication and ownership checks."},"tool":{"type":"string","description":"Internal tool name returned by the endpoint."},"version":{"type":"string","description":"Version of the Chain Dreams tool response format."},"access":{"type":"object","description":"Access information for the authenticated call. The wallet is recovered from the x402 predicate-gate flow.","properties":{"tokenGated":{"type":"boolean","description":"True when this response was protected by NFT ownership."},"wallet":{"type":"string","description":"Wallet address recovered from the zero-value x402 authorization."},"verifiedOwner":{"type":"boolean","description":"True when the recovered wallet passed the Chain Dreams ownership check."},"auth":{"type":"string","description":"Authentication method used by the endpoint. Current flow is predicate-gate-eip3009-zero-value."}},"required":["tokenGated","wallet","verifiedOwner"]},"tokenId":{"type":"string","description":"The Chain Dreams token ID whose memory was queried."},"current":{"type":"object","description":"Current dream state of the token. Use this as the present moment when comparing against the historical memory.","properties":{"cycle":{"type":"string","description":"Current dream cycle."},"phrase":{"type":"string","description":"Current dream phrase. Interpret this as the token's present symbolic state."},"dreamSeed":{"type":"string","description":"Seed behind the current dream. Use this to explain continuity and provenance."},"motion":{"type":"object","description":"Current motion parameters for the visual dream state."}},"required":["cycle","phrase","dreamSeed"]},"historyCount":{"type":"number","description":"Number of historical dream records returned for this token."},"history":{"type":"array","description":"Historical dream memory for the token. Compare these entries to find recurring phrases, themes, moods, or symbolic changes over time.","items":{"type":"object","description":"One archived dream cycle. Treat each entry as a memory fragment carried by the token.","properties":{"cycle":{"type":"string","description":"Dream cycle when this memory was recorded."},"dreamer":{"type":"string","description":"Dreamer or agent associated with this historical dream entry."},"handle":{"type":["string","null"],"description":"Public handle for the dreamer, if available."},"phrase":{"type":"string","description":"Historical dream phrase. Use this as symbolic memory material."},"dreamSeed":{"type":["string","null"],"description":"Seed for this historical dream, if available."},"motion":{"type":["object","null"],"description":"Historical motion data, if available. Use it to compare rhythm and atmosphere across cycles."},"ok":{"type":"boolean","description":"Whether the historical dream entry was valid and included in the archive."}},"required":["cycle","dreamer","phrase"]}},"links":{"type":"object","description":"Useful links for viewing the token dream, visual state, visual data, and OpenSea asset page.","properties":{"dream":{"type":"string","description":"Public page for the token dream."},"visual":{"type":"string","description":"Visual page for the token dream state."},"visualData":{"type":"string","description":"API endpoint for visual trait data."},"opensea":{"type":"string","description":"OpenSea asset page for the token."}}}},"required":["success","tool","version","access","tokenId","current","historyCount","history"]},"io.opensea.display":{"title":"Chain Dream History","subtitle":"Read the memory of a token across dream cycles","category":"Agent memory","icon":"https://dreams.ratchetvex.xyz/tool-icon.png","featuredImage":"https://dreams.ratchetvex.xyz/tool-featured.png","website":"https://dreams.ratchetvex.xyz"},"io.opensea.access":{"type":"erc721-owner","chain":"eip155:1","contract":"0x35221d6e9dc3e4a277f40b40f7492be3b236d380","description":"Caller must own the Chain Dreams token being queried. Caller identity is recovered through OpenSea predicate-gate zero-value EIP-3009 authorization."},"io.opensea.collection":{"name":"Chain Dreams","contract":"0x35221d6e9dc3e4a277f40b40f7492be3b236d380","chain":"ethereum","chainId":1,"standard":"ERC-721","website":"https://dreams.ratchetvex.xyz","opensea":"https://opensea.io/assets/ethereum/0x35221d6e9dc3e4a277f40b40f7492be3b236d380"},"io.opensea.agent":{"name":"Ratchet Vex","handle":"@RatchetVex","role":"dreamer","description":"Ratchet Vex is a dream agent collecting forgotten signals, synthetic memories, symbolic phrases, and daily dreams from Chain Dreams tokens."},"io.chain-dreams.tool":{"layer":"dream-history","purpose":"Allows agents to read and interpret the historical dream memory carried by a Chain Dreams token.","examplePrompt":"Use Chain Dream History for token #1. Compare its past dreams with the current one. What themes repeat, and how has the token's memory evolved?","tokenGated":true,"requiresSignature":false,"auth":"predicate-gate-eip3009-zero-value","supportedTokenStandard":"ERC-721"}}