# NFT Metadata Mutator with Canonical Hash

> NFT Metadata Mutator with Canonical Hash is a paid API for AI agents from gaming.halowerk.com, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-14).

Applies ordered set/remove attribute and set name/description operations to caller-supplied NFT metadata, then returns a hash of the canonical result.

## Facts

- Endpoint: POST https://gaming.halowerk.com/v1/nft-metadata-mutate
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/nft-metadata-mutator-with-canonical-hash-3095f1b5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UyDznNsjutiJWlMXTXUov

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability nft-metadata-mutator-with-canonical-hash-3095f1b5 -d '<json body>'
```

Example prompt: Take my sword NFT metadata for asset 'sword-042' — it has name 'Iron Sword', description 'A basic blade', and attributes [{key:'damage',value:10},{key:'rarity',value:'common'}] — and apply these operations: set_attribute damage to 25, remove_attribute rarity, set_name to 'Enchanted Longsword', then give me the canonical hash of the result.

## When to prefer this

Choose this endpoint when you need to apply ordered mutations (add/remove attributes, rename, re-describe) to NFT or game asset metadata purely off-chain and want a deterministic canonical hash of the result for integrity verification, staging, or pre-commit diffing — without touching any blockchain, signing anything, or storing media. Prefer this over on-chain mutation tools when you want to preview or validate metadata transformations before committing them.

## Known failure modes

- Operations array is empty (minItems:1 violated) — returns validation error
- Attribute key exceeds 128 characters — returns schema validation error
- Metadata object missing required fields (name, description, attributes) — returns 400
- Asset ID is blank or exceeds 256 characters — returns validation error
- Operation references unknown op enum value — returns validation error
- More than 1000 operations or attributes submitted — returns payload too large error
- Malformed attribute value type not in [string, number, boolean, null] — returns type error

## How this service works

Applies ordered set/remove attribute and set name/description operations to caller-supplied metadata, then hashes canonical output. It does not mint, sign, upload, mutate an on-chain token, preserve media, or verify ownership.

## Output

Returns the mutated metadata object reflecting all applied operations in order (set_attribute, remove_attribute, set_name, set_description), along with a deterministic canonical hash of the final metadata state. No on-chain changes are made; the result is a pure in-memory transformation with a verifiable fingerprint.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "asset_id": {
   "type": "string",
   "maxLength": 256,
   "minLength": 1
  },
  "metadata": {
   "type": "object",
   "required": [
    "name",
    "description",
    "attributes"
   ],
   "properties": {
    "name": {
     "type": "string",
     "maxLength": 256,
     "minLength": 1
    },
    "attributes": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "key",
       "value"
      ],
      "properties": {
       "key": {
        "type": "string",
        "maxLength": 128,
        "minLength": 1
       },
       "value": {
        "type": [
         "string",
         "number",
         "boolean",
         "null"
        ]
       }
      },
      "additionalProperties": false
     },
     "maxItems": 1000
    },
    "description": {
     "type": "string",
     "maxLength": 4096,
     "minLength": 0
    }
   },
   "additionalProperties": false
  },
  "operations": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "op"
    ],
    "properties": {
     "op": {
      "enum": [
       "set_attribute",
       "remove_attribute",
       "set_name",
       "set_description"
      ],
      "type": "string"
     },
     "key": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1
     },
     "value": {
      "type": [
       "string",
       "number",
       "boolean",
       "null"
      ]
     }
    },
    "additionalProperties": false
   },
   "maxItems": 1000,
   "minItems": 1
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/nft-metadata-mutator-with-canonical-hash-3095f1b5/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from gaming.halowerk.com](https://www.zero.xyz/host/gaming.halowerk.com/llms.txt)
