---
title: Claim Your Library
description: Verify ownership and manage your library's configuration via the admin panel
---

As a library owner, you can claim your library on Context7 to unlock advanced configuration options through a web-based admin panel. This gives you full control over how your documentation is parsed and presented to developers.

<Note>Library claiming is available for Git repositories, websites, and llms.txt sources.</Note>

## Why Claim Your Library?

Claiming ownership provides several benefits:

- **Web-based configuration**: Edit settings through a user-friendly interface instead of committing changes
- **Teamspace management**: All project members can manage the library configuration
- **Version management**: Add and manage multiple versions of your library documentation
- **Usage analytics**: View metrics on how developers use your library's documentation
- **Higher refresh limits**: Get higher rate limits for refresh operations to better manage your content
- **Apply for verification**: Only owners can apply for the verified badge. [Learn more about verification](/howto/verification)

## Claiming Process

<Steps>
  <Step title="Navigate to the Admin Page">
    You can access the admin page in two ways:

    **From the Dashboard:**
    Find your library in the dashboard and click the "Manage" button to open the admin configuration page.

    <Frame>
      <img src="/images/dashboard/admin/library-manage-button.png" alt="Manage button on library card" />
    </Frame>

    **Via Direct URL:**
    Go directly to your library's admin page at:

    ```
    https://context7.com/{owner}/{repo}/admin
    ```

    For example: `https://context7.com/vercel/next.js/admin`

  </Step>

  <Step title="Open the Claim Modal">
    If you haven't claimed the library yet, you'll see a "Claim Library" button in the header. Click it to open the claiming modal.

    <Frame>
      <img src="/images/dashboard/admin/claim-library-button.png" alt="Claim Library button" />
    </Frame>

  </Step>

  <Step title="Get Your Public Key">
    In the claiming modal, you'll see a generated `context7.json` configuration with your unique public key:

    <Frame>
      <img src="/images/dashboard/admin/claim-modal.png" alt="Claim library modal" />
    </Frame>

    The modal provides a JSON snippet like this:

    ```json
    {
      "url": "https://context7.com/vercel/next.js",
      "public_key": "pk_abc123xyz..."
    }
    ```

    Click "Copy" to copy the configuration to your clipboard.

  </Step>

  <Step title="Host the context7.json File">
    <Tabs>
      <Tab title="Git Repository">
        Create a `context7.json` file in the **root** of your repository with the copied content:

        ```json
        {
          "url": "https://context7.com/vercel/next.js",
          "public_key": "pk_abc123xyz..."
        }
        ```

        <Warning>
          The `url` must exactly match your library's URL on Context7, and the `public_key` must match the key shown in the modal.
        </Warning>

        Commit and push the file to your repository's default branch.
      </Tab>
      <Tab title="Website / llms.txt">
        Host the `context7.json` file anywhere under your library's base URL so it is publicly reachable. For example:

        ```
        https://docs.example.com/mylib/context7.json
        ```

        The file must contain the copied content:

        ```json
        {
          "url": "https://context7.com/websites/mylib",
          "public_key": "pk_abc123xyz..."
        }
        ```

        <Warning>
          The `url` must exactly match your library's URL on Context7, and the `public_key` must match the key shown in the modal.
        </Warning>

        Once the file is live, paste the full URL to your hosted `context7.json` into the input field shown in the modal.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Verify Ownership">
    Click "Claim Library". Context7 will fetch your `context7.json`, verify the URL and public key, and grant you access to the admin panel.
  </Step>
</Steps>

## Admin Panel Overview

After claiming your library, the admin page shows a full configuration editor with five main tabs:

- **Configuration**: Edit all library settings
- **Chat**: Embed an AI chat assistant on your documentation site
- **Benchmark**: Evaluation of the quality of your library's documentation
- **Metrics**: View usage statistics
- **Versions**: Manage different versions and tags of your library

## Configuration Fields

### Basic Information

These fields are available for all library types.

| Field             | Description                                                                                               | Limits             |
| ----------------- | --------------------------------------------------------------------------------------------------------- | ------------------ |
| **Project Title** | Display name for your library in Context7. Used when the LLM cannot generate a name with high confidence. | Max 100 characters |
| **Description**   | Brief description of your library's purpose.                                                              | Max 500 characters |

### Source Settings

<Tabs>
  <Tab title="Git Repository">
    | Field                  | Description                                                                               | Limits                          |
    | ---------------------- | ----------------------------------------------------------------------------------------- | ------------------------------- |
    | **Branch**             | Git branch to parse. Leave empty for default branch.                                      | Max 100 characters              |
    | **Folders to Include** | Specific folder paths to include when parsing. Leave empty to scan the entire repository. | Max 50 folders, 255 chars each  |
    | **Folders to Exclude** | Folder paths or patterns to exclude from parsing. Supports glob patterns.                 | Max 50 patterns, 255 chars each |
    | **Files to Exclude**   | Specific file names to exclude (filename only, not full path).                            | Max 100 files, 255 chars each   |

    #### Exclusion Pattern Examples

    The exclusion fields support various pattern types:

    ```
    node_modules     → Excludes any folder named "node_modules" anywhere
    ./build          → Excludes "build" only at repository root
    **/dist          → Excludes any "dist" folder anywhere (globstar)
    docs/**/internal → Excludes "internal" folders under docs
    *.test           → Excludes folders ending with .test
    ```

    <Note>
      `excludeFiles` only accepts filenames, not paths. Use `CHANGELOG.md` instead of
      `docs/CHANGELOG.md`.
    </Note>
  </Tab>
  <Tab title="Website">
    | Field                        | Description                                                                                      | Limits                          |
    | ---------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------- |
    | **Base URL**                 | The root URL to crawl for documentation.                                                         | Max 100 characters              |
    | **Display URL**              | Optional URL shown to users instead of the base URL.                                             | Max 500 characters              |
    | **Keep Hash (URL Fragments)**| Whether to treat URLs with different hash fragments as distinct pages. Disabled by default.      | Boolean                         |
    | **Keep Query Parameters**    | Whether to treat URLs with different query strings as distinct pages. Enabled by default.        | Boolean                         |
    | **Exclude URLs**             | URL patterns to exclude from crawling. Supports wildcards.                                       | Max 100 patterns                |
  </Tab>
</Tabs>

### AI Instructions

| Field            | Description                                                                     | Limits                       |
| ---------------- | ------------------------------------------------------------------------------- | ---------------------------- |
| **Custom Rules** | Best practices and guidelines for AI coding assistants when using your library. | Max 50 rules, 255 chars each |

Example rules:

- "Always use TypeScript for better type safety"
- "Import components from the main package, not internal paths"
- "Use environment variables for API keys, never hardcode them"

### Advanced Settings

Available for Git repositories and websites.

| Field                                | Description                                                                                                                                    | Limits  |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| **Skip Automatic Version Detection** | By default, outdated library versions are automatically detected and excluded from indexing. Enable to include all versions regardless of age. | Boolean |
| **Redirect URL**      | Redirect users to a different library. Leave empty to disable.                                              | Max 500 characters |
| **Disallow Indexing** | Opt-out from Context7. When enabled, documentation content is removed and the library becomes inaccessible. | Boolean            |

## Managing Versions

The Versions tab lets you configure previous versions of your library that should be available in Context7.

<Frame>
  <img src="/images/dashboard/admin/managing-versions.png" alt="Versions tab" />
</Frame>

You can add versions using either:

- **Git tags**: Reference a specific release tag (e.g., `v1.2.0`)
- **Git branches**: Reference a branch for version-specific documentation (e.g., `release-1.x`)

| Limit            | Value             |
| ---------------- | ----------------- |
| Maximum versions | 20                |
| Tag/branch name  | Max 50 characters |

## Library Metrics

The Metrics tab provides insights into how developers are using your library through Context7.

<Frame>
  <img src="/images/dashboard/admin/library-metrics.png" alt="Metrics tab" />
</Frame>

### Usage Statistics

At the top of the metrics page, you'll see key usage numbers:

| Metric                 | Description                                                           |
| ---------------------- | --------------------------------------------------------------------- |
| **Page Views**         | Number of times your library page was viewed on Context7              |
| **API Requests (TXT)** | Documentation requests via the REST API                               |
| **MCP Requests**       | Documentation requests via the MCP server (from AI coding assistants) |

The metrics page also includes a usage chart showing trends over time, topic queries showing what developers ask about, and country distribution of requests.

<Note>All team members can view library settings; owners and admins can edit them. See [Teamspace Management](/howto/teamspace) for role details.</Note>

## Removing Ownership

<Steps>
  <Step title="Go to the Admin Page">
    Navigate to your library's admin page at `https://context7.com/{owner}/{repo}/admin`.
  </Step>
  <Step title="Open the Ownership Menu">Click the ownership menu in the header area.</Step>
  <Step title="Remove Ownership">Select "Remove Ownership" and confirm the action.</Step>
</Steps>

<Warning>
  Removing ownership keeps the admin configuration intact. Another user can claim the library and
  inherit the existing settings.
</Warning>

## Troubleshooting

### "context7.json not found"

Ensure the file is:

- Named exactly `context7.json` (lowercase)
- Located in the repository root, not a subdirectory
- Committed and pushed to the default branch

### "URL mismatch"

The `url` field in your `context7.json` must exactly match:

```
https://context7.com/{owner}/{repo}
```

Check for typos, case sensitivity, and trailing slashes.

### "Public key mismatch"

The `public_key` in your file must match the key shown in the claiming modal. Copy the entire key including the `pk_` prefix.

### Changes not appearing

After saving configuration changes, you may need to:

- Manually trigger a refresh from the library page
- Clear any cached documentation on your end

