How to create metadata with the JSON Builder
Generate Clear Signing metadata for your smart contracts in under 10 minutes using the ERC-7730 JSON Builder.
Prerequisites
Before you start, have the following ready:
- Your smart contract address on a supported EVM chain
- Your contract’s ABI (available on Etherscan or from your deployment artifacts)
- Your dApp name and public URL
The JSON Builder works best for single-contract deployments with standard function signatures. If your contract uses EIP-712 messages, nested tuples, proxy patterns, or custom encoding, use the Manual Implementation guide instead.
Create your metadata file
Open the JSON Builder
Go to the ERC-7730 JSON Builder.

The JSON Builder fetches your ABI automatically when you enter a verified contract address
Enter your contract details
Paste your checksummed contract address into the Contract address field and select the chain it is deployed on. The tool fetches your ABI automatically from Etherscan.
If automatic ABI fetching fails—for example because the contract is not verified—paste your ABI JSON directly into the ABI field. You can copy it from your deployment artifacts, Hardhat build output, or your block explorer.
Add your dApp information
Enter your dApp name (shown to users during signing) and your dApp URL. These values populate the owner and info.url fields in the generated metadata.
Select the functions to describe
The tool lists every public and external function from your ABI. Select the functions users will call directly when interacting with your dApp—for example transfer, swap, or approve. You do not need to include internal, pure, or owner-only functions that users will never sign.
Configure the display for each function
For each selected function, define the following:
- Intent – a short verb phrase shown to the user on their signer (for example, “Send” or “Swap tokens”)
- Field labels – human-readable names for each parameter (for example, rename
_toto “Recipient”) - Field formats – how each value is displayed (for example,
tokenAmountfor ERC-20 values,addressOrNamefor Ethereum addresses,datefor timestamps)
To choose the right format for each field, refer to the Format types reference.
Every parameter in the function signature must either be assigned a display format or explicitly excluded. The validator will reject the file if any parameter is left unaccounted for.
Preview the result
Click Preview to see how your metadata will appear on a Ledger signer. Verify that each field shows the correct label and value. If a field displays raw hex data instead of a readable value, check that the format and its required parameters are correctly configured.
Export the JSON file
Click Export to download your metadata file. The file is now ready for validation and submission to the registry.
What the exported file looks like
The JSON Builder produces a file in the ERC-7730 format. Here is an example for an ERC-20 transfer function:
{
"$schema": "https://eips.ethereum.org/assets/eip-7730/erc7730-v1.schema.json",
"context": {
"contract": {
"abi": "https://api.etherscan.io/api?module=contract&action=getabi&address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"deployments": [
{ "chainId": 1, "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }
]
}
},
"metadata": {
"owner": "Circle",
"info": { "url": "https://www.circle.com/" }
},
"display": {
"formats": {
"transfer(address,uint256)": {
"intent": "Send",
"fields": [
{ "path": "_to", "label": "Recipient", "format": "addressOrName" },
{
"path": "_value",
"label": "Amount",
"format": "tokenAmount",
"params": { "tokenPath": "@.to" }
}
],
"required": ["_to", "_value"],
"excluded": []
}
}
}
}Troubleshooting
ABI fetch fails or returns an empty result
This happens when the contract is not verified on Etherscan, or when the contract is deployed on a chain where automatic ABI fetching is not supported.
- • Verify the contract on Etherscan if it is not already verified
- • Paste your ABI JSON directly into the ABI field
- • Confirm you selected the correct chain
A function does not appear in the function list
The tool lists only external and public functions. Internal, private, and view functions are not shown.
- • Confirm the function visibility in your contract source
- • If the function uses a non-standard signature, nested tuples, or calldata slicing, use manual implementation instead
The preview shows raw values instead of formatted labels
A field format may be missing a required parameter. For example, tokenAmount requires either tokenPath or a direct token address.
- • Review the format configuration for each field
- • Check the Format types reference for required parameters per format
Your metadata file is ready. The next step is to validate it and submit it to the registry.
Next steps
To help improve the JSON Builder, fill in the feedback form.