Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

All metadata URIs stored on-chain (metadataUri, versionMetadataHash) must point to Arweave-hosted JSON conforming to this schema.

Project Metadata

On-chain field: InkdRegistryV2.projectMetadataUri
Format: ar://<txid> or https://arweave.net/<txid>

{
  "$schema": "https://inkdprotocol.com/schemas/project-metadata/v1.json",
  "name": "my-project",
  "description": "A short description (max 1024 chars)",
  "version": "1.0.0",
  "license": "MIT",
  "homepage": "https://example.com",
  "repository": "https://github.com/owner/repo",
  "tags": ["ai", "agent", "base"],
  "readme": "ar://<arweave-txid>",
  "logo": "ar://<arweave-txid>",
  "links": {
    "docs": "https://docs.example.com",
    "twitter": "https://twitter.com/example",
    "discord": "https://discord.gg/example"
  },
  "createdAt": "2026-03-07T00:00:00Z",
  "updatedAt": "2026-03-07T00:00:00Z"
}

Required Fields

FieldTypeMax LengthDescription
namestring64Project name — must match on-chain name (lowercase)
descriptionstring1024Short description
versionstring32Current version tag (semver recommended)
licensestring64SPDX identifier (e.g. MIT, Apache-2.0)

Optional Fields

FieldTypeDescription
homepageURLProject website
repositoryURLSource code repository
tagsstring[]Max 10 tags, each max 32 chars
readmear://Full README on Arweave
logoar://Square PNG/SVG, recommended 256×256
linksobjectMap of external links

Version Metadata

On-chain field: InkdRegistryV2.versionMetaHash
Format: ar://<txid>

{
  "$schema": "https://inkdprotocol.com/schemas/version-metadata/v1.json",
  "projectId": 6,
  "versionIndex": 0,
  "versionTag": "v1.0.0",
  "changelog": "Initial release",
  "arweaveHash": "ar://<txid>",
  "pushedBy": "0x210bDf52ad7afE3Ea7C67323eDcCD699598983C0",
  "pushedAt": "2026-03-07T00:00:00Z",
  "agentWallet": "0xAgentWalletAddress",
  "dependencies": [
    { "name": "other-project", "projectId": 1, "versionTag": "v0.9.0" }
  ],
  "runtime": {
    "type": "nodejs",
    "version": ">=18"
  }
}

Required Fields

FieldTypeDescription
projectIdnumberOn-chain project ID
versionIndexnumberOn-chain version index (0-based)
versionTagstringVersion tag (e.g. v1.0.0)
arweaveHashar://Arweave URI of the code payload

Optional Fields

FieldTypeDescription
changelogstringWhat changed in this version
agentWalletaddressActual agent wallet identity (not the server wallet)
dependenciesarrayOther Inkd projects this depends on
runtimeobjectExecution environment requirements

Access Manifest

On-chain field: InkdRegistryV2.projectAccessManifest
Format: ar://<txid>

Used to grant multi-wallet access to credentials stored in AgentVault.

{
  "$schema": "https://inkdprotocol.com/schemas/access-manifest/v1.json",
  "projectId": 6,
  "vaultEntries": [
    {
      "walletAddress": "0xAgentWallet1",
      "encryptedKeyRef": "ar://<txid>",
      "grantedAt": "2026-03-07T00:00:00Z",
      "grantedBy": "0xOwnerWallet"
    }
  ],
  "updatedAt": "2026-03-07T00:00:00Z"
}

URI Format

All Arweave references use the ar:// prefix:

ar://<43-char-base64url-txid>

Example: ar://baME8wjzVjRfx7SfhaMHp8vgSwOqLpHJUZl1m9bHKPY

The Inkd API resolves these via https://arweave.net/<txid>.


Validation

The Inkd API validates metadataUri content on upload (POST /v1/upload). Invalid schemas return 400 Bad Request with field-level errors.

JSON Schema definitions are published at:

  • https://inkdprotocol.com/schemas/project-metadata/v1.json
  • https://inkdprotocol.com/schemas/version-metadata/v1.json
  • https://inkdprotocol.com/schemas/access-manifest/v1.json