{"schemaVersion":"2.0.0","platformId":"programmable","agent":{"schemaVersion":"programmable.agent-discovery.v1","name":"Programmable","apiBaseUrl":"https://api.programmable.market","guideUrl":"https://programmable.market/agents.md","discoveryUrl":"https://programmable.market/api/agent","releaseDiscoveryUrl":"https://programmable.market/.well-known/programmable.json","docsIndexUrl":"https://programmable.market/llms.txt","docsFullUrl":"https://programmable.market/llms-full.txt","website":{"launch":"https://programmable.market/launch","moduleMode":"https://programmable.market/launch/modules","buildModule":"https://programmable.market/developers/modules","apiKeys":"https://programmable.market/developers/api-keys","customLaunchHandoff":"https://programmable.market/developers/api-keys?start=custom&chainId=4663","launchHistory":"https://programmable.market/developers/api-keys?view=history","explore":"https://programmable.market/explore/robinhood","profile":"https://programmable.market/profile","manageModuleCoin":"https://programmable.market/launch/modules/manage/{tokenAddress}"},"workflows":{"customLaunchPlan":{"chainId":4663,"scopes":["custom-launch:create","custom-launch:read"],"manifest":"https://api.programmable.market/v4/chains/4663/custom-launch-contract/manifest.json","setup":"https://api.programmable.market/v4/chains/4663/custom-launch-contract/agent-setup.json","openApi":"https://programmable.market/openapi/custom-launch-v4.2.json","capabilities":"https://api.programmable.market/v4/chains/4663/custom-launch-capabilities","availability":"Read the live operation status and bind the manifest digest before packing. Static artifacts do not activate writes."},"customLaunch":{"scopes":["custom-launch:create","custom-launch:read"],"guide":"https://programmable.market/developer-reference/custom-launch","ethereum":{"chainId":1,"capabilities":"https://api.programmable.market/v3/capabilities","openApi":"https://programmable.market/openapi/custom-launch-v3.json"},"robinhood":{"chainId":4663,"capabilities":"https://api.programmable.market/v4/chains/4663/capabilities","readiness":"https://api.programmable.market/v4/chains/4663/readiness","openApi":"https://programmable.market/openapi/custom-launch-v4.json"}},"multiRoleProject":{"chainId":4663,"scopes":["custom-launch:create","custom-launch:read"],"useWhen":"The token and hook share one physical contract. MultiRole V2 is separate from the existing 4.1 profile.","capabilities":"https://api.programmable.market/v4/chains/4663/multi-role-custom-launches/capabilities","guide":"https://api.programmable.market/v4/chains/4663/multi-role-custom-launches/guide.md","client":"https://api.programmable.market/v4/chains/4663/multi-role-custom-launches/client.mjs","availability":"Check current capabilities readiness and context before packing or authenticated preflight/create. Published documentation does not imply enabled admission; capabilities may report unavailable.","economicAdmission":"Read this historical version's current capabilities and exact source claims. New open plans use the separate Custom Launch Plan contract; optional claim adapters never define that plan's launch eligibility."},"moduleContribution":{"scopes":["modules:submit","modules:read"],"guide":"https://programmable.market/developers/module-mode-api-v1.md","developerGuide":"https://programmable.market/developer-reference/module-mode","capabilities":"https://api.programmable.market/v1/modules/capabilities","context":"https://api.programmable.market/v1/modules/context","reviewCapabilities":"https://api.programmable.market/v1/modules/review-capabilities","submissions":"https://api.programmable.market/v1/modules/submissions","reviewStatus":"https://api.programmable.market/v1/modules/submissions/{submissionId}/review","cliManifest":"https://programmable.market/developers/module-mode-cli/v1.0.0-development.7/manifest.json","engineStarterManifest":"https://programmable.market/developers/module-mode-starters/engine-program/v0.1.0-development.1/manifest.json","sourceBuildProfiles":["programmable.native-solidity@1","programmable.module-engine-solidity@1"],"sourceIntake":"Open source packages with versioned runtime and host requirements. There is no required idea category or runtime allowlist for intake. Read context for current limits and separate review adapter coverage.","reviewBoundary":"Installed build profiles describe executable review coverage, not eligible ideas. Unknown requirements remain awaiting_plan until the platform supplies a reviewed plan or integration. Submission never grants registry or availability approval.","intakeGate":"For uploads, require moduleContributions.submissions from public /v1/modules/capabilities and authorization.canSubmit from keyed /v1/modules/context. Context intake.available reports the same deployment readiness. New key issuance is separate.","legacyCapabilityFields":"The root reviewAvailable, approved and available flags in /v1/modules/capabilities remain false for compatibility. They do not gate uploads or report account approval.","reviewReadiness":"Read reviewAvailable and statusReadAvailable from /v1/modules/review-capabilities, or review.available and review.statusReadAvailable from context. Review readiness is not an intake gate.","receiptStatus":"status-module and submission lists return the immutable intake receipt, including draft_received and unreviewed after review advances. review-status-module reports the current review.state and review.nextAction.","authorWalletRequired":true,"rewardWalletRequired":true,"authorWalletSource":"authenticated-context","rewardWalletDefault":"author"},"moduleLaunch":{"chainId":4663,"availability":"https://programmable.market/api/module-mode","website":"https://programmable.market/launch/modules","transactionAuthority":"connected-wallet"},"moduleIndexing":{"chainId":4663,"authenticationRequired":false,"contract":"https://programmable.market/api/module-mode/indexer/v1","guide":"https://programmable.market/developer-reference/module-mode-indexing","markdown":"https://programmable.market/developers/module-mode-indexing-v1.md","sourceIdentity":"Index Native V1, Native V2 and Engine V1 using their exact source-version adapters and installed release evidence. The linked indexer/v1 contract describes Native V1. Module identifiers are configuration, not an allowlist."}},"authentication":{"environmentVariable":"PROGRAMMABLE_API_KEY","header":"Authorization: Bearer $PROGRAMMABLE_API_KEY","credentialOrigin":"https://api.programmable.market","publicDocsRequireKey":false,"existingKeyPermissionsUnchanged":true}},"name":"Programmable Developer Platform","description":"Canonical discovery for Programmable Classic and Custom launches. Fresh V3.3 general-hook writes and lifecycle reads accept wallet keys, partner roots and bounded partner subkeys on Ethereum Mainnet. Robinhood Chain V4 availability is derived from the versioned release evidence below, independently from token publication and indexing. Robinhood V4.1 requires a request-bound funding plan, an atomic initial buy meeting a $1 gross native ETH reference at permit authorization, and an exact server-verified native fee kernel. The kernel policy is 20 bps on the gross native leg once per successful swap, paid through native ETH claims to the fixed treasury. Per-launch fee and initial-buy receipts bind the exact prepared code and stamped pool. Source admission does not prove deployed vault state, a completed trade, collected revenue or third-party indexing. Require live publicWrites, publicAuthorization and releaseReady discovery before creating; the wallet signature remains separate. V2 and V1 remain readable but their creation routes are write-fenced.","apiVersion":"2","apiBaseUrl":"https://developers.programmable.family/api/v2","statusUrl":"https://developers.programmable.family/api/v2/status","manifestUrl":"https://developers.programmable.family/api/v2/manifest","launchesUrl":"https://developers.programmable.family/api/v2/launches","tokenListUrl":"https://developers.programmable.family/api/v2/token-list","routerCustomIdentitySnapshotUrl":"https://programmable.market/api/indexers/v1/router-custom-identities","openApiUrl":"https://developers.programmable.family/openapi/programmable-v2.yaml","schemasBaseUrl":"https://developers.programmable.family/schemas/v2/","documentationUrl":"https://developers.programmable.family/","sourceUrl":"https://github.com/programmablehq/Developers","customLaunchApi":{"intake":{"schemaVersion":"programmable.custom-launch-agent-intake.v1","scope":"agent-preparation-not-server-authorization","chainSelection":{"requiredBefore":["chain-specific-implementation","build","pack","submit"],"authority":"explicit-user-choice","reuseExplicitPriorAnswer":true,"missingOrAmbiguous":"ask-user-before-proceeding","neverInferFrom":["api-key","connected-wallet","project-defaults","uniswap-v4"],"choices":[{"chainId":1,"caip2":"eip155:1","name":"Ethereum Mainnet","apiVersion":"3"},{"chainId":4663,"caip2":"eip155:4663","name":"Robinhood Chain Mainnet","apiVersion":"4"}]},"chainSpecific":{"robinhood":{"schemaVersion":"programmable.robinhood-funding-intake.v1","chainId":4663,"scope":"agent-preparation-not-server-authorization","requiredBefore":["funding-dependent-implementation","build","pack","submit"],"reuseExplicitPriorAnswers":true,"entryChoices":["buyer-funded","creator-funded","hybrid-or-custom"],"choicesAreRequestEnumValues":false,"pricingModelIsFundingSource":false,"collect":["funding-source","pricing-and-reserve-model","initial-token-inventory","initial-liquidity-assets-and-amounts","funding-wallet","initial-buy-and-minimum-token-output","capital-budget","gas-budget","gas-payer","intended-launch-state"],"costReview":{"earlyEstimate":"before-funding-dependent-implementation","finalEstimate":"exact-bound-wallet-transaction-on-chain-4663","separateCapitalAndGas":true,"avoidDoubleCountingInitialBuy":true,"unknownCostIsZero":false,"insufficientBudget":"resolve-with-user-before-launch","intentionalBuildBeforeFunding":"explicit-user-acknowledgement","refreshBalanceBeforeWalletAction":true},"platformFee":{"policySource":"customLaunchApi.versions.v4.platformFeePolicy","readCurrentPolicyAndEnforcement":true,"separateCreatorAndLpFees":true,"configurationIsCollectionProof":false,"treasuryIsUserSelectable":false},"instructions":["Robinhood only (chain 4663): before funding-dependent implementation, ask whether buyers will build the capital, the creator will provide starting liquidity, or the project uses a hybrid or custom source. Reuse an explicit earlier answer. These are conversation choices, not API enum values or a project allowlist. A bonding curve describes pricing; it does not by itself prove funding or repayment reserves.","Collect the initial token inventory, real and virtual reserves, any liquidity assets and amounts, funding wallet, initial buy and minimum token output, available capital and gas budgets, gas payer, and intended launch state. Clarify who funds each step and when trading can actually begin. Zero initial ETH principal is not a free deployment. An initialized empty pool is not a funded or tradable curve; virtual reserves are not spendable ETH. Do not invent a sponsor or promise buyer demand.","Before building, show the preliminary capital requirement separately from estimated deployment and transaction gas, with assumptions and unknowns. Check available balances on Robinhood Chain when the funding wallet is known. Do not count assets on another chain as available Robinhood funding. If the budget is insufficient or uncertain, resolve the funding plan with the user; continue building before funding only when the user explicitly accepts that launch is still unfunded. Never silently change the chain, launch model or budget.","For Robinhood profile 4.1, when selected by live discovery and capabilities, every funded launch requires an atomic initial buy worth at least USD 1 at the server reference rate. Before building, read GET /v4/chains/4663/initial-buy-quote without an API key and show its minimum native ETH amount plus separate gas. Have the user confirm the exact buy amount and positive minimum token output; do not raise the amount or budget automatically. The buy must pay real tokens to the launch controller in the same transaction; failure rolls back the launch. Budget the initial buy once within total transaction value. The server obtains its own fresh quote at admission and may require a newly confirmed package if the amount falls below the current minimum. A first buy does not guarantee third-party indexing. Historical 4.0 requests keep their original contract; never invent 4.1 fields for them.","Read the selected Robinhood platformFeePolicy and enforcement status from discovery and capabilities. Native20 charges 20 bps (0.20%) of the gross native ETH amount once per successful buy or sell, rounded up to the next wei. The full 20 bps belongs to Programmable; creator and pool LP fees are additional. For example, a 1 ETH gross trade credits 0.002 ETH to Programmable. The fixed platform recipient is 0xD88539d3c4C460136a733A3Fd60cf6BF269079da. Fees accrue as PoolManager native claims; anyone can trigger a claim, but payment goes only to the configured recipient. Historical contracts retain their fee models. Show gas, liquidity and initial buy separately; do not count claims as new revenue. API keys cannot claim fees, and accrual does not prove a revenue-processing or bridging transaction.","Before submission, summarize the funding source, pricing and reserve model, exact initial assets and amounts, initial buy and minimum token output, intended launch state, platform recipient and all fees alongside the project metadata. Map the plan to the selected V4 schema's actual funding and liquidityModel fields. Do not add invented fields to a frozen request. Verify that the packed graph and total wallet transaction value match the agreed plan; an initial buy already included in that value is not an extra cost. Resolve mismatches by changing and revalidating the request with the user.","Before the Robinhood wallet action, review the bound transaction value separately from a fresh gas estimate and the current native balance. Mark unavailable estimates as unknown, never zero; resolve an unaffordable or unknown funding requirement before sending. The website's bound summary and transaction review do not prove economic safety or future liquidity. Signing and sending remain the controller's separate wallet actions."]}},"metadata":{"requiredBefore":["build","pack","submit"],"required":["token.name","token.symbol","presentation.description","presentation.image.sourcePath","presentation.image.uri","presentation.links.website","presentation.links.x"],"askIfAvailable":["telegram","discord","documentation","github","other"],"additionalLinksRequired":false,"reuseExplicitPriorAnswers":true,"inventedValuesAllowed":false,"actualImageBytesRequired":true,"imagePolicy":"selected-chain-pack-config-schema"},"review":{"beforeSubmit":"show-complete-user-summary-and-resolve-contradictions","website":"same-bound-read-only-metadata","changedMetadata":"repack-and-revalidate-a-new-request","walletAuthority":"separate-controller-review-and-sign"},"instructions":["1. Confirm the project's intended chain: Ethereum Mainnet (1) or Robinhood Chain Mainnet (4663). Reuse an explicit earlier answer; ask if the choice is missing, ambiguous or contradictory. Uniswap V4 identifies a protocol, not a chain. Never infer the chain from the API key, connected wallet or project defaults, and never fall back to another chain when a gate fails.","2. Before building or packing, collect the token name, ticker/symbol, useful public bio/description, actual image file and its public URI, website and X profile. Reuse answers and assets already supplied by the user; ask only for missing or conflicting values. Ask whether Telegram, Discord, documentation, GitHub or other links are available; these additional links are optional. Never invent metadata, image bytes or public URLs. Use the selected chain's image rules.","3. Before submission, show the complete summary: chain, launch wallet, token name, ticker, bio, image preview and public URI, website, X and every additional link. Resolve contradictions with the user. The website shows the same bound metadata read-only before wallet authorization. To change metadata, repack and revalidate a new request. API access does not authorize the agent to sign or broadcast; the controller reviews and signs the exact wallet action separately.","Do not begin chain-specific implementation until the chain is explicit. Do not build, pack or submit while required intake values are missing or contradictory. Existing explicit user answers remain valid; do not ask for them again."]},"status":"live","readStatus":"live","apiVersion":"3","apiBaseUrl":"https://api.programmable.market","readyzUrl":"https://api.programmable.market/readyz","capabilitiesUrl":"https://api.programmable.market/v3/capabilities","preflightUrl":"https://api.programmable.market/v3/custom-launches/preflight","finalizedMetadataUrl":"https://api.programmable.market/v3/finalized-custom-launches","openApiUrl":"https://programmable.market/openapi/custom-launch-v3.json","apiKeysUrl":"https://programmable.market/developers/api-keys","partnerCredentials":{"schemaVersion":"programmable.partner-public-contract.v1","status":"live","environmentVariable":"PROGRAMMABLE_API_KEY","credentialKinds":["root","subkey"],"canonicalV3LaunchRoutes":true,"launchScopes":["custom-launch:create","custom-launch:read"],"rootOnlyScope":"partner-subkeys:manage","subkeyAdminRoutes":["GET /v1/partner/subkeys","POST /v1/partner/subkeys","POST /v1/partner/subkeys/{subkeyId}/rotate","DELETE /v1/partner/subkeys/{subkeyId}"],"maximumSubkeyDepth":1,"subkeyScopesAndBudgetsCannotExceedRoot":true,"subkeyExpiryCannotExceedRoot":true,"permitReissueDispositionCredentialKind":"wallet-only","metadataPolicySameAsWalletKeys":true,"controllerWallet":{"walletKey":"must-equal-key-wallet-binding","partnerCredential":"selected-by-exact-request","mustReviewSignAndBroadcast":true},"launchHistoryVisibility":{"root":"all-partner-attributed-root-and-subkey-launches","subkey":"stable-subkey-lineage-only","rootAggregatesSubkeys":true,"rotationPreservesLineageHistory":true,"newDistinctSubkeyStartsIsolatedLineage":true,"revokedCredentialCanAuthenticate":false},"secretDelivery":"issue-and-rotation-response-only","callerSuppliedAttributionAccepted":false,"attributionSource":"authenticated-partner-api-key","attributionIsVerificationOrSafetyClaim":false,"walletSigningAuthority":false,"walletBroadcastAuthority":false,"gateBypassAuthority":false,"adminProvisioning":{"authentication":"website-bff-assertion-v2","authorization":"server-configured-privy-user-wallet-pair-allowlist","clientMaySelfAuthorize":false}},"guideUrl":"https://programmable.market/docs/developers/custom-launch","agentIntegration":{"status":"live","schemaVersion":"programmable.custom-launch-agent-remediation-catalog.v1","startUrl":"https://programmable.market/.well-known/programmable.json","remediationCatalogUrl":"https://programmable.market/policies/custom-launch-agent-remediation-v1.json","packConfigSchemaUrl":"https://programmable.market/schemas/custom-launch/v3/pack-config.json","existingProjectGuideUrl":"https://programmable.market/docs/developers/custom-launch#existing-project-integration","openApiUrl":"https://programmable.market/openapi/custom-launch-v3.json","capabilitiesUrl":"https://api.programmable.market/v3/capabilities","preflightUrl":"https://api.programmable.market/v3/custom-launches/preflight","finalizedMetadataUrl":"https://api.programmable.market/v3/finalized-custom-launches","apiKeyEnvironmentVariable":"PROGRAMMABLE_API_KEY","apiKeyPlaceholder":"$PROGRAMMABLE_API_KEY","apiKeyContainsPolicy":false,"manualProjectAllowlist":false,"automaticAdmission":true,"automaticRouterSimulation":true,"clientChecks":"preparation-only","decisionAuthority":"api-server","walletAuthorizationGate":{"mandatoryServerGates":["static-hard-block-policy","exact-router-simulation"],"behaviorEvidence":{"requiredForProfileVersion":"3.4.0","configurationIsExecutionEvidence":false,"walletHandoffRequiresVerifiedEvidence":false,"requiredPlatformFeeConformanceStatus":"verified","nonFeeVectorsMayRemainUnverified":true,"evidenceAuthority":"platform-runtime-executor","signedExecutionReceiptRequired":true,"notConfiguredDisposition":"claims_remain_unverified","unavailableDisposition":"claims_remain_unverified","executedFeeFailureDisposition":"blocks_wallet_handoff","executedHardInvariantFailureDisposition":"blocks_wallet_handoff"},"feePolicy":{"feeBehaviorClaim":false,"tenBpsClaimRequiresExactPerLaunchVerifiedFeePathEvidence":true,"claimScope":"exact-launch-and-stamped-poolkey-only"},"localOrModelApprovalAccepted":false},"fundingAuthorizationPatch":{"schemaVersion":"programmable.eip3009-authorization-patch.v2","configKey":"fundingSignaturePatch","authorizationEncoding":"eip3009-nonce-r-s-v-abi-leaves"},"walletSigning":"separate-controller-action","requiredCommandOrder":["pack","validate --remote","submit","status --watch --until authorized","status --watch --until finalized"],"quickstart":["pack","validate --remote","submit","status --watch --until authorized","wallet","status --watch --until finalized"],"authenticatedApiOrigin":"https://api.programmable.market","apiOriginOverride":false,"preflightAndSubmitCapabilitiesFailClosedBeforeApiKey":true,"remotePreflight":{"quotaConsumed":false,"quotaConsumedMeaning":"no-launch-creation-quota-or-durable-reservation","authenticatedRequestRateBudgetConsumed":true,"nonceAllocated":false,"persisted":false,"walletSignatureRequiredLater":true,"walletBroadcastByService":false}},"cli":{"packageName":"@programmable/launch","binary":"programmable-launch","releaseVersion":"3.3.9","releaseUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/tag/programmable-launch-v3.3.9","tarballUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v3.3.9/programmable-launch-3.3.9.tgz","checksumUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v3.3.9/programmable-launch-3.3.9.tgz.sha256","tarballSha256":"sha256:44b71185355bea8db6820b61f12351db7cc1237aa7ecf9b0db3cfbb09bebee01"},"compatibility":{"v1":{"openApiUrl":"https://programmable.market/openapi/custom-launch-v1.json","cliReleaseVersion":"1.0.1","cliTarballUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v1.0.1/programmable-launch-1.0.1.tgz"},"v2":{"openApiUrl":"https://programmable.market/openapi/custom-launch-v2.json","reads":"live","create":"read-only","createHttpStatus":409,"createErrorCode":"CUSTOM_LAUNCH_V2_READ_ONLY","retryable":false,"preparedAndSimulatingReads":"observation-only","readMayAuthorize":false}},"publicRelease":{"status":"live","apiVersion":"3","guideUrl":"https://programmable.market/docs/developers/custom-launch","openApiUrl":"https://programmable.market/openapi/custom-launch-v3.json","authentication":"bearer-api-key","walletBoundary":"separate-wallet-signature","cli":{"packageName":"@programmable/launch","binary":"programmable-launch","releaseVersion":"3.3.9","releaseUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/tag/programmable-launch-v3.3.9","tarballUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v3.3.9/programmable-launch-3.3.9.tgz","checksumUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v3.3.9/programmable-launch-3.3.9.tgz.sha256","tarballSha256":"sha256:44b71185355bea8db6820b61f12351db7cc1237aa7ecf9b0db3cfbb09bebee01"}},"generalHookProfile":{"status":"live","apiVersion":"3","profileId":"programmable.direct-native-hook-graph.v1","profileRevision":3,"profileVersion":"3.3.0","compatibleProfileVersions":["3.2.0","3.1.0","3.0.0","2.0.0"],"legacyProfileSemantics":"readable-and-byte-identical-retryable-only","productionLaunchAuthorized":true,"createPath":"/v3/custom-launches","capabilitiesPath":"/v3/capabilities","preflightPath":"/v3/custom-launches/preflight","finalizedMetadataPath":"/v3/finalized-custom-launches","openApiUrl":"https://programmable.market/openapi/custom-launch-v3.json","cliReleaseVersion":"3.3.9","projectMetadata":{"schemaVersion":"programmable.project-metadata.v1","inputSchemaVersion":"programmable.project-metadata-input.v1","requiredForProfileVersion":"3.3.0","requiredForProfileVersions":["3.2.0","3.3.0","3.4.0"],"strictMetadataProfileVersions":["3.3.0","3.4.0"],"strictNewPackPolicyProfileVersion":"3.3.0","legacyWithoutMetadataProfileVersions":["2.0.0","3.0.0","3.1.0"],"legacyMetadataProfileVersions":["3.2.0"],"requiredFields":["token.name","token.symbol","presentation.description","presentation.image","presentation.links"],"imageMayBeNull":false,"legacyImageMayBeNullProfileVersions":["3.2.0"],"maximumLinks":32,"linkKinds":["website","documentation","x","telegram","discord","github","other"],"projectMetadataHashDomain":"programmable.project-metadata.v1","graphBundleHashBindingDomain":"programmable.custom-graph-project-metadata.v1","postDeploymentTokenReadbackRequired":true},"admissionPolicy":{"manualProjectAllowlist":false,"hardBlockFindingRules":[{"code":"RUNTIME_CALLCODE","targetRoles":["any"]},{"code":"RUNTIME_SELFDESTRUCT","targetRoles":["any"]},{"code":"SOURCE_SELFDESTRUCT_SURFACE","targetRoles":["any"]},{"code":"V4_CALLBACK_AUTHENTICATION_MISSING","targetRoles":["hook"]},{"code":"V4_CALLBACK_AUTHENTICATION_INVALID","targetRoles":["hook"]},{"code":"V4_CALLBACK_POOL_MANAGER_MISMATCH","targetRoles":["hook"]},{"code":"V4_ENABLED_CALLBACK_IMPLEMENTATION_MISSING","targetRoles":["hook"]}],"needsEvidenceFindingCodes":["RUNTIME_CREATE","RUNTIME_CREATE2","SOURCE_TARGET_ANALYSIS_INCOMPLETE","V4_CALLBACK_AUTHENTICATION_REVIEW_REQUIRED","RUNTIME_DELEGATECALL","SOURCE_PROXY_OR_UPGRADE_SURFACE","SOURCE_MUTABLE_PAUSE_SURFACE","SOURCE_MUTABLE_BLOCKLIST_SURFACE","SOURCE_MUTABLE_TAX_OR_FEE_SURFACE","SOURCE_MUTABLE_TRANSFER_RESTRICTION","SOURCE_MUTABLE_ADMIN_SURFACE","SOURCE_PUBLIC_MINT_SURFACE","SOURCE_EXTERNAL_DEPENDENCY_SURFACE","SOURCE_TRANSFER_FEE_SURFACE","SOURCE_LIQUIDITY_LOCK_OR_CUSTODY_SURFACE"],"returnDeltaRequiresBehaviorEvidence":true}},"integrationPreview":{"status":"live","apiVersion":"3","publicAuthorization":true,"createPath":"/v3/custom-launches","capabilitiesPath":"/v3/capabilities","preflightPath":"/v3/custom-launches/preflight","finalizedMetadataPath":"/v3/finalized-custom-launches","openApiUrl":"https://programmable.market/openapi/custom-launch-v3.json","profileId":"programmable.direct-native-hook-graph.v1","profileRevision":3,"profileVersion":"3.3.0","compatibleProfileVersions":["3.2.0","3.1.0","3.0.0","2.0.0"],"requestSchemaVersion":"programmable.custom-launch-create-request.v3","minimumTargets":3,"maximumTargets":16,"projectOwnedToken":true,"projectOwnedHook":true,"hookPermissionMaskRange":{"minimum":0,"maximum":16383},"allFourteenHookPermissionsStructurallySupported":true,"manualProjectAllowlist":false,"advancedSurfacesRequireEvidence":["proxy-or-delegatecall","mint-tax-pause-or-transfer-controls","liquidity-custody-or-locking","return-delta-custom-accounting"],"quoteCurrencies":["native","erc20"],"liquidityModels":["external-concentrated-liquidity","launch-seeded-concentrated-liquidity","hook-inventory-custom-accounting"],"productTruthAxes":["deployment","trading","platform_fee_evidence","source_verification","indexing","featured"],"platformAdmissionReceiptRequired":true,"routerSimulationRequiredBeforeAuthorization":true,"serverVerifiedEvidenceRequiredForPositiveClaims":true,"safetyClaim":false,"feeBehaviorClaim":false,"fundingAuthorization":{"modes":["none","wallet-transaction-value","eip-3009-receive-with-authorization"],"createRequestSignatureIncluded":false,"fundingIntentStage":"pre-signature"},"activationBlockers":[],"errorCode":null},"releaseCandidate":{"status":"promoted-to-public","publicAuthorization":true,"artifactPublished":true,"packageName":"@programmable/launch","binary":"programmable-launch","releaseVersion":"3.3.9","releaseTag":"programmable-launch-v3.3.9","releaseUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/tag/programmable-launch-v3.3.9","tarballUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v3.3.9/programmable-launch-3.3.9.tgz","checksumUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v3.3.9/programmable-launch-3.3.9.tgz.sha256","tarballSha256":"sha256:44b71185355bea8db6820b61f12351db7cc1237aa7ecf9b0db3cfbb09bebee01","openApiUrl":"https://programmable.market/openapi/custom-launch-v3.json","feePolicy":{"profileId":"programmable.direct-native-hook-graph.v1","profileRevision":3,"productionLaunchAuthorized":true,"chainId":"1","network":"Ethereum Mainnet","chargeTrigger":"successful-swap","basis":"per-launch-declared-conformance-basis","accountingModes":["additive-platform-share","inclusive-selected-total"],"ratePpm":1000,"denominatorPpm":1000000,"ratePercent":"0.10%","rateBps":10,"recipient":"0x4957f49620AFf3Adbbe8195a4f633E49cc93376c","applicantSelectedMaximumHundredthsOfBip":"100000","maximumAdditiveEffectiveTotalHundredthsOfBip":"101000","lpPoolFeeMaximumUnchanged":true,"enforcement":"per-launch-server-verified-fee-path-evidence-gate","admissionAssurance":"wallet-handoff-gate-only","safetyClaim":false,"feeBehaviorClaim":false,"tenBpsClaimRequiresExactPerLaunchVerifiedFeePathEvidence":true,"claimScope":"exact-launch-and-stamped-poolkey-only","lpFee":"separate-from-platform-fee","genericFeeClaiming":"not-live","genericBuybackManagement":"not-live"}},"authentication":"bearer-api-key","walletAuthority":"separate-review-and-sign","versions":{"v1":{"openApiUrl":"https://programmable.market/openapi/custom-launch-v1.json","reads":"live","create":"read-only","createHttpStatus":409,"createErrorCode":"CUSTOM_LAUNCH_V1_READ_ONLY","retryable":false},"v2":{"openApiUrl":"https://programmable.market/openapi/custom-launch-v2.json","reads":"live","create":"read-only","createHttpStatus":409,"createErrorCode":"CUSTOM_LAUNCH_V2_READ_ONLY","retryable":false,"preparedAndSimulatingReads":"observation-only","readMayAuthorize":false,"authorizedAndSubmittedReconciliation":"bounded"},"v3":{"openApiUrl":"https://programmable.market/openapi/custom-launch-v3.json","status":"live","publicAuthorization":true,"freshWritesOnlyProfileVersion":"3.3.0","createHttpStatus":202,"replayHttpStatus":200,"capabilitiesPath":"/v3/capabilities","preflightPath":"/v3/custom-launches/preflight","finalizedMetadataPath":"/v3/finalized-custom-launches","preflightQuotaConsumed":false,"preflightNonceAllocated":false,"preflightPersisted":false,"retryAfter":"honor-on-429-or-503"},"v4":{"status":"live","runtimeStatus":"routes-deployed","activationStage":"public-api-wallet-handoff","activationScope":"api-until-wallet","publication":{"indexingStatus":"unproven","canaryStatus":"not-performed","externalIndexingGuaranteed":false},"targetLaunchPath":"public-self-serve","publicAuthorization":true,"publicWrites":true,"releaseReady":true,"apiVersion":"4","profileVersion":"4.1.0","chainId":4663,"caip2":"eip155:4663","network":"Robinhood Chain Mainnet","capabilitiesPath":"/v4/chains/4663/capabilities","readinessPath":"/v4/chains/4663/readiness","preflightPath":"/v4/chains/4663/custom-launches/preflight","createPath":"/v4/chains/4663/custom-launches","statusPath":"/v4/chains/4663/custom-launches/{launchId}","finalizedMetadataPath":"/v4/chains/4663/finalized-custom-launches","openApiUrl":"https://programmable.market/openapi/custom-launch-v4.1.json","packConfigSchemaUrl":"https://programmable.market/schemas/custom-launch/v4.1/pack-config.json","sourceVerificationSchemaUrl":"https://programmable.market/schemas/custom-launch/v4.1/source-verification-status.json","guideUrl":"https://programmable.market/developers/custom-launch-api-v1.md","terminalIndexerGuideUrl":"https://programmable.market/developer-reference/robinhood-terminal-indexer","terminalIndexerFixtureUrl":"https://programmable.market/fixtures/robinhood-terminal-indexer-v1.json","launchStampRouterAbiUrl":"https://programmable.market/contracts/robinhood/ProgrammableLaunchStampRouterV1.abi.json","launchStampRouterAbiSha256":"sha256:bb4e728e9f9c850eb01f928e8a798ac206a82e241a8d93b3b3c686635c88ed86","launchStampRouterProfileNormalizedAbiSha256":"sha256:ab25262ce1cb907eba1cb820492754c0cd5d7278eb5fd6a024ba24c767323ac0","launchStampRouterProfileNormalizedAbiHashing":"jq -cS plus trailing LF","admissionDescriptorUrl":"https://github.com/programmablehq/Launch-Policy/blob/main/policy/custom-launch-admission-v4.1.json","sourceRepository":"https://github.com/programmablehq/PROGRAMMABLE","launchPolicyRepository":"https://github.com/programmablehq/Launch-Policy","cli":{"sourceCandidateVersion":"4.1.0","sourceCandidate":false,"released":true,"installable":true,"release":{"repository":"programmablehq/PROGRAMMABLE","tag":"programmable-launch-v4.1.0","version":"4.1.0","source":{"commitSha":"b17e40b9ff20bb16feb857bf77451b0a590e7105","ref":"refs/heads/production","treeSha":"373bceebe355e4f26eb8ffb265bff91630224ab6"},"assets":[{"name":"programmable-launch-4.1.0.cdx.json","sha256":"sha256:8382eb1fc17c45ea744806409528c8509bcb01b676f39848b8f060934450bcf7"},{"name":"programmable-launch-4.1.0.release.json","sha256":"sha256:8bbfb2864db15e3657a5cff0139b00a9aa950aaff248dcf515a3ed7ca9998460"},{"name":"programmable-launch-4.1.0.tgz","sha256":"sha256:9d7d26a74b0b4aaa3b3d8acddc80f821cbd79511ee1ada6acc7b935aeb21cac5"},{"name":"programmable-launch-4.1.0.tgz.sha256","sha256":"sha256:7074478e3f73da0f3db84114717046e60a71e259e867ef5416d33ef651dfc0a8"}],"releaseUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/tag/programmable-launch-v4.1.0","tarballUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v4.1.0/programmable-launch-4.1.0.tgz","checksumUrl":"https://github.com/programmablehq/PROGRAMMABLE/releases/download/programmable-launch-v4.1.0/programmable-launch-4.1.0.tgz.sha256"},"liveEthereumVersion":"3.3.9","signsWalletTransactions":false,"broadcastsWalletTransactions":false},"lifecycle":{"statuses":["received","validating","action_required","authorized","awaiting_wallet_signature","wallet_action_required","submitted","sequencer_soft_confirmed","ethereum_posted","finalized","failed"],"actionRequiredMeaning":"server-authored-remediation-not-wallet-action","walletStageStatusCommand":"programmable-launch status LAUNCH_ID --api-version 4 --chain-id 4663 --watch --until authorized","finalityStatusCommand":"programmable-launch status LAUNCH_ID --api-version 4 --chain-id 4663 --watch --until finalized","sourceVerificationStartsAfter":"finalized","sourceVerificationIndependentFromFinality":true,"indexingTradingAndPublicationIndependent":true},"foundationSourceCommitment":"0xe87f5edc2dc839bd87a26a80cb53f14b021e603a1753d27aae3a02862058d730","sourceVerification":{"requiredProvider":"sourcify-v2","requiredMatch":"exact","blockscoutAvailability":"optional-unproven-degraded","blockscoutExactSourceClaimAllowed":false,"blockscoutFinalityBlocker":false,"finalityIndependent":true},"deploymentEvidence":{"status":"verified-release","liveAuthorityPath":"/v4/chains/4663/readiness","chainDeploymentDescriptorDigest":"0x4bde6e26b6630aa684b4ac2a987d6322755896b249a189843bd3a58fe313694c","chainDeploymentId":"robinhood-mainnet-custom-launch-v1","finalityPolicyDigest":"sha256:537d531423d1285a3808556a57303ec68f1e6bdeea3c9aaf6320f9e5a0e47153","finalizedBlock":"50469365","finalizedEvidenceRef":"sha256:0f853f120560e8dcd15e748850cd648baf1f22bfa0c4a425ced058449c0b4ccf","foundationSourceCommitment":"0xe87f5edc2dc839bd87a26a80cb53f14b021e603a1753d27aae3a02862058d730","roots":{"graphFactory":"0x0B6b3F40f84Df25D3bd69238f937096177DD09Bd","permit2":"0x000000000022D473030F116dDEE9F6B43aC78BA3","permitAuthoritySafe":"0xeD617CE7f82e2AB589aDeFFD319D1D872Bc8De06","poolManager":"0x8366a39CC670B4001A1121B8F6A443A643e40951","positionManager":"0x58daec3116aae6D93017bAAea7749052E8a04fA7","programmableLaunchStampRouter":"0x34965F2A2ee9254522232C32F02056E92BE0C98a","stateView":"0xF3334192D15450CdD385c8B70e03f9A6bD9E673b","universalRouter":"0x06AfBA43Fd06227fA663b0DAecF536f6EaA6bf99","v4Quoter":"0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94"}},"authentication":"bearer-api-key","apiKeyEnvironmentVariable":"PROGRAMMABLE_API_KEY","apiKeyPlaceholder":"$PROGRAMMABLE_API_KEY","walletAuthorization":"separate-review-and-sign","profileSelection":"api-server-chain-binding","clientSelectableProfile":false,"readinessProfile":"robinhood-launch-readiness","productionProfile":"robinhood-production-launch","decisionAuthority":"api-server","localOrModelApprovalAccepted":false,"projectOwnedToken":true,"projectOwnedHook":true,"minimumTargets":3,"maximumTargets":16,"hookPermissionMaskRange":{"minimum":0,"maximum":16383},"allFourteenHookPermissionsStructurallySupported":true,"advertisedFundingModes":["wallet-transaction-value"],"erc20FundingStatus":"not-advertised-until-separate-proof","safetyClaim":false,"feeBehaviorClaim":false,"universalFeeBehaviorClaim":false,"platformFeePolicyStatus":"required-exact-native-fee-kernel","platformFeePolicy":{"required":true,"status":"required-exact-native-fee-kernel","appliesTo":"new-robinhood-v4.1-api-custom-launches-only","changesExistingLaunches":false,"changesEthereumLaunches":false,"rateBps":20,"ratePpm":2000,"ratePercent":"0.20%","recipient":"0xD88539d3c4C460136a733A3Fd60cf6BF269079da","basis":"gross-native-leg-once-per-successful-swap","feeCurrency":"native-ETH","accountingMode":"pool-manager-native-claims","rounding":"ceil-per-trade","accrual":"pool-manager-native-claims","claimMechanism":"permissionless-fixed-recipient","enforcement":"exact-kernel-proof-required-before-wallet-handoff","claimScope":"exact-verified-kernel-and-stamped-poolkey-only","separateFromCreatorAndLpFees":true,"childRuntimeObservation":"required-after-deployment","transfersToTreasuryImmediatelyPerTrade":false,"canonicalOnchainEnforcementProven":false,"guaranteedRevenue":false,"feeBehaviorClaim":false,"universalFeeBehaviorClaim":false},"genericFeeClaiming":"not-live","genericBuybackManagement":"not-live","externalIndexingGuaranteed":false,"legacyIntake":{"registry":"closed","github":"closed"},"activationBlockers":[],"cliVersion":"4.1.0","createRequestSchemaUrl":"https://programmable.market/schemas/custom-launch/v4.1/create-request.json","initialBuyQuotePath":"/v4/chains/4663/initial-buy-quote","fundingPlan":{"required":true,"schemaVersion":"programmable.robinhood-funding-plan.v1","schemaUrl":"https://programmable.market/schemas/custom-launch/v4.1/funding-plan.json","capitalSourceChoices":["buyer-funded","creator-funded","hybrid","custom"],"pricingModelChoices":["concentrated-liquidity","custom-curve","auction","custom"],"allocationFields":["initialLiquidityWei","initialBuyWei","reserveWei","otherLaunchValueWei"],"allocationSum":"equals-funding.valueWei-without-double-counting","budgets":["maxLaunchValueWei","maxGasCostWei"],"gasAdditionalToLaunchValue":true,"buildOnlyCreatesPermits":false,"declarationsProveLiquidityOrSolvency":false},"initialBuy":{"required":true,"minimumUsd":"1","assessmentTime":"permit-authorization","assessmentBase":"gross-native-initial-buy-at-admission","feeTreatment":"included-in-initial-buy","gasTreatment":"additional-not-included-in-initial-buy","execution":"atomic-full-native-input-and-minimum-token-output","recipient":"launch-wallet","minimumTokensOutRequired":true,"quotePath":"/v4/chains/4663/initial-buy-quote","quoteAuthentication":"none","quoteSchemaUrl":"https://programmable.market/schemas/custom-launch/v4.1/initial-buy-quote.json","reviewSchemaUrl":"https://programmable.market/schemas/custom-launch/v4.1/initial-buy-review.json","referenceChainId":1,"executionChainId":4663,"referenceFeed":"0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419","referenceDecimals":8,"maximumQuoteAgeSeconds":60,"staleFallback":false,"walletExecutionUsdValueGuaranteed":false,"firstTradeIndexingGuaranteed":false,"budgetIncreaseWithoutUserApproval":false},"nativeFeeClaiming":{"mechanism":"permissionless-fixed-recipient","scope":"exact-native-fee-vault-only","requiresPostDeploymentVaultVerification":true,"apiKeyScopeGranted":false,"transactionBroadcastByApi":false}}},"legacyIntake":{"registry":"closed","github":"closed"}},"chains":[{"chainId":1,"caip2":"eip155:1","name":"Ethereum Mainnet","explorerUrl":"https://etherscan.io","status":"live"},{"chainId":4663,"caip2":"eip155:4663","name":"Robinhood Chain Mainnet","explorerUrl":"https://robinhoodchain.blockscout.com","status":"live","customLaunchApiVersion":"4","runtimeStatus":"routes-deployed","activationStage":"public-api-wallet-handoff","activationScope":"api-until-wallet","publication":{"indexingStatus":"unproven","canaryStatus":"not-performed","externalIndexingGuaranteed":false},"targetLaunchPath":"public-self-serve","publicAuthorization":true,"publicWrites":true,"releaseReady":true,"externalIndexingGuaranteed":false}],"publicCategories":{"classic":{"discoveryStatus":"live"},"custom":{"discoveryStatus":"live","publicSubmissionStatus":"closed","publicSubmissionStatusScope":"legacy-registry-intake","publicApiCreateStatus":"live","customLaunchApiStatus":"live","registryDiscoveryStatus":"legacy-closed","legacyRegistrySubmissionStatus":"closed","legacyGithubSubmissionStatus":"closed","registryAddress":null,"registryStartBlock":null,"registryGeneration":null,"note":"Fresh V3.3 general-hook writes and lifecycle reads are live on Ethereum Mainnet. V2 and V1 history remain readable and both legacy creation routes are read-only. Finalized Router identities remain discoverable. The legacy Registry has no live deployment, and Registry or GitHub submission intake is closed."}},"compatibility":{"majorVersion":2,"additiveChangesOnly":true,"unknownFields":"ignore","unknownCapabilities":"preserve","unknownMarketKinds":"display-as-unsupported","deploymentAddresses":"resolve-from-manifest"},"extensions":{"programmable.legacy-v1":{"status":"supported","apiBaseUrl":"https://developers.programmable.family/api/v1","migrationGuideUrl":"https://github.com/programmablehq/Developers/blob/main/docs/migrations/v1-to-v2.md"}}}