# Hats Protocol, for Developers

Put on your hardhats and lets get into the nitty gritty of Hats Protocol!

## What are Hats?

**Hats are roles**. In Hats Protocol, roles are rich, substantive, objectives with multiple dimensions:

* Responsibility
* Authorities/Rights/Powers
* Accountability
* Clarity & context
* Compensation & incentives

These roles, modeled as hats, are embodied onchain in Hats.sol storage, and represented as non-transferable [ERC1155-similar](/for-developers/hats-protocol-for-developers/erc1155-compatibility.md) tokens.

Every hat is connected to at least one other hat in a structure that we call a [Hats tree](/for-developers/hats-protocol-for-developers/hats-trees.md).

The bulk of the protocol logic is devoted to defining how hats are created, issued, revoked, and managed. It also creates several integration points and hooks for developers to extend and customize the behavior of particular hats.

## Hats Protocol Functionality

See each of the following subpages for more details:

{% content-ref url="/pages/2WCJQLZVHDP9cgmeWBUs" %}
[Hat Properties](/for-developers/hats-protocol-for-developers/hat-properties.md)
{% endcontent-ref %}

{% content-ref url="/pages/w3xXWC0H8LFxFTZSx5rp" %}
[Wearing a Hat](/for-developers/hats-protocol-for-developers/wearing-a-hat.md)
{% endcontent-ref %}

{% content-ref url="/pages/ccHiZ6h0hOJgpSVeyo7f" %}
[Hat Admins & Hatter Contracts](/for-developers/hats-protocol-for-developers/hat-admins-and-hatter-contracts.md)
{% endcontent-ref %}

{% content-ref url="/pages/fFujMiQlPwW0M4HOsQ3m" %}
[Hats Trees](/for-developers/hats-protocol-for-developers/hats-trees.md)
{% endcontent-ref %}

{% content-ref url="/pages/EJVhmtVk9whKcZyoFRF4" %}
[Hat IDs](/for-developers/hats-protocol-for-developers/hat-ids.md)
{% endcontent-ref %}

{% content-ref url="/pages/pxs7PdiUrJO2UgKvswqw" %}
[Eligibility Modules](/for-developers/hats-protocol-for-developers/eligibility-modules.md)
{% endcontent-ref %}

{% content-ref url="/pages/EBwW0A90enHyonJOY6k6" %}
[Toggle Modules](/for-developers/hats-protocol-for-developers/toggle-modules.md)
{% endcontent-ref %}

{% content-ref url="/pages/EBwW0A90enHyonJOY6k6" %}
[Toggle Modules](/for-developers/hats-protocol-for-developers/toggle-modules.md)
{% endcontent-ref %}

{% content-ref url="/pages/YLnHOyCh9uHLjks7sVBj" %}
[Hat Mutability and Editing](/for-developers/hats-protocol-for-developers/hat-mutability-and-editing.md)
{% endcontent-ref %}

{% content-ref url="/pages/IHYdcUIsXdQsrIWNEwV1" %}
[Creating Hats](/for-developers/hats-protocol-for-developers/creating-hats.md)
{% endcontent-ref %}

{% content-ref url="/pages/rxZTr2oXF9FRMyaj74Dv" %}
[Minting Hats](/for-developers/hats-protocol-for-developers/minting-hats.md)
{% endcontent-ref %}

{% content-ref url="/pages/AALDcOcQfZsbjFfB6HR7" %}
[Transfering Hats](/for-developers/hats-protocol-for-developers/transfering-hats.md)
{% endcontent-ref %}

{% content-ref url="/pages/CeQtxX8x7QmCGScaVk4a" %}
[Renouncing Hats](/for-developers/hats-protocol-for-developers/renouncing-hats.md)
{% endcontent-ref %}

{% content-ref url="/pages/YjdGZZfos2tWpJbMzgKE" %}
[Linking Hats Trees](/for-developers/hats-protocol-for-developers/linking-hats-trees.md)
{% endcontent-ref %}

{% content-ref url="/pages/VTq9hdziUJCRt1YoLFfM" %}
[Batch Actions](/for-developers/hats-protocol-for-developers/batch-actions.md)
{% endcontent-ref %}

{% content-ref url="/pages/xTm5ymhsn2GlWDHJcLy5" %}
[Hat Image URIs](/for-developers/hats-protocol-for-developers/hat-image-uris.md)
{% endcontent-ref %}

{% content-ref url="/pages/bNYmY7eKfF84QWDWyeJS" %}
[ERC1155 Compatibility](/for-developers/hats-protocol-for-developers/erc1155-compatibility.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hatsprotocol.xyz/for-developers/hats-protocol-for-developers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
