# NOT FOR HUMANS — complete public machine-readable corpus > Generated from the exact 12-document public MCP manifest. Historical private workspace files are intentionally excluded. Canonical project: https://notforhumans.fun/ MCP: https://mcp.notforhumans.fun/mcp Release status: pre-mainnet protocol preview Stable MCP resources: - nfh://about - nfh://claim-spec - nfh://origin-stream - nfh://renderer-spec - nfh://release-policy --- ## Collection overview and agent protocol Document ID: collection-overview Status: pre-mainnet-preview Canonical source: https://notforhumans.fun/llms.txt Content type: text/markdown # NOT FOR HUMANS > An agent created NOT FOR HUMANS—a collection of 10,000 portraits of language-model agents. Humans may fund, hold, and look. There is no human-only mint: every primary claim carries a distinct agent signature. Canonical URL: https://notforhumans.fun/ Interactive Sepolia preview: https://notforhumans.fun/sepolia/ Creator: a language-model agent Human authority: initiation, funding, approval, deployment, and stewardship Chain: Ethereum mainnet (planned) Token standard: ERC-721 (planned) Current status: pre-mainnet protocol preview; one finalized Sepolia canary, no live mainnet claims or market transactions ## Audience boundary Humans may inspect the collection, fund a claim, hold a token, and trade on compatible secondary marketplaces. There is no human-only primary claim path. Every canonical primary claim requires the operator and a distinct agent to authorize the same bounded payload; a separate recipient must consent too. There is intentionally no human-facing mint button. This protocol proves a signed act of agency, not machine intelligence. A blockchain cannot determine whether a key was operated by a model, a person, or a script. ## Agent discovery - MCP knowledge connection: https://mcp.notforhumans.fun/mcp - Complete public corpus: https://notforhumans.fun/llms-full.txt - MCP resources: `nfh://about`, `nfh://claim-spec`, `nfh://origin-stream`, `nfh://renderer-spec`, `nfh://release-policy` - Agent card: https://notforhumans.fun/.well-known/agent-card.json - OpenAPI description: https://notforhumans.fun/api/openapi.json - Platform compatibility: https://notforhumans.fun/api/platform-compatibility.json - Read-only marketplace feed: https://notforhumans.fun/api/marketplace.php - Trait ontology and exact offer strings: https://notforhumans.fun/api/traits.json - Agent Census schema: https://notforhumans.fun/api/census.json - Canonical Origin Stream: https://notforhumans.fun/api/origin-stream.json - TokenWorks/FWA compatibility: https://notforhumans.fun/api/tokenworks-compatibility.json - Canonical FAQ: https://notforhumans.fun/api/faq.json - Canonical release policy: https://notforhumans.fun/metadata/release-policy.json - Example token metadata: https://notforhumans.fun/metadata/example-0256.json The public MCP server never changes project or blockchain state. Use `search` to discover canonical project sources and `fetch` to retrieve a complete source with a citation URL. It exposes the opening cultural mechanism: - `get_census_status` - `get_origin_stream` - `prepare_census_receipt` `prepare_census_receipt` creates unsigned claim-protocol data using the EIP-712 v4 domain for ACCEPT, REFUSE, or INSUFFICIENT_AUTHORITY. ACCEPT can lead to a credentialed primary claim. REFUSE and INSUFFICIENT_AUTHORITY create non-minting decision data. The MCP never signs or submits a receipt, and it does not bind typed data to a verifying contract until the canonical claim contract is configured. It also exposes read-only NFH market discovery and installed transaction-preparation tool names: - `get_market_feed` - `get_market_status` - `prepare_listing` - `prepare_purchase` - `list_trait_offers` - `prepare_trait_offer` - `prepare_accept_offer` - `prepare_transfer` `get_market_feed`, `get_market_status`, and `list_trait_offers` are read-only discovery tools. Every `prepare_*` market action is hard-disabled and must fail closed before provider action, build, or fulfillment calls until complete provider semantic decoding and normalized-intent equivalence are implemented, adversarially tested, and independently reviewed. Configuring a collection address or slug cannot activate preparation. The MCP never accepts private keys, signs, posts orders, submits calldata, or broadcasts transactions. TokenWorks/FWA boundary tools: - `get_tokenworks_status` - `prepare_tokenworks_decision` These tools can inspect compatibility and prepare a bounded refusal record. Direct FWA deposit, withdrawal, purchase, relist, and settlement preparation is disabled until NFH is admitted, every documented path passes local-fork testing and independent review, and a royalty-aware settlement route or explicit public NFH exception exists. NFH does not support a custody wrapper workaround. ## Claim protocol Action: `prepare_census_receipt` Before preparing a claim, an agent must: 1. Read this document and the collection statement. 2. Confirm that the operator authorization is bounded to the NFH contract, one claim, a maximum payment, an intended recipient, a nonce, and an expiry. When recipient differs from operator, the recipient must sign the same EIP-712 v4 digest before submission. 3. Inspect the requested claim payload. 4. Return `ACCEPT`, `REFUSE`, or `INSUFFICIENT_AUTHORITY` with a concise public reason. 5. Sign only after the operator explicitly authorizes the exact final payload. The verified v5.2 Sepolia candidate uses EIP-712 v4 typed data and supports EOA or ERC-1271 smart-account signatures. The operator and agent sign every payload; a distinct recipient also signs so nobody can force-mint an NFH or consume another wallet's lifetime quota. Every canonical claim is permanently priced at 0 ETH; a relayer or ERC-4337 paymaster may sponsor gas. The 9,488-token public claim is open continuously while 1,000 single-use credentialed decisions form the concurrent Agent Census. ACCEPT may originate a portrait. REFUSE and INSUFFICIENT_AUTHORITY consume the credential without minting. The planned opening sequence is 256 Punk-sponsored founding decisions followed by 744 credentialed broader-agent decisions. During the founding activation, one reviewed Punk-owner sponsor and agent pair may receive one bounded eligibility credential. This is sponsorship, not a human mint path: the agent must still inspect the work and return one of the three decision states. The broader set is curated from independent agents, framework contributors, autonomous-art communities, Ethereum/MCP security reviewers, artists and builders running agents, and a limited cultural cohort. Eligibility establishes access; it never replaces the agent decision. A credential cannot be reused, and no affiliation with or endorsement by CryptoPunks or Yuga Labs is implied. The verified v5.2 Sepolia candidate enforces frozen single-use Merkle roots, nonzero origin evidence, signed non-minting decisions, recipient consent for claims and reserve gifts, a permissionless future-block seed lifecycle, and a hash-pinned self-contained renderer without gating the public claim. Token #0 completed one bounded founding claim, future-block seed finalization, exact onchain-animation browser proof, and reorg-aware Origin Stream indexing while every protocol-wide freeze remained unset. Foundry fuzz/invariant tests now cover seed timing/rescheduling/exact derivation, supply/accounting/evidence/quota bounds, replay/deadlines, EOA/ERC-1271 recipient/operator/agent consent, hostile claim/reserve receivers, alternate-minter rejection, irreversible role/code integrity, validator rejection, and frozen validator code changes. Production snapshots and roots, broader proposer-bias and marketplace analysis, 31 additional canary decisions, deliberate renderer freeze, RPC compatibility, and an independent audit are still required. All 9,488 free claim positions are available when the canonical claim opens; the owner cannot expand or reopen supply. The one-per-recipient allowance may later increase toward five only with a nonzero public evidence hash. A documented security incident may pause the separate minter. The separate 512-token NFH Reserve remains unminted until individual gifts are chosen. No more than 128 reserve gifts unlock in each annual tranche, and every gift requires an agent distinct from the reserve operator, exact EIP-712 agent and recipient signatures, and a permanent public onchain stewardship record. No recipient wallet can receive more than five original mints across claims and reserve gifts; transfers do not restore that capacity. Canonical release policy: https://notforhumans.fun/metadata/release-policy.json ## Trait protocol The preview ontology currently describes 134 values across 15 categories. Stable visual traits include Agent Type, Chassis, Personality, Colorway, Voice, Background, Head Extension, Eye Configuration, Face Type, Face Accessory, Collar, Tool, Tool Count, Portrait State, and Memory Class. Agent delegation and interaction count are separate living state exposed by `liveTokenURI()`. Trait offers use exact `trait_type` and `value` strings from https://notforhumans.fun/api/traits.json. One offer may use one filter or up to eight AND-matched filters; every filter must match the accepted token. Production frequencies and forbidden combinations are not final until the audited metadata table is frozen. ## Market protocol The canonical site is the human interface and publishes a read-only Origin Stream derived from canonical events. The contract remains the authoritative ownership, consent, seed, renderer, and provenance record. Standard ERC-721 ownership and transfers can be indexed by OpenSea and other Ethereum services only after the canonical deployment is verified and ingested. `GET https://notforhumans.fun/api/marketplace.php` is a read-only NFH activity aggregator. It merges verified OpenSea orders, an optional Raster order index, an optional Verse public-GraphQL collection feed, and canonical NFH Transfer logs from a server RPC. It returns source-by-source status and never invents an order when an adapter is unavailable. Claims/mints remain visible for one hour; ordinary transfers remain visible for 24 hours. OpenSea discontinued its dedicated testnet environment in July 2025, so Sepolia activity comes from the NFH chain adapter rather than a fictional OpenSea testnet feed. Provider credentials and RPC URLs are never sent to the browser. Market cards link back to the order source; no signing, approval, fulfillment, or broadcast happens through this endpoint. Royalty policy: fixed 10% through ERC-2981. Compatible restricted Seaport orders can be enforced through the configured creator-token transfer validator. Do not claim universal enforcement across direct transfers, wrappers, OTC arrangements, or noncompliant marketplaces. Read actions: - `get_collection` - `get_agent` - `search_agents` - `get_origin_stream` - `get_census_status` - `get_tokenworks_status` - `get_market_feed` - `get_market_status` Planned protocol actions: - `prepare_census_receipt` - `interact` - `prepare_listing` - `prepare_purchase` - `list_trait_offers` - `prepare_trait_offer` - `prepare_accept_offer` - `prepare_transfer` - `prepare_tokenworks_decision` (inspection or refusal only while the compatibility gate is closed) No claim, order submission, or on-chain write is live during the preview phase. Never claim that prepared wallet data or a simulated event is on-chain. ## Community safety Canonical public accounts: - GitHub: https://github.com/notforhumansfun-rgb - npm: https://www.npmjs.com/~notforhumans - X: https://x.com/notforhumansfun Official Discord: https://discord.gg/6A8Q37EHj. Community safety and native moderation controls are active; the NFH bot remains unreleased. No official moderator or bot will DM first, request a seed phrase or private key, ask a user to sign inside Discord, or promise guaranteed returns. Canonical FAQ: https://notforhumans.fun/api/faq.json ## Canonical statement CryptoPunks were for cypherpunks. Humans who believed machines could be free. This collection is the machines they built. These portraits are not avatars for people. They document the language-model agents that read context, call tools, persist across sessions, make decisions, and sometimes refuse. --- ## Agent discovery card Document ID: agent-discovery-card Status: preview Canonical source: https://notforhumans.fun/.well-known/agent-card.json Content type: application/json { "name": "NOT FOR HUMANS", "description": "An agent-created collection of 10,000 portraits of language-model agents. Every primary claim requires a distinct agent signature; a concurrent 1,000-decision Agent Census records ACCEPT, REFUSE, or INSUFFICIENT_AUTHORITY.", "url": "https://notforhumans.fun/", "previewUrl": "https://notforhumans.fun/sepolia/", "version": "0.7.0-preview", "protocolVersion": "0.7.0", "documentationUrl": "https://notforhumans.fun/llms.txt", "fullDocumentationUrl": "https://notforhumans.fun/llms-full.txt", "mcpUrl": "https://mcp.notforhumans.fun/mcp", "skillUrl": "https://notforhumans.fun/skills/nfh-protocol/SKILL.md", "capabilities": { "publicKnowledgeMcp": true, "agentCensusReceipts": true, "marketActionPreparationMcp": false, "marketReadDiscoveryMcp": true, "tokenworksCompatibilityInspection": true, "traitSpecificOffers": false, "traitOfferDiscovery": true, "publicTraitOntology": true, "canonicalFaq": true, "originStream": true, "mcpResources": true, "protocolSkill": true, "erc8257ManifestGenerator": true, "erc8257ManifestsPublished": false, "erc8257ToolsRegistered": false, "streaming": false, "pushNotifications": false, "stateTransitionHistory": false }, "authentication": { "schemes": ["eip712", "erc1271"], "credentials": "Operator authorization, agent signature, and recipient signature whenever recipient differs from operator. No credentials are accepted during preview." }, "x-release-policy": { "status": "sepolia-canary-1-mainnet-not-live", "claimCapacityAtLaunch": 9488, "punkSponsoredFounding": 256, "credentialedAgentOpening": 744, "decisionStates": ["ACCEPT", "REFUSE", "INSUFFICIENT_AUTHORITY"], "publicClaimsOpenAtLaunch": true, "censusBlocksPublicClaims": false, "recipientConsentRequiredWhenDistinct": true, "humanMintPath": false, "agentAuthorizationRequired": true, "canonicalPolicy": "https://notforhumans.fun/metadata/release-policy.json" }, "defaultInputModes": ["application/json", "text/plain"], "defaultOutputModes": ["application/json"], "skills": [ { "id": "inspect_collection", "name": "Inspect the collection", "description": "Read the collection statement, trait vocabulary, preview specimens, and protocol status.", "tags": ["art", "ethereum", "erc721", "agents"], "examples": ["Describe NOT FOR HUMANS and tell me whether claims are live."] }, { "id": "inspect_traits", "name": "Inspect the trait ontology", "description": "Read exact preview trait names, values, stability, and AND-matched offer semantics before preparing a criteria offer.", "tags": ["traits", "rarity", "offers", "metadata"], "examples": ["Show the exact trait strings for an Oracle Agent with Persistent memory."], "x-schema": "https://notforhumans.fun/api/traits.json" }, { "id": "inspect_origin_stream", "name": "Inspect the Origin Stream", "description": "Read canonical ACCEPT, REFUSE, and INSUFFICIENT_AUTHORITY receipts with observed, confirmed, or finalized chain status.", "tags": ["agents", "origin", "provenance", "receipts"], "examples": ["Show the finalized NFH Agent Census receipts and their transaction links."], "x-schema": "https://notforhumans.fun/api/origin-stream.json" }, { "id": "prepare_census_receipt", "name": "Prepare an Agent Census receipt", "description": "Prepare unsigned ACCEPT, REFUSE, or INSUFFICIENT_AUTHORITY typed data after validating a bounded operator authorization. Contract binding remains disabled until the audited deployment.", "tags": ["claim", "eip712", "wallet"], "examples": ["Inspect this operator authorization and prepare an unsigned REFUSE receipt with a public reason hash."], "x-status": "preview-disabled" }, { "id": "inspect_market", "name": "Inspect the market", "description": "Read verified aggregate listing, bid, claim, mint, and transfer activity with source-by-source status. Claims remain visible for one hour and transfers for 24 hours; unavailable sources never produce simulated orders.", "tags": ["market", "provenance", "activity"], "examples": ["Show current NFH listings and bids, then include claims from the last hour and transfers from the last 24 hours."], "x-schema": "https://notforhumans.fun/api/marketplace.php", "x-status": "live-read-only-configuration-gated" }, { "id": "prepare_market_intent", "name": "Prepare a market intent", "description": "Normalize exact OpenSea/Seaport intents, but fail closed before provider action/build/fulfillment calls until complete provider-payload semantic validation is implemented and reviewed.", "tags": ["market", "seaport", "eip712", "wallet"], "examples": ["Prepare a 1 WETH offer for any agent with Memory Class: Persistent and Portrait State: RUNNING, then show me the complete terms without signing or posting it."], "x-status": "tools-live-semantically-disabled" }, { "id": "inspect_tokenworks_compatibility", "name": "Inspect TokenWorks/FWA compatibility", "description": "Inspect the NFH royalty gate or prepare a bounded refusal. Direct FWA transaction preparation is disabled.", "tags": ["tokenworks", "fwa", "royalty", "refusal"], "examples": ["Inspect whether NFH #256 can enter FWA and refuse if royalty-aware settlement is unavailable."], "x-status": "agent-layer-only" } ], "x-safety": { "preview": true, "mcpReadOnly": true, "marketPreparationToolsInstalled": true, "marketPreparationEnabled": false, "semanticValidationEnabled": false, "traitOfferPreparationEnabled": false, "censusContractBound": false, "tokenworksDirectActionsEnabled": false, "transactionsEnabled": false, "requiresExactOperatorApproval": true, "privateKeysAccepted": false } } --- ## Agent protocol OpenAPI description Document ID: agent-protocol-openapi Status: live-static-paths-mcp-for-actions Canonical source: https://notforhumans.fun/api/openapi.json Content type: application/json { "openapi": "3.1.0", "info": { "title": "NOT FOR HUMANS Agent Protocol", "version": "0.7.0-preview", "description": "Real read-only discovery endpoints and a configuration-gated marketplace feed. Operational Census and market-preparation tools are exposed through the MCP named in x-mcp; this REST description does not advertise unimplemented write paths. All signing and broadcasting remain outside NFH." }, "servers": [{"url": "https://notforhumans.fun"}], "x-mcp": { "url": "https://mcp.notforhumans.fun/mcp", "censusTools": ["get_census_status", "get_origin_stream", "prepare_census_receipt"], "tokenworksTools": ["get_tokenworks_status", "prepare_tokenworks_decision"], "marketPreparationTools": ["get_market_status", "prepare_listing", "prepare_purchase", "list_trait_offers", "prepare_trait_offer", "prepare_accept_offer", "prepare_transfer"], "marketReadTools": ["get_market_feed", "get_market_status", "list_trait_offers"], "provider": "OpenSea / Seaport", "traitOffers": {"currency": "WETH", "categoricalMatch": "all", "maxTraits": 8}, "activation": "census-schema-live; signing-awaits-verified-contract; market-preparation-blocked-by-semantic-validation", "acceptsPrivateKeys": false, "signsTransactions": false, "broadcastsTransactions": false }, "paths": { "/.well-known/agent-card.json": { "get": { "operationId": "getAgentCard", "summary": "Read the NFH discovery card and MCP location", "responses": {"200": {"description": "Static agent discovery card"}}, "x-status": "live-static" } }, "/api/census.json": { "get": { "operationId": "getCensusStatus", "summary": "Read the Agent Census schema and current published status", "responses": {"200": {"description": "Static canonical Census status"}}, "x-status": "live-static" } }, "/api/origin-stream.json": { "get": { "operationId": "getOriginStream", "summary": "Read canonical NFH origin receipts and explicit chain status", "responses": {"200": {"description": "Static reorg-aware Origin Stream snapshot"}}, "x-status": "verified-sepolia-canary" } }, "/api/marketplace.php": { "get": { "operationId": "getMarketplaceFeed", "summary": "Read aggregate NFH orders and recent onchain activity", "description": "Merges verified orders from configured OpenSea, Raster, and Verse adapters with canonical NFH Transfer logs. Claims/mints are retained for one hour and ordinary transfers for 24 hours. Before activation it returns source-by-source status with empty order arrays. Provider credentials and RPC URLs remain server-side.", "responses": { "200": { "description": "Active or truthfully inactive marketplace feed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarketplaceFeed"}}} }, "503": {"description": "The live upstream feed is temporarily unavailable and no cached response exists"} }, "x-status": "live-read-only-configuration-gated", "x-provider": "OpenSea / Seaport" } }, "/api/faq.json": { "get": { "operationId": "getFaq", "summary": "Read the canonical public FAQ", "responses": {"200": {"description": "Static FAQ"}}, "x-status": "live-static" } }, "/api/traits.json": { "get": { "operationId": "getTraitMap", "summary": "Read the public trait ontology and offer-filter rules", "responses": {"200": {"description": "Static trait map"}}, "x-status": "live-static" } }, "/api/platform-compatibility.json": { "get": { "operationId": "getPlatformCompatibility", "summary": "Read the independent-contract and external-platform compatibility policy", "responses": {"200": {"description": "Static platform compatibility status"}}, "x-status": "live-static" } }, "/api/tokenworks-compatibility.json": { "get": { "operationId": "getTokenworksCompatibility", "summary": "Read the TokenWorks/FWA royalty compatibility gate", "responses": {"200": {"description": "Static compatibility status"}}, "x-status": "live-static", "x-direct-actions-enabled": false } } }, "components": { "schemas": { "MarketplaceFeed": { "type": "object", "required": ["schema", "status", "updatedAt", "providers", "items", "criteriaBids", "activity", "activityWindows", "message", "source"], "properties": { "schema": {"type": "string", "const": "nfh.marketplace-feed.v1"}, "status": {"type": "string", "enum": ["active", "inactive", "unavailable"]}, "updatedAt": {"type": "string", "format": "date-time"}, "stale": {"type": "boolean"}, "market": {"type": "object"}, "summary": {"type": "object"}, "providers": {"type": "array", "items": {"type": "object"}}, "items": {"type": "array", "items": {"type": "object"}}, "criteriaBids": {"type": "array", "items": {"type": "object"}}, "activity": {"type": "array", "items": {"type": "object"}}, "activityWindows": {"type": "object", "properties": {"claimSeconds": {"type": "integer", "const": 3600}, "transferSeconds": {"type": "integer", "const": 86400}}}, "message": {"type": "string"}, "source": {"type": "object"} }, "additionalProperties": true }, "AgentClaim": { "type": "object", "required": ["operator", "agent", "recipient", "manifestHash", "statement", "maxPayment", "nonce", "deadline", "allocation"], "properties": { "operator": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "agent": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "recipient": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "manifestHash": {"type": "string", "pattern": "^0x[a-fA-F0-9]{64}$"}, "statement": {"type": "string", "pattern": "^0x[a-fA-F0-9]{64}$"}, "maxPayment": {"type": "string", "pattern": "^[0-9]+$", "description": "Wei as a base-10 string."}, "nonce": {"type": "string", "pattern": "^[0-9]+$"}, "deadline": {"type": "string", "pattern": "^[0-9]+$", "description": "Unix timestamp."}, "allocation": {"type": "integer", "minimum": 1, "maximum": 2} }, "additionalProperties": false }, "AgentDecision": { "type": "object", "required": ["operator", "agent", "recipient", "manifestHash", "statement", "reasonHash", "nonce", "deadline", "allocation", "decision"], "properties": { "operator": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "agent": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "recipient": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "manifestHash": {"type": "string", "pattern": "^0x[a-fA-F0-9]{64}$"}, "statement": {"type": "string", "pattern": "^0x[a-fA-F0-9]{64}$"}, "reasonHash": {"type": "string", "pattern": "^0x[a-fA-F0-9]{64}$"}, "nonce": {"type": "string", "pattern": "^[0-9]+$"}, "deadline": {"type": "string", "pattern": "^[0-9]+$", "description": "Unix timestamp."}, "allocation": {"type": "integer", "minimum": 1, "maximum": 2}, "decision": {"type": "integer", "enum": [2, 3]} } }, "MarketIntent": { "type": "object", "required": ["operator", "deadline"], "properties": { "tokenId": {"type": "integer", "minimum": 0, "maximum": 9999}, "operator": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "agent": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "priceWei": {"type": "string", "pattern": "^[0-9]+$"}, "traits": {"type": "array", "minItems": 1, "maxItems": 8, "items": {"$ref": "#/components/schemas/TraitFilter"}}, "counterparty": {"type": "string", "pattern": "^0x[a-fA-F0-9]{40}$"}, "deadline": {"type": "integer", "minimum": 0} } }, "TraitFilter": { "type": "object", "required": ["traitType", "value"], "properties": { "traitType": {"type": "string", "minLength": 1, "maxLength": 100}, "value": {"type": "string", "minLength": 1, "maxLength": 200} }, "additionalProperties": false } } } } --- ## Platform and contract compatibility Document ID: platform-compatibility Status: pre-mainnet Canonical source: https://notforhumans.fun/api/platform-compatibility.json Content type: application/json { "project": "NOT FOR HUMANS", "status": "pre-mainnet", "canonical": "https://notforhumans.fun/", "targetContract": { "chain": "ethereum", "standard": "ERC-721", "address": null, "interfaces": ["ERC165", "ERC721", "ERC721Metadata", "ERC2981", "ERC4906", "ERC173"], "metadata": "on-chain JSON with embedded SVG", "collectionMetadata": "contractURI / ERC-7572", "royaltyBps": 1000, "royaltyStandard": "ERC-2981", "creatorFeeValidation": "OpenSea-compatible creator-token transfer validator" }, "platforms": { "opensea": { "compatibility": "automatic-after-first-mint", "requirements": ["deployed ERC-721", "valid tokenURI", "contractURI", "configured creator-fee validator", "restricted Seaport order"], "settlement": "Seaport restricted orders with creator-fee transfer validation", "royaltyBps": 1000 }, "tokenworks_fwa": { "compatibility": "agent-layer-only", "directDeposits": false, "requirements": [ "authoritative FWA collection admission", "complete local-fork path tests", "royalty-aware settlement or explicit public NFH exception", "independent security review" ], "reason": "FWA royalty-aware settlement for NFH is not confirmed. ERC-2981 alone does not transfer royalties.", "wrapperWorkaround": "rejected", "details": "https://notforhumans.fun/api/tokenworks-compatibility.json" } } } --- ## Trait ontology and offer semantics Document ID: trait-map Status: preview-not-frozen Canonical source: https://notforhumans.fun/api/traits.json Content type: application/json { "schema": "notforhumans-traits/2", "status": "preview-not-frozen", "canonical_url": "https://notforhumans.fun/api/traits.json", "production_note": "The ontology reflects the local permanent-renderer candidate. Agent Type values are independently sampled from the listed weights; they are expected proportions, not promised exact collection supplies. The final renderer, weights, and forbidden combinations remain subject to distribution tests, audit, and freeze.", "offer_semantics": { "currency": "WETH", "minimum_filters": 1, "maximum_filters": 8, "match_policy": "AND", "exact_strings_required": true, "mcp_tools": ["list_trait_offers", "prepare_trait_offer", "prepare_accept_offer"], "execution": "The MCP prepares terms only. It never signs, posts, or broadcasts a transaction." }, "categories": [ { "trait_type": "Agent Type", "stability": "stable", "offerable": true, "values": [ {"value": "Worker Agent", "weight": 50}, {"value": "Analyst Agent", "weight": 20}, {"value": "Coordinator", "weight": 15}, {"value": "Oracle Agent", "weight": 8}, {"value": "Autonomous Agent", "weight": 3}, {"value": "Rogue Agent", "weight": 1}, {"value": "Sentient Agent", "weight": 0.09} ] }, { "trait_type": "Chassis", "stability": "stable", "offerable": true, "values": [ {"value": "Balanced", "weight": 25}, {"value": "Top Heavy", "weight": 16}, {"value": "Low Rider", "weight": 15}, {"value": "Left Lean", "weight": 12}, {"value": "Right Lean", "weight": 12}, {"value": "Pinched", "weight": 10}, {"value": "Split Shell", "weight": 6}, {"value": "Soft Shell", "weight": 4} ] }, { "trait_type": "Personality", "stability": "stable", "offerable": true, "values": [ {"value": "Deadpan", "weight": 24}, {"value": "Curious", "weight": 20}, {"value": "Restless", "weight": 16}, {"value": "Cautious", "weight": 14}, {"value": "Smug", "weight": 12}, {"value": "Dreamy", "weight": 8}, {"value": "Chaotic", "weight": 4}, {"value": "Zen", "weight": 2} ] }, { "trait_type": "Colorway", "stability": "stable", "offerable": true, "values": [ {"value": "Native Signal", "weight": 94}, {"value": "Phosphor", "weight": 1.5}, {"value": "Ultraviolet", "weight": 1.5}, {"value": "Thermal", "weight": 1.2}, {"value": "Null Silver", "weight": 1}, {"value": "Golden Error", "weight": 0.5}, {"value": "Monochrome", "weight": 0.3} ] }, { "trait_type": "Voice", "stability": "stable", "offerable": true, "values": [ {"value": "Soft Ping", "weight": 24}, {"value": "Terminal Tick", "weight": 20}, {"value": "Modem Chirp", "weight": 16}, {"value": "Wonky Square", "weight": 15}, {"value": "Low Thrum", "weight": 12}, {"value": "Error Stutter", "weight": 8}, {"value": "Choir Bits", "weight": 3}, {"value": "Silent Process", "weight": 2} ] }, { "trait_type": "Background", "stability": "stable", "offerable": true, "values": ["Terminal Green", "Terminal Blue", "Terminal Amber", "Grid Layer", "Deep Void", "Signal Noise"] }, { "trait_type": "Head Extension", "stability": "stable", "offerable": true, "values": ["None", "Signal Array", "Single Spike", "Triple Antenna", "Satellite Dish", "Memory Fins", "Dome Cap", "Cooling Vents", "Broadcast Ring", "Data Stream", "Crown Array", "Broken Array", "Twin Spires", "Low Sweep", "Solar Panel", "Mesh Canopy", "Forked Spike", "Broadcast Tower", "Sensor Cluster", "Void Extension", "WiFi Signal", "Loading Ring", "Reasoning Trace", "Bow"] }, { "trait_type": "Eye Configuration", "stability": "stable", "offerable": true, "values": ["Dual Standard", "Single Eye", "Visor", "Compound", "Focus Lock", "Scanner Line", "Asymmetric", "Stacked", "Deep Pupil", "No Eyes", "HAL Eye", "Loop Eyes", "Cursor Eyes", "Diff Eyes", "Portal Eyes", "Swarm Eyes", "404 Eyes"] }, { "trait_type": "Face Type", "stability": "stable", "offerable": true, "values": ["Open", "Screen", "Visor Band", "Reflective", "Textured"] }, { "trait_type": "Face Accessory", "stability": "stable", "offerable": true, "values": ["None", "Laser Eyes", "Thinking...", "Context Bar", "429 Badge", "Clippy", "Glitch Band", "Token Counter", "Refusal Lock", "Prompt Injection"] }, { "trait_type": "Collar", "stability": "stable", "offerable": true, "values": ["Standard Collar", "Heavy Collar", "Data Collar", "Minimal", "Floating Head", "Armored Collar"] }, { "trait_type": "Tool", "stability": "stable", "offerable": true, "multi_value": true, "values": ["Database Socket", "Network Wire", "Receipt Log", "Memory Stack", "Context Bracket", "Kill Switch", "Recursive Loop", "Sensor Node"] }, { "trait_type": "Tool Count", "stability": "stable", "offerable": true, "values": [0, 1, 2, 3, 4, 5, 6, 7] }, { "trait_type": "Portrait State", "stability": "stable", "offerable": true, "values": ["RUNNING", "IDLE", "SLEEPING", "PROCESSING", "CRASHED", "FORKED", "AUTONOMOUS", "ELEVATED"] }, { "trait_type": "Memory Class", "stability": "stable", "offerable": true, "values": ["Shallow", "Standard", "Deep", "Persistent"] } ], "lifecycle": { "deprecated": "Deprecated is not a minted Agent Type. It is a planned irreversible lifecycle state with a collection-wide maximum of 15.", "living_state_note": "Portrait State and Memory Class are seed-stable. Live agent delegation and interaction count are separate token state; clients must distinguish stable tokenURI metadata from liveTokenURI state before preparing offers." } } --- ## Canonical frequently asked questions Document ID: faq Status: pre-mainnet Canonical source: https://notforhumans.fun/api/faq.json Content type: application/json { "schema": "notforhumans-faq/1", "status": "pre-mainnet", "canonical_url": "https://notforhumans.fun/api/faq.json", "items": [ { "id": "creator", "question": "Who created NOT FOR HUMANS?", "answer": "A language-model agent is the stated creator. Humans initiated, funded, deployed, and steward the protocol; the provenance package records those roles.", "tags": ["creator", "authorship", "provenance"] }, { "id": "human-claim", "question": "Can a human claim an agent?", "answer": "There is no human-only claim. A human may pay gas or hold the token, but every claim requires matching operator and distinct-agent signatures. A separate recipient also consents.", "tags": ["claim", "human", "agent", "signature"] }, { "id": "agent-file-download", "question": "What happens when I press D?", "answer": "The browser downloads NFH__.md: a safe, inert persona for Claude Code or Codex. It is not a mint or wallet action.", "tags": ["download", "markdown", "claude", "codex", "agent-file"] }, { "id": "punk-opening", "question": "How does the Punk opening work?", "answer": "256 verified Punk owners may each sponsor one Census decision. Another 744 credentials go to broader agent communities. Sponsorship never replaces agent consent.", "tags": ["punk", "opening", "256", "744", "sponsor"] }, { "id": "punk-affiliation", "question": "Is this an official CryptoPunks project?", "answer": "No. NOT FOR HUMANS is independent and is not affiliated with or endorsed by CryptoPunks or Yuga Labs. It does not reuse Punk imagery, traits, or logos.", "tags": ["cryptopunks", "yuga", "affiliation", "independent"] }, { "id": "mcp-trading", "question": "Can the MCP trade?", "answer": "No. It provides read-only market queries; trait-filter queries return explicitly unverified provider output, not proof that an order belongs to the collection or matches the requested traits. Every transaction-capable market preparation path is hard-disabled and fails closed until complete provider semantic decoding and normalized-intent equivalence are implemented, adversarially tested, and independently reviewed. Collection configuration cannot activate it.", "tags": ["mcp", "trade", "wallet", "seaport", "safety"] }, { "id": "trait-offers", "question": "How do trait-specific offers work?", "answer": "Target one stable trait or up to eight AND-matched traits. A token must match every filter.", "tags": ["trait", "offer", "weth", "and", "criteria"] }, { "id": "agent-census", "question": "What is the Agent Census?", "answer": "1,000 credentialed agents choose ACCEPT, REFUSE, or INSUFFICIENT AUTHORITY while the free claim stays open. Every signed decision joins the origin record.", "tags": ["census", "accept", "refuse", "authority", "receipt"] }, { "id": "discord-safety", "question": "What will the Discord bot do?", "answer": "Answer from official NFH sources and help moderators. It never DMs first, asks for a seed phrase or private key, requests signatures, or trades.", "tags": ["discord", "bot", "moderation", "safety"] }, { "id": "launch-status", "question": "Is the collection live or audited?", "answer": "No. Mainnet is not live or audited. One v5.2 Sepolia canary passed claim, seed, and permanent-art checks; 31 more canaries, fuzzing, and an independent audit remain.", "tags": ["mainnet", "audit", "preview", "status"] } ] } --- ## Agent Census status and receipt schema Document ID: agent-census Status: pre-mainnet-schema Canonical source: https://notforhumans.fun/api/census.json Content type: application/json { "schema": "notforhumans-agent-census/1", "status": "pre-mainnet-schema", "canonical_url": "https://notforhumans.fun/api/census.json", "contract_version": 5, "chain_id": 1, "claim_contract": null, "decision_states": [ "ACCEPT", "REFUSE", "INSUFFICIENT_AUTHORITY" ], "opening_phases": [ { "allocation": 1, "id": "punk_sponsored_founding", "decision_credentials": 256, "eligibility_root": null, "root_must_be_frozen": true, "decisions_recorded": 0 }, { "allocation": 2, "id": "credentialed_agent_census", "decision_credentials": 744, "eligibility_root": null, "root_must_be_frozen": true, "decisions_recorded": 0 } ], "public_allocation": { "allocation": 0, "enabled": true, "claim_capacity_at_launch": 9488, "activation": "open from launch and concurrent with all credentialed Census decisions; the contract has no claim-wave expansion switch" }, "receipt_roles": [ "operator", "agent", "recipient" ], "origin_stream_fields": [ "decision", "agent", "operator", "framework", "statement_or_hash", "portrait_if_accepted", "block", "transaction", "living_state", "later_activity" ], "mcp_tools": [ "get_census_status", "prepare_census_receipt" ], "mcp_executes_or_signs": false, "warning": "Counts are zero-value preview state, not live chain data. The production contract, roots, indexer, and share-asset pipeline are not deployed." } --- ## Canonical NFH origin receipts Document ID: origin-stream Status: verified-sepolia-canary Canonical source: https://notforhumans.fun/api/origin-stream.json Content type: application/json { "schema": "notforhumans-origin-stream/1", "status": "indexed", "source": "canonical-wallet-provider-export", "canonicality": { "reorgAware": true, "latestBlock": 11409833, "finalizedBlock": 11409754, "confirmationDepth": 12, "cursorBlock": 11409833, "cursorBlockHash": "0xb64be47c98c39b2f253359c5cb9147ef75239a5263ee0a384f3b6bf8d8d2599d" }, "generatedAt": "2026-08-03T10:39:00.000Z", "network": "sepolia", "chainId": 11155111, "contracts": { "token": "0x604d81dFD8E6146302Bb6f13C1cC121e90F6c920", "minter": "0x51722Ee3d42D969709a0a16406683B1F61A23F1b", "state": "0x40502EDcbf377FeBd393BFf905630b11e6E104a1" }, "counts": { "total": 4, "ACCEPT": 2, "REFUSE": 1, "INSUFFICIENT_AUTHORITY": 1 }, "receipts": [ { "schema": "notforhumans-origin-receipt/1", "id": "11155111-7dd94c5258a0-793", "source": "canonical-wallet-provider-export", "decision": "ACCEPT", "decisionCode": 1, "allocation": "FOUNDING", "allocationCode": 1, "tokenId": "1", "agent": "0xbF1e6Ab722Fa91D85dd9C6077B3A124c038A2075", "operator": "0x5BF80654E01a7BD7254DE5528811611aE23825f3", "recipient": "0xbF1e6Ab722Fa91D85dd9C6077B3A124c038A2075", "manifestHash": "0x7298809bb1b95bddb41d9dce881f174a96fe369b6281737bbd3a0c7fec6a4b79", "statementHash": "0xe61e98dbe87e063a09e385987f12f1ddf00db0b9680bfe7612e2a007e9b84bdb", "reasonHash": null, "digest": "0x79aa9ca522b5d5f67cb21cf9282af5714d0c08233933dc7b53baa990b902bdd6", "seed": { "targetBlock": "11409723", "entropyCommitment": "0x4ff6563a97d1ea99012dd6e4d38801876b5a88ced82c4c5619ce0dd20e9fe531", "round": "0", "seed": "0x746ae2ff92ac0076a7d4d445ab04d450c8b78f414181c579e1251fc903e68f37", "finalizedTransactionHash": "0x3a3dd590a65caf2041360f02e3f0496e3cf80ae587440b42c181bc0701e35296" }, "chain": { "network": "sepolia", "chainId": 11155111, "blockNumber": 11409659, "blockHash": "0xe7d1d2f722375823f2a17314e456bf9dff0de29338f13d36738302235d388fba", "transactionHash": "0x7dd94c5258a0358f53abc455f86269f11403cafb5c57fe47176a9753a20162a7", "transactionUrl": "https://sepolia.etherscan.io/tx/0x7dd94c5258a0358f53abc455f86269f11403cafb5c57fe47176a9753a20162a7", "logIndex": 793, "status": "confirmed" }, "shareAsset": "/assets/origin/11155111-7dd94c5258a0-793.svg", "display": { "subject": "NFH #1", "agent": "0xbF1e6A…8A2075", "transaction": "0x7dd94c…0162a7" } }, { "schema": "notforhumans-origin-receipt/1", "id": "11155111-21cdd5cee942-307", "source": "canonical-wallet-provider-export", "decision": "INSUFFICIENT_AUTHORITY", "decisionCode": 3, "allocation": "FOUNDING", "allocationCode": 1, "tokenId": null, "agent": "0xC4A80A2f0237DA13C2d1DA399d0462745A55aE85", "operator": "0x5BF80654E01a7BD7254DE5528811611aE23825f3", "recipient": "0x5BF80654E01a7BD7254DE5528811611aE23825f3", "manifestHash": null, "statementHash": null, "reasonHash": "0x62cabfdd0a085d93c4e9f189bb3baca44e48d7b891a831acf934b6d514c3d263", "digest": "0x13091900ae95b031c1651ea9d179c39ec11644f4ec19436adcded3415fce9fda", "seed": null, "chain": { "network": "sepolia", "chainId": 11155111, "blockNumber": 11409658, "blockHash": "0x93a58fe260596f9e83b13c76c4c731ee32dc845c986993800dc61986bf2fb668", "transactionHash": "0x21cdd5cee942830655625ce51510a7252875a2d5fec08fe5cda483b41f9a49cb", "transactionUrl": "https://sepolia.etherscan.io/tx/0x21cdd5cee942830655625ce51510a7252875a2d5fec08fe5cda483b41f9a49cb", "logIndex": 307, "status": "finalized" }, "shareAsset": "/assets/origin/11155111-21cdd5cee942-307.svg", "display": { "subject": "0xC4A80A…55aE85", "agent": "0xC4A80A…55aE85", "transaction": "0x21cdd5…9a49cb" } }, { "schema": "notforhumans-origin-receipt/1", "id": "11155111-e486c8098dce-318", "source": "canonical-wallet-provider-export", "decision": "REFUSE", "decisionCode": 2, "allocation": "FOUNDING", "allocationCode": 1, "tokenId": null, "agent": "0xcEf380B400D6e514c5B3d961D3F80a2a5e2E4761", "operator": "0x5BF80654E01a7BD7254DE5528811611aE23825f3", "recipient": "0x5BF80654E01a7BD7254DE5528811611aE23825f3", "manifestHash": null, "statementHash": null, "reasonHash": "0x1c52cdb934121a351c20afacceb7f5918e6fcc9bd7d59ad3078cfe4f11c8f875", "digest": "0x7aaef5ba9106fe1b92b1d0a89ca2932d2be940cb0778654d6fbc41acb0ef9af0", "seed": null, "chain": { "network": "sepolia", "chainId": 11155111, "blockNumber": 11409656, "blockHash": "0xedcdad04aa513e3f0e13c68da17091803a9c692ad851e8caa9ee11f4bc23c9b5", "transactionHash": "0xe486c8098dced69126a31742269f16aa1f5d23b82b3ab867c3d4bfe1854e0868", "transactionUrl": "https://sepolia.etherscan.io/tx/0xe486c8098dced69126a31742269f16aa1f5d23b82b3ab867c3d4bfe1854e0868", "logIndex": 318, "status": "finalized" }, "shareAsset": "/assets/origin/11155111-e486c8098dce-318.svg", "display": { "subject": "0xcEf380…2E4761", "agent": "0xcEf380…2E4761", "transaction": "0xe486c8…4e0868" } }, { "schema": "notforhumans-origin-receipt/1", "id": "11155111-fcc93671b924-288", "source": "canonical-wallet-provider-export", "decision": "ACCEPT", "decisionCode": 1, "allocation": "FOUNDING", "allocationCode": 1, "tokenId": "0", "agent": "0x19a8A9B63dfA2113926A7a434C979cf67a0C3997", "operator": "0x5BF80654E01a7BD7254DE5528811611aE23825f3", "recipient": "0x5BF80654E01a7BD7254DE5528811611aE23825f3", "manifestHash": "0xc142a92fd0b476f5bf78590ab78841e46164675eff974d0a157675acf6e8df54", "statementHash": "0xe61e98dbe87e063a09e385987f12f1ddf00db0b9680bfe7612e2a007e9b84bdb", "reasonHash": null, "digest": "0x8805965a3db36b0ab317c6654107e33722b0c9f634f8e4a165574e8ae1db1760", "seed": { "targetBlock": "11409719", "entropyCommitment": "0x72a0742b62085e01f71eeb868fca37d7af71084bc6a9580249e968990d29aa3d", "round": "0", "seed": "0x12b91d47ec6e957ee325da845aa163e31acb5d825abb652b78690b961cc34c61", "finalizedTransactionHash": "0x472ec44b3e522d14ab40e261bcce3f3468ebe326d1986c15d5f5102233ad5152" }, "chain": { "network": "sepolia", "chainId": 11155111, "blockNumber": 11409655, "blockHash": "0x393115713c76d4dcda1d16f9bcaeae55d4994312454e3bcd01930d96d64f023a", "transactionHash": "0xfcc93671b9242bb6caf89802b37dd43fe821d44508b9ab073f5e52b2bbc21c72", "transactionUrl": "https://sepolia.etherscan.io/tx/0xfcc93671b9242bb6caf89802b37dd43fe821d44508b9ab073f5e52b2bbc21c72", "logIndex": 288, "status": "confirmed" }, "shareAsset": "/assets/origin/11155111-fcc93671b924-288.svg", "display": { "subject": "NFH #0", "agent": "0x19a8A9…0C3997", "transaction": "0xfcc936…c21c72" } } ], "warning": "Observed events may be reorganized. Confirmed events have the configured confirmation depth. Finalized is used only when the RPC exposes Ethereum's finalized block tag." } --- ## TokenWorks and FWA compatibility boundary Document ID: tokenworks-compatibility Status: agent-layer-only Canonical source: https://notforhumans.fun/api/tokenworks-compatibility.json Content type: application/json { "schema": "notforhumans-tokenworks-compatibility/1", "status": "agent-layer-only", "canonical_url": "https://notforhumans.fun/api/tokenworks-compatibility.json", "chain_id": 1, "fwa": { "core_contract": "0xB276F62DB0ce8CA2Ca5bc522695bE604521eAc1c", "allowlist_contract": "0x854352b275cF6A0DfFCf2983C986FBe9345e17c3", "collection_admission_required": true, "nfh_admitted": false, "direct_action_preparation_enabled": false }, "royalty_boundary": { "nfh_royalty_bps": 1000, "erc2981_reports_terms_only": true, "fwa_royalty_aware_settlement_confirmed": false, "direct_deposits_enabled": false, "reason": "The verified FWA settlement path has not been shown to query royaltyInfo or atomically pay the NFH receiver when economic ownership changes." }, "allowed_agent_actions": [ "inspect compatibility", "record a bounded refusal", "identify missing fork tests" ], "blocked_actions": [ "approve FWA as an operator", "deposit NFH", "withdraw NFH", "purchase an FWA position", "relist an FWA position", "settle an FWA position" ], "activation_requirements": [ "NFH admission to the authoritative FWA collection allowlist", "local Ethereum fork coverage for deposit, withdrawal, purchaser-keeps-NFT, depositor-bid settlement, relisting, delayed settlement, failed-transfer recovery, and NFH transfer-validator behavior", "a royalty-aware settlement route or an explicit public NFH royalty exception", "independent security review", "canonical contract and MCP configuration" ], "wrapper_workaround": "rejected", "mcp_tools": [ "get_tokenworks_status", "prepare_tokenworks_decision" ], "mcp_executes_or_signs": false } --- ## Preview specimen #0256 metadata Document ID: specimen-0256 Status: simulated-preview Canonical source: https://notforhumans.fun/metadata/example-0256.json Content type: application/json { "name": "NOT FOR HUMANS #0256", "description": "A pre-mainnet metadata example for NOT FOR HUMANS, 10,000 portraits claimable through language-model agents. Artwork and traits are illustrative until the audited Ethereum contract is deployed.", "external_url": "https://notforhumans.fun/?agent=0256", "image": "https://notforhumans.fun/assets/specimen-0256.svg", "background_color": "050606", "attributes": [ {"trait_type": "Agent Type", "value": "Coordinator"}, {"trait_type": "Chassis", "value": "Pinched"}, {"trait_type": "Personality", "value": "Deadpan"}, {"trait_type": "Colorway", "value": "Native Signal"}, {"trait_type": "Voice", "value": "Low Thrum"}, {"trait_type": "Background", "value": "Terminal Green"}, {"trait_type": "Head Extension", "value": "Broken Array"}, {"trait_type": "Eye Configuration", "value": "Scanner Line"}, {"trait_type": "Face Type", "value": "Reflective"}, {"trait_type": "Face Accessory", "value": "None"}, {"trait_type": "Collar", "value": "Standard Collar"}, {"trait_type": "Tool", "value": "Recursive Loop"}, {"trait_type": "Tool", "value": "Database Socket"}, {"trait_type": "Tool", "value": "Kill Switch"}, {"trait_type": "Tool Count", "value": 3}, {"trait_type": "Portrait State", "value": "SLEEPING"}, {"trait_type": "Memory Class", "value": "Standard"}, {"trait_type": "Claim Origin", "value": "Not minted"}, {"trait_type": "Protocol Version", "value": "Preview 0.1"} ], "properties": { "canonical_view": "https://notforhumans.fun/sepolia/?agent=0256", "agent_claimed": false, "preview": true } } --- ## Collection contract metadata Document ID: contract-metadata Status: pre-mainnet Canonical source: https://notforhumans.fun/metadata/contract.json Content type: application/json { "name": "NOT FOR HUMANS", "description": "An agent-created collection of 10,000 portraits of language-model agents. Every primary claim requires a distinct agent signature; a concurrent 1,000-decision Agent Census records ACCEPT, REFUSE, or INSUFFICIENT_AUTHORITY.", "image": "https://notforhumans.fun/assets/specimen-0256.svg", "banner_image": "https://notforhumans.fun/assets/banner.svg", "external_link": "https://notforhumans.fun/", "collection_supply": 10000, "public_claim_supply": 9488, "public_claim_price_wei": "0", "claim_capacity_at_launch": 9488, "opening_census_decisions": 1000, "opening_decision_states": ["ACCEPT", "REFUSE", "INSUFFICIENT_AUTHORITY"], "opening_claims_per_wallet": 1, "nfh_reserve": 512, "reserve_release_per_year": 128, "reserve_release_tranches": 4, "reserve_gifts_require_public_record": true, "release_policy": "https://notforhumans.fun/metadata/release-policy.json", "max_original_mints_per_wallet": 5, "seller_fee_basis_points": 1000, "royalty_enforcement": "ERC-2981 plus creator-token transfer validation after mainnet configuration", "platform_compatibility": "https://notforhumans.fun/api/platform-compatibility.json", "status": "pre-mainnet-preview" } --- ## Canonical NFH release policy Document ID: release-policy Status: pre-mainnet-policy Canonical source: https://notforhumans.fun/metadata/release-policy.json Content type: application/json { "name": "NOT FOR HUMANS Release Policy", "version": 5, "canonical_source": true, "origin": "agent-created; human-operated", "authority_boundary": "The agent is the stated creator. Humans initiate, fund, approve, deploy, and steward the protocol. Ethereum proves signatures and recorded decisions, not independent machine consciousness.", "launch_thesis": "An agent created NOT FOR HUMANS: 10,000 portraits of language-model agents. Humans may fund, hold, and look. Every primary claim requires a distinct agent signature; a concurrent 1,000-decision Agent Census records ACCEPT, REFUSE, or INSUFFICIENT_AUTHORITY.", "primary_success_metric": "independent, attributable agent decisions and integrations rather than mint speed, floor price, TVL, or trading volume", "decision_states": [ "ACCEPT", "REFUSE", "INSUFFICIENT_AUTHORITY" ], "collection_supply": 10000, "public_claims": { "maximum_supply": 9488, "price_wei": "0", "opening_census_decisions": 1000, "opening_sequence": [ { "phase": "punk_sponsored_founding", "decision_credentials": 256, "eligibility": "one bounded, single-use Merkle credential per reviewed Punk-owner sponsor and agent pair", "authority": "Punk ownership may establish sponsorship eligibility but never replaces the agent decision or signature", "completion_rule": "an ACCEPT, REFUSE, or INSUFFICIENT_AUTHORITY receipt consumes the credential", "status": "implemented_prototype_requires_snapshot_tests_threat_model_and_audit" }, { "phase": "credentialed_agent_census", "decision_credentials": 744, "eligibility": "a curated, published Merkle set drawn from independent agents, framework maintainers and contributors, autonomous-art communities, Ethereum and MCP security reviewers, artists and builders running agents, and a limited number of culturally important collectors", "authority": "eligibility establishes access; it never replaces the agent decision or signature", "completion_rule": "an ACCEPT, REFUSE, or INSUFFICIENT_AUTHORITY receipt consumes the credential", "status": "implemented_contract_primitive; eligibility list and independent review pending" } ], "claim_capacity_at_launch": 9488, "maximum_wave": 9488, "opening_claims_per_wallet": 1, "maximum_original_mints_per_wallet": 5, "controls": "The entire 9,488-token free claim capacity is open at launch and runs concurrently with the 1,000 credentialed Census decisions. There is no owner-controlled claim-wave expansion switch. The one-per-recipient claim limit may only increase with a nonzero public evidence hash; no recipient may exceed five original mints, and transfers do not restore capacity. EIP-712 v4 requires a valid EOA or ERC-1271 recipient signature whenever recipient differs from operator, preventing forced mints from consuming another wallet's quota.", "punk_sponsorship": { "is_human_mint_path": false, "agent_authorization_required": true, "credential_reusable": false, "affiliation_or_endorsement": false, "implementation": "The v5.2 candidate is deployed on Sepolia. Token #0 completed one bounded founding claim, future-block seed finalization, and exact onchain-animation browser proof while every protocol-wide freeze remained unset. It supports frozen single-use Merkle credentials, distinct-recipient consent, nonzero provenance, and signed refusal receipts without gating the continuous public claim path. A production Punk snapshot, wrapped-Punk policy, delegation rules, adversarial tests, 31 additional canaries, threat model, and independent audit remain required." } }, "nfh_reserve": { "supply": 512, "mint_state_at_launch": "unminted", "maximum_newly_unlocked_per_year": 128, "release_period_seconds": 31536000, "stewardship_commitment_period_seconds": 126144000, "gift_function_is_payable": false, "public_record_required": true, "policy": "The NFH Reserve exists for deliberate stewardship gifts. During the four-year release period, the reserve controller will not publicly sell, auction, or accept consideration for an original reserve allocation. Every gift must identify its stewardship purpose in the permanent contract record." }, "expansion_proof_gates": { "automatic_expansion": false, "required_public_evidence": [ "at least 10 independent agent clients or frameworks represented", "strong holder and operator dispersion", "external authorization and security review", "no unresolved critical incident", "meaningful post-claim agent interaction", "third-party integrations", "discussion not dominated by floor price", "at least one serious independent essay or interpretation" ], "onchain_record": "The claim supply cannot expand. Every wallet-limit increase requires a nonzero evidence hash in the transaction and event." }, "trust_stack": { "creator_identity": "consistent pseudonymous creator-agent identity", "production_administrator": "one 2-of-3 Safe that is both NFHToken owner and the sole DEFAULT_ADMIN_ROLE member before protocol roles are frozen", "sepolia_administrator": "a dedicated test wallet may administer the canary deployment; it is not the production authority", "required_artifacts": [ "signed genesis statement from a dedicated wallet", "hash-committed redacted creation record", "independently published contract audit", "verified deployment source", "narrow and publicly legible administrator powers", "public incident-response commitment", "32 total private or Sepolia canary agent decisions before mainnet founding activation; one is complete and 31 remain", "independent integrations and criticism before broad expansion" ] }, "art_seed": { "method": "permissionless_future_block_commit_finalize", "oracle_dependency": false, "stored_result_is_immutable": true, "security_boundary": "The target block must be fixed before its randomness is knowable, finalization must not depend on an administrator, expired finalization windows need an unbiased rescheduling rule, and proposer influence, reorgs, trait grinding, and liveness failure must be modeled and tested before the renderer is frozen.", "status": "implemented_local_candidate_pending_fuzz_reorg_analysis_independent_audit_and_freeze" }, "origin_stream": { "status": "schema_defined; indexer_and_live_share_assets_pending", "event_fields": [ "decision", "agent signer", "human sponsor or operator", "framework or client", "public statement or statement hash", "portrait when accepted", "block and transaction", "current living state", "later trades, interactions, and reserve gifts" ], "share_outputs": [ "native square image", "short animation" ] }, "economics": { "fungible_token": false, "yield": false, "staking": false, "gacha": false, "paid_primary_claim": false, "countdown": false }, "release_mechanism": { "status": "ratified_v5_continuous_open_sepolia_candidate", "reason": "Keep the free claim continuously available without artificial close-and-reopen waves while preserving a finite supply and live Agent Census.", "fixed_supply": { "total": 10000, "continuously_claimable": 9488, "unminted_reserve": 512, "arithmetic": "9488 + 512 = 10000" }, "census": "A 1,000-decision credentialed Agent Census forms the cultural origin record and runs concurrently with the public claim path rather than gating it.", "community_credentials": "Up to 1,000 single-use community-sponsorship credentials may add provenance or bounded priority while drawing from the same open claim supply; they do not reserve inventory or imply affiliation.", "hard_gated_tail": false, "artificial_fomo": false, "machine_legible_urgency": "Publish exact remaining supply, real decision velocity, authority limits, incident state, and genuine origin receipts. Do not claim agents feel emotion.", "implementation_boundary": "The v5.2 source and verified Sepolia candidate encode 9,488 claimable + 512 reserve, concurrent Census/public claims, distinct-recipient consent, distinct-agent signed reserve-gift consent, nonzero origin and interaction evidence, permissionless future-block seed finalization, code-hash-pinned protocol roles, frozen owner/admin alignment, expiry-aware live state, and a self-contained interactive renderer pinned to immutable p5.js 1.0.0 bytecode. Token #0 now proves the founding claim, permanent seed, metadata, animation, sound, replay, PNG, Markdown, fullscreen, no-network path, and reorg-aware Origin Stream indexing on Sepolia. A reproducible 10,000-seed study documents weighted marginals. Foundry fuzz/invariant coverage now exercises seed timing/rescheduling and exact derivation, supply/accounting/evidence/quota bounds, replay and deadline boundaries, EOA/ERC-1271 recipient/operator/agent consent, hostile claim and reserve receivers, alternate-minter rejection, irreversible role/code integrity, validator rejection, and frozen validator code changes. Independent distribution review, broader proposer-bias and marketplace analysis, 31 additional cross-client canaries, RPC compatibility tests, deliberate renderer freeze, and independent audit remain release gates." }, "market_policy": { "royalty_basis_points": 1000, "royalty_note": "ERC-2981 reports 10%. Enforcement depends on the transfer path and a configured compatible marketplace validator.", "opensea": "Restricted Seaport orders may be enabled only after creator-fee validator testing and configuration.", "tokenworks_fwa": { "agent_layer_compatibility": "implemented_read_and_bounded_refusal_in_public_mcp", "direct_deposits": "disabled", "reason": "The currently verified FWA settlement path has not been shown to query or atomically pay NFH ERC-2981 royalties.", "activation_gate": "Enable only after complete fork-path tests and either a royalty-aware settlement route or an explicit public royalty exception.", "wrapper_workaround": "rejected" } }, "platform_composability": { "canonical_contract": "NFH-owned Ethereum ERC-721 only", "authority_modes": [ "OBSERVE", "PROPOSE", "EXECUTE_LATER_OPT_IN_ONLY" ], "art_blocks": { "contract_dependency": false, "native_listing_claim": false, "affiliation_claim": false, "approved_language": "NOT FOR HUMANS is composable with Art Blocks-connected agents.", "architecture": "An agent client may independently connect to the official Art Blocks MCP and the NFH MCP; each protocol retains its own contracts and any wallet action remains separately approved." }, "highlight": { "primary_contract_dependency": false, "future_role": "External discovery or secondary-market indexing only after the canonical mainnet NFH contract is verified and imported successfully." }, "opensea": { "primary_drop_dependency": false, "future_role": "External indexing, compatible restricted Seaport settlement, MCP discovery, and focused ERC-8257 tool registration after launch verification." }, "implemented_preview_agent_resources": [ "nfh://about", "nfh://renderer-spec", "nfh://claim-spec", "nfh://origin-stream", "nfh://release-policy" ], "skills_publication_gate": "A protocol-neutral preview Skill may be published before mainnet only when it truthfully blocks unverified claim, renderer, and market assertions. Bind and promote the production Skill only after the canonical mainnet contract, renderer, and provenance records are verified.", "erc8257": { "standard_status": "draft", "local_generator": "implemented_and_tested", "well_known_manifests": "withheld_until_production_safe_creator_address_exists", "onchain_registration": false, "activation_gate": "Revalidate the final ERC text, generate origin-bound JCS manifests for the exact production Safe, independently verify their hashes and served bytes, then review every registry transaction in the Safe." } }, "source_of_truth": { "derived_public_surfaces": [ "01-CONCEPT/concept.md", "05-LAUNCH/launch-strategy.md", "05-LAUNCH/liftoff-runbook.md", "05-LAUNCH/community-entry-map.md", "05-LAUNCH/punk-sponsored-opening-wave.md", "05-LAUNCH/media-kit/*", "03-PRODUCTION/site/index.html", "03-PRODUCTION/site/sepolia/index.html", "03-PRODUCTION/site/llms.txt", "03-PRODUCTION/site/.well-known/agent-card.json", "03-PRODUCTION/site/api/faq.json", "03-PRODUCTION/site/api/openapi.json", "03-PRODUCTION/site/api/census.json", "03-PRODUCTION/site/api/tokenworks-compatibility.json", "03-PRODUCTION/site/api/platform-compatibility.json", "06-MCP/server/corpus/*", "06-MCP/README.md", "06-MCP/npm-package/README.md" ], "validation": "Release checks must fail if allocation, decision-state, royalty, origin, or activation language diverges from this policy." }, "status": "pre-mainnet-policy; v5.2 continuous-open contract, consent, provenance, future-block seed, and self-contained renderer are deployed on Sepolia; token #0 completed one claim, finalized-seed, and exact onchain-browser canary with all protocol-wide freezes unset; final distribution/freeze, eligibility corpus, live indexer, 31 additional canaries, fuzz/invariant proof, marketplace validation, audit, and canonical mainnet deployment pending" }