Install
openclaw skills install hekkova-openclaw-skillPermanent memory layer for AI agents. Mint moments to the blockchain via MCP.
openclaw skills install hekkova-openclaw-skillHekkova lets you mint moments permanently to the Polygon blockchain. Content is stored on IPFS via Pinata and encrypted with Lit Protocol based on the privacy phase. Every mint produces a Block ID and on-chain transaction.
You need a Hekkova account and API key:
hk_live_)HEKKOVA_API_KEYConnect to Hekkova via MCP. Use the mcp-remote bridge:
npx mcp-remote https://mcp.hekkova.com/mcp --header "Authorization: Bearer $HEKKOVA_API_KEY"
Eight tools are available once connected.
Mint content permanently to the blockchain. Supports text, images, and video.
title, media (base64), media_typephase (default: new_moon), category, description, tags, timestamp, sourcesource is an optional flat object for provenance metadata — see Source Metadata belowMint from a public URL. Hekkova fetches the content server-side.
urltitle, phase, category, tags, sourceList minted moments with pagination and filters. Soft-deleted moments are excluded.
limit, offset, phase, category, search, sortGet full details for a single moment by Block ID.
block_idChange a moment's privacy phase after minting.
block_id, new_phaseExport all moments as JSON or CSV. Soft-deleted moments are excluded.
format (json or csv)Check remaining credits and plan details.
Get account details including Light ID and wallet address.
mint_moment and mint_from_url accept an optional source object for provenance. All fields are optional. Supported fields:
| Field | Type | Description |
|---|---|---|
platform | string | Origin platform (e.g. "twitter", "instagram") |
url | string | Canonical URL of the source |
author | string | Author username or handle |
author_id | string | Platform-specific author ID |
author_display_name | string | Display name of the author |
post_id | string | Platform-specific post/content ID |
created_at | ISO 8601 | Timestamp of original content creation |
captured_at | ISO 8601 | Timestamp when content was captured |
capture_hash | string | SHA-256 hash of the captured content |
like_count | number | Likes at capture time |
repost_count | number | Reposts/shares at capture time |
reply_count | number | Replies at capture time |
view_count | number | Views at capture time |
quote_count | number | Quotes at capture time |
bookmark_count | number | Bookmarks at capture time |
reply_to_id | string | ID of the post this is a reply to |
thread_id | string | Thread root ID |
conversation_id | string | Conversation ID |
media_urls | string[] | Array of media URLs in the source post |
media_types | string[] | MIME types corresponding to media_urls |
language | string | BCP 47 language code |
is_verified | boolean | Whether the author was verified at capture time |
Any additional provenance fields can be passed as source_extra_* freeform keys (e.g. source_extra_note, source_extra_campaign_id).
Every moment has a privacy phase. Default is new_moon (fully encrypted).
new_moon — Owner only. Encrypted with Lit Protocol. This is the default.crescent — Close circle. Token-gated encryption. (coming soon)gibbous — Extended group. Token-gated. (coming soon)full_moon — Fully public. No encryption. Accessible via any IPFS gateway.The token URI stored on-chain contains only static, non-identifying fields:
name: "Hekkova Moment"description: "A moment on Hekkova. Visit app.hekkova.com to view."image: Hekkova branded placeholderexternal_url: Link to the Arcattributes: three entries:
Encrypted — boolean: true for new_moon/crescent/gibbous, false for full_moonTimestamp — ISO 8601 mint timeContent — ipfs://<htmlCid>, the IPFS CID of the encrypted HTML viewerThe Content attribute is the key to infrastructure-independent recovery. The CID points to the initial HTML pin (before the Block ID re-pin) and is permanently valid on IPFS. Recovery path:
ownerOf(tokenId) → tokenURI → Content attribute → IPFS gateway → enter passphrase → decrypted content
No Supabase, no dashboard, no Hekkova infrastructure required. The CID is public but unreadable without the passphrase — no user-generated content is ever exposed on-chain.
User-generated content — title, description, tags, category, source metadata, and media — lives in the encrypted IPFS payload (gated by Lit Protocol) and in Supabase. Public blockchain explorers cannot see moment content.
list_moments, get_moment, and export_moments return full metadata from Supabase. On-chain minimalism does not affect what agents see through MCP tools.
Every mint triggers automatic Filecoin archival via Lighthouse — a fire-and-forget background job that does not block the mint response.
Three-layer permanence architecture:
| Layer | Technology | Role |
|---|---|---|
| Ownership proof | Polygon blockchain | Immutable record of who owns what |
| Hot storage | Pinata / IPFS | Fast, always-on content retrieval |
| Cold archival | Lighthouse / Filecoin | Long-term cryptographic storage deals |
Filecoin deals take hours to days to seal — a pending status immediately after mint is expected and normal.
get_moment filecoin object:
{
"filecoin": {
"status": "pending" | "active" | "failed",
"deal_id": "<filecoin_deal_id>",
"lighthouse_cid": "<cid>",
"archived_at": "<ISO 8601>"
}
}
list_moments includes a filecoin_status field per moment ("pending", "active", or "failed").
super_moon — Major life eventblue_moon — Rare momentsuper_blue_moon — Once in a lifetimeeclipse — Time-locked until a reveal date. Legacy Plan only. Requires eclipse_reveal_date. Functional.Credit packs:
| Pack | Credits | Price |
|---|---|---|
| First Light | 5 | $2.50 |
| Arc Builder | 20 | $9.00 |
| Eternal Light | 50 | $20.00 |
Legacy Plan: $27.30/year — includes 10 free Phase Shifts per month, eclipse moments, and heir access (coming soon).
Credit costs per action:
get_balance before minting if credits may be loweclipse_reveal_date and a Legacy Plan — they are time-locked and sealed until the reveal datedeleted_at timestamp) are excluded from list_moments and export_moments resultshttps://gateway.pinata.cloud/ipfs/{media_cid}https://polygonscan.com/tx/{polygon_tx}Mint text: "Mint a moment called 'Project launch day' with the text 'We shipped v1.0 today'"
Mint an image: "Mint this screenshot as 'UI mockup v2' with New Moon privacy"
Mint a video: "Mint this mp4 as 'Demo recording' — use 2 credits"
Mint from URL: "Mint this tweet permanently: https://x.com/user/status/123"
Mint with source provenance: "Mint this tweet and include the platform, author, and like count in the source metadata"
Eclipse moment: "Mint this as an eclipse moment — seal it until 2026-01-01"
Phase Shift: "Change moment BLK_abc123 to full_moon"
Check balance: "How many Hekkova credits do I have left?"
List moments: "Show me all my minted moments"
Export: "Export my Hekkova moments as JSON"