---
title: Validate & Submit
category: how-to
---

# How to validate and submit your metadata

Test your metadata file and submit it to the official registry to enable Clear Signing for your protocol.

## Process overview

1
Validate

2
Submit

3
Review

4
Deploy

## Step 1: Validate your metadata

Validate your file against the ERC-7730 schema before submitting to catch errors early.

### CLI Tool

### Install the validator

```bash
pip install erc7730
```

> **Note:** Requires Python 3.12 or higher.

### Validate your file

```bash
# Validate a single file
erc7730 lint your-metadata.json

# Validate multiple files
erc7730 lint registry/**/eip712-*.json registry/**/calldata-*.json
```

### Auto-format your file

```bash
erc7730 format your-metadata.json
```

### Node.js

Validate metadata programmatically in your Node.js application or CI pipeline.

```javascript
import Ajv from 'ajv';
import schema from '@ledgerhq/clear-signing-schemas';

const ajv = new Ajv();
const validate = ajv.compile(schema);

function validateMetadata(metadata) {
  const valid = validate(metadata);
  if (!valid) {
    console.error('Validation errors:', validate.errors);
    return false;
  }
  console.log('Metadata is valid');
  return true;
}

import metadata from './your-metadata.json';
validateMetadata(metadata);
```

> **Note:** Install dependencies with: `npm install ajv @ledgerhq/clear-signing-schemas`

## Common validation errors

Missing required fields
The file must include the context, metadata, and display sections. The $schema field at the top level is also required.

Unaccounted parameters
Every function parameter must appear in either the fields array or the excluded list. Remove the parameter from neither and the validator returns an error.

Incorrect format structure
Check that format types match the data type of the field. For example, tokenAmount requires either tokenPath or token in the params object. See the [Format types reference](../reference/specifications#format-types) for required parameters.

Incorrect chain ID
Verify that the chainId in each deployment entry matches the actual deployment. Use [ChainList](https://chainlist.org) to look up chain IDs (1 for Ethereum mainnet, 137 for Polygon, 42161 for Arbitrum).

Invalid path expression
Path expressions must start with the correct root identifier: # for calldata parameters, $ for metadata constants, or @ for transaction envelope fields. See the [Path system reference](../reference/specifications#path-system).

## Step 2: Submit to the registry

Once your file passes validation, submit it as a pull request to the registry.

### Fork the repository

Go to [github.com/LedgerHQ/clear-signing-erc7730-registry](https://github.com/LedgerHQ/clear-signing-erc7730-registry) and click **Fork**, then clone your fork:

```bash
git clone https://github.com/YOUR_USERNAME/clear-signing-erc7730-registry.git
cd clear-signing-erc7730-registry
```

### Add your metadata file

Place your file in a directory named after your dApp:

```
registry/
└── your-dapp-name/
    └── descriptive-filename.json
```

```bash
mkdir -p registry/your-dapp-name
cp /path/to/your-metadata.json registry/your-dapp-name/descriptive-name.json
```

> **Note:** Use lowercase with hyphens for directory and file names: `uniswap-v3/swap-router.json` is correct; `UniswapV3/file1.json` is not.

### Create a pull request

Commit your file and push to your fork:

```bash
git add .
git commit -m "Add Clear Signing metadata for [Your dApp Name]"
git push origin main
```

On GitHub, navigate to your fork, click **New Pull Request**, and fill in a clear description of your protocol, the contracts covered, and any notable configuration choices.

## Step 3: Review process

What reviewers check



Timeline
Reviews typically complete within 3–5 business days. Complex submissions covering multiple contracts or EIP-712 schemas may take longer.

## Step 4: After submission

### Monitor your pull request

Check for reviewer comments and address requested changes promptly. If changes are requested:

```bash
# Make your changes, then:
git add .
git commit -m "Address review feedback: [brief description]"
git push origin main
```

The pull request updates automatically.

### Handle a rejected submission

If the pull request is closed without merging, the reviewer will explain the reason. Common causes include:

- Contract addresses that do not match the claimed protocol
- Display labels that are misleading or incomplete
- Schema violations that were not caught by the local validator

Fix the identified issues and open a new pull request with the updated file.

### Verify deployment

Once your pull request is merged, your metadata becomes available in:

- &#x20;(after the next scheduled update)
- All wallets that support the Clear Signing standard
- The public registry API

Once your metadata is live, users signing transactions through your protocol will see human-readable transaction details instead of raw hex data.

## Get help

[<div className="font-semibold mb-2">GitHub Issues →</div>
<div className="text-sm text-gray-400">Report bugs in the validator or registry tooling</div>](https://github.com/LedgerHQ/clear-signing-erc7730-registry/issues)

[<div className="font-semibold mb-2">Discord Community →</div>
<div className="text-sm text-gray-400">Ask questions and get help from the developer community</div>](https://discord.ledger.com)

You are making Web3 safer

Once merged, your metadata helps users understand exactly what they are approving. Every submission contributes to a more transparent blockchain ecosystem.
