Schema for a Tool Entry in tools.json: Complete Field Reference

A tool entry in tools.json follows a consistent JSON schema with ten standardized fields—id, name, description, url, category, tags, github, license, stars, addedAt, and section—enabling reliable rendering and filtering across the BraveOPotato/FckSignups knowledge base.

The tools.json file in the BraveOPotato/FckSignups repository serves as the single source of truth for all open-source web tools listed on the site. Each entry follows an implicit schema observed consistently throughout the file, allowing the front-end to render tool cards, filter by category or tags, and sort by popularity without requiring a separate TypeScript interface.

Required Fields in the tools.json Schema

Every tool entry must include eight core properties that define its identity and placement.

id (string)

The unique identifier serves as the URL-friendly slug for the tool. This value appears in internal references and direct links to the tool’s detail page.

name (string)

The human-readable display name appears on tool cards and navigation elements. Use title case without abbreviations for clarity.

description (string)

A concise summary of the tool’s functionality displayed on the site. Keep descriptions under 150 characters for optimal card layout rendering.

url (string)

The direct link to the live web application. This must be a valid HTTPS URL where users can immediately access the tool.

category (string)

References a predefined category at the top of tools.json such as productivity, design, or development. The category determines which browse page lists the tool.

tags (array[string])

An array of free-form keywords that enhance searchability and filtering. Include 3-5 relevant terms describing the tool’s technology or use case.

addedAt (string, ISO-8601 date)

The timestamp indicating when the entry was added or last refreshed, formatted as YYYY-MM-DD. This field tracks content freshness across the repository.

section (string, enum)

Controls homepage placement with three valid values:

  • featured — Highlighted in the main hero section
  • meets-criteria — Listed in the standard grid
  • editors-pick — Curated selections by maintainers

Optional Fields in the tools.json Schema

Three additional fields provide metadata for open-source projects but remain optional for proprietary tools.

github (string)

The source repository URL (e.g., https://github.com/excalidraw/excalidraw). This enables linking to codebases and automated star count fetching.

license (string)

The SPDX license identifier (e.g., MIT, Apache-2.0, GPL-3.0). This helps users quickly identify usage rights for the tool.

stars (number)

The GitHub star count representing community popularity. The front-end uses this value for sorting and highlighting trending tools.

Complete Schema Example from Source Code

According to the BraveOPotato/FckSignups source code, the first entry in tools.json (lines 65-82) demonstrates the complete schema implementation:

{
  "id": "excalidraw",
  "name": "Excalidraw",
  "description": "Virtual whiteboard for sketching hand-drawn like diagrams",
  "url": "https://excalidraw.com",
  "category": "design",
  "tags": [
    "whiteboard",
    "diagrams",
    "sketch",
    "collaboration"
  ],
  "github": "https://github.com/excalidraw/excalidraw",
  "license": "MIT",
  "stars": 131341,
  "addedAt": "2026-05-07",
  "section": "featured"
}

How to Add a New Tool Entry

When contributing a new tool to the repository, follow the established schema pattern. This example adds a hypothetical project management tool:

{
  "id": "taskboard",
  "name": "TaskBoard",
  "description": "Simple kanban board for personal task management",
  "url": "https://taskboard.example.com",
  "category": "productivity",
  "tags": ["kanban", "tasks", "todo"],
  "github": "https://github.com/example/taskboard",
  "license": "Apache-2.0",
  "stars": 452,
  "addedAt": "2026-09-08",
  "section": "meets-criteria"
}

The id must remain unique across all entries in tools.json. Validate that your category value matches an existing category defined earlier in the file to ensure proper filtering functionality.

Summary

  • The tools.json schema defines ten standardized fields that balance required metadata with optional open-source attributes.
  • Required fields include id, name, description, url, category, tags, addedAt, and section for basic functionality.
  • Optional fields github, license, and stars provide additional context for repository-backed projects.
  • The schema is implicitly defined by the JSON data structure in tools.json, with no separate TypeScript interface required for validation.
  • Front-end components rely on consistent field presence to render tool cards, filter views, and sort by popularity metrics.

Frequently Asked Questions

What is the required format for the id field in tools.json?

The id field accepts lowercase alphanumeric strings with hyphens as separators. This URL-friendly identifier becomes part of the tool’s permalink structure, so spaces and special characters will break routing functionality.

Is the stars field mandatory for every tool entry?

No, stars remains optional. While GitHub-hosted projects typically include this metric, proprietary web applications without public repositories can omit this field entirely without breaking the schema.

What values are accepted for the section field?

The section field accepts exactly three enumerated strings: featured for homepage highlights, meets-criteria for standard listings, and editors-pick for curated selections. Using any other value will cause the entry to disappear from filtered views.

Does BraveOPotato/FckSignups validate the JSON schema automatically?

The repository relies on implicit schema consistency rather than automated validation. Contributors should manually verify that new entries match existing patterns in tools.json, particularly ensuring that category values reference valid groups and addedAt follows ISO-8601 date formatting.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →