> ## Documentation Index
> Fetch the complete documentation index at: https://docs.celo.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Metadata and Claims

> Connect a Celo account with off-chain identities and URLs through signed metadata files registered on the Accounts contract

This page is for validators, group operators, and tool builders who want to attach verifiable off-chain information to a Celo account. The Celo protocol's **metadata and claims** feature makes it possible to connect on-chain with off-chain identities.

<Note>
  **Terminology**

  The term "validator" is used in the code and corresponding explanation due to historical reasons, but refers to the community RPC providers.
</Note>

## Use cases

* Tools want to present public metadata supplied by a validator or validator group as part of a list of candidate groups, or a list of current elected validators.
* Community RPC providers register their public RPC URL as a claim; see [Registering the Node URL](/contribute-to-celo/community-rpc-nodes/registering-as-rpc-node#registering-the-node-url).
* Governance Explorer UIs may want to present public metadata about the creators of governance proposals.

Furthermore, these tools may want to include user chosen information such as names or profile pictures that would be expensive to store on-chain. For this purpose, the Celo protocol supports **metadata** that allows accounts to make both verifiable as well as non-verifiable claims. The design is described in [CIP3](https://github.com/celo-org/CIPs/pull/4).

On the `Accounts` smart contract, any account can register a URL under which their metadata file is available. The metadata file contains an unordered list of claims, signed by the account.

## Types of claim

The following types of claim are supported:

* **Name Claim** - An account can claim a human-readable name. This claim is not verifiable.

* **Keybase User Claim** - Accounts can make claims on [Keybase](https://keybase.io) usernames. This claim is verifiable by signing a message with the account and hosting it on the publicly accessible path of the Keybase file system.

* **Domain Claim** - Accounts can make claims on domain names. This claim is verifiable by signing a message with the account and embedding it in a [TXT record](https://wikipedia.org/wiki/TXT_record).

* **RPC URL Claim** - Community RPC providers claim the public HTTPS URL their node serves. See [Registering a community RPC provider](/contribute-to-celo/community-rpc-nodes/registering-as-rpc-node#registering-the-node-url).

## Handling metadata

You can interact with metadata files through the [CLI](/tooling/libraries-sdks/cli/account). Most commands require an RPC node to make view calls, and to modify metadata files, you'll need the relevant account to be unlocked to sign the files.

You can create an empty metadata file with:

```bash theme={null}
celocli account:create-metadata ./metadata.json --from $ACCOUNT_ADDRESS
```

You can display the claims in your file and their status with:

```bash theme={null}
celocli account:show-metadata ./metadata.json
```

Once you are satisfied with your claims, you can upload your file to your own web site or a site that will host the file (for example, [https://gist.github.com](https://gist.github.com)) and then register it with the `Accounts` smart contract by running:

```bash theme={null}
celocli account:register-metadata --url $METADATA_URL --from $ACCOUNT_ADDRESS
```

Then, anyone can lookup your claims and verify them by running:

```bash theme={null}
celocli account:get-metadata $ACCOUNT_ADDRESS
```

## Related

* [Registering a community RPC provider](/contribute-to-celo/community-rpc-nodes/registering-as-rpc-node) - the RPC URL claim in the registration flow
* [Validator groups](/home/protocol/staking/validator-groups) - why groups publish identity claims
* [celocli account commands](/tooling/libraries-sdks/cli/account) - the full command reference
