# FckSignups Tool Submission Requirements: How to Add a New Tool to the Directory

> Learn the FckSignups tool submission requirements. Add your no registration tool by providing name, description, URL, and category to get listed.

- Repository: [Abdullah/FckSignups](https://github.com/BraveOPotato/FckSignups)
- Tags: how-to-guide
- Published: 2026-09-08

---

**Submitting a new tool to the FckSignups (NoSignups) directory requires providing mandatory schema fields including name, description, URL, and category, while ensuring the tool functions without user registration.**

The FckSignups platform maintains strict requirements for submitting a new tool to ensure every entry in the directory remains open-source, privacy-respecting, and immediately accessible without sign-ups. Whether you contribute through the GitHub issue template or the website's submission form, your tool must conform to the validation logic enforced by the Cloudflare worker at [`cloudflare-worker/urlHandlers/handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/cloudflare-worker/urlHandlers/handleSubmitTool.ts).

## Tool Schema Requirements

Every submission must conform to the JSON schema documented in the repository's [`README.md`](https://github.com/BraveOPotato/FckSignups/blob/main/README.md). The system distinguishes between mandatory properties required for all entries and optional metadata that enhances discoverability.

### Mandatory Fields

The `handleSubmitTool` function strictly validates the presence of these required fields:

- **`id`** – A URL-friendly unique identifier automatically generated from the tool name
- **`name`** – The display name of the tool (maximum 100 characters after trimming)
- **`description`** – A concise one-sentence summary (maximum 500 characters after trimming)
- **`url`** – A direct link to the live tool, validated for proper URL syntax
- **`category`** – One of the predefined category IDs defined in the README

### Optional Fields

Submissions may include additional metadata to provide context:

- **`tags`** – Array of trimmed strings for filtering (recommend 3–5 relevant tags)
- **`github`** – Link to source repository, validated as a proper URL
- **`license`** – Open-source license identifier
- **`stars`** – GitHub star count
- **`featured`** – Boolean flag for editorial highlighting
- **`notRecommendedReason`** – Explanation if the tool has caveats

## Server-Side Validation Logic

When you submit via the "Submit a Tool" web form, the Cloudflare worker processes the request through the `handleSubmitTool` handler. According to the source code in [`cloudflare-worker/urlHandlers/handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/cloudflare-worker/urlHandlers/handleSubmitTool.ts) (lines 80–125), the server enforces several critical constraints:

1. **Presence checks** – All mandatory fields must contain non-empty string values
2. **URL validation** – Both the `url` field and optional `github` field must conform to valid URL syntax
3. **Length constraints** – The `name` field is capped at 100 characters and `description` at 500 characters, with automatic trimming applied
4. **Tag normalization** – The `tags` field is converted into an array of trimmed strings

If validation fails, the worker returns a 400 error with a descriptive message indicating which requirement was violated.

## Category Requirements

Submissions must specify a category that matches one of the predefined IDs listed in the README. The valid categories are:

- `productivity`
- `design`
- `development`
- `writing`
- `privacy`
- `utilities`
- `data`
- `media`
- `education`

The special category `all` exists for filtering purposes but is not a valid submission category.

## Submission Methods

The repository accepts new tool submissions through two primary channels, both subject to the same validation rules.

### GitHub Issue Template

Open a new issue using the **Request to Add a Tool** template located at [`.github/ISSUE_TEMPLATE/request-to-add-a-tool.md`](https://github.com/BraveOPotato/FckSignups/blob/main/.github/ISSUE_TEMPLATE/request-to-add-a-tool.md). This template automatically applies the `tool-submission` label and guides you through entering the required fields in a structured markdown table.

The template generates an issue body formatted as:

```markdown
| Field | Value |
|-------|-------|
| **Name** | [Tool Name] |
| **Description** | [One-sentence description] |
| **URL** | [Live URL] |
| **Category** | [Selected category] |

```

### Web Form Submission

Click the "SUBMIT A TOOL" button on the live site to access the form interface. The payload sent to the server follows this JSON structure:

```json
{
  "name": "SuperCalc",
  "description": "A fast, offline calculator that runs in the browser.",
  "url": "https://supercalc.example.com",
  "tags": ["calculator", "offline", "utility"],
  "github": "https://github.com/example/supercalc",
  "category": "utilities"
}

```

Upon successful validation, `handleSubmitTool` automatically generates a corresponding GitHub issue with the tool details formatted in markdown.

## Contribution Guidelines and Constraints

Beyond the technical schema requirements, the project maintains editorial standards documented in the [`README.md`](https://github.com/BraveOPotato/FckSignups/blob/main/README.md) Contributing section:

- **No registration requirement** – The tool must be fully functional without requiring user registration, email verification, or payment details
- **Description brevity** – While the server accepts up to 500 characters, contributions should aim for descriptions under 140 characters for optimal display
- **Browser accessibility** – Tools should work directly in the browser without mandatory downloads
- **Source availability** – Including a `github` link is strongly encouraged for open-source tools

## Summary

- The mandatory fields for submitting a new tool are `id`, `name`, `description`, `url`, and `category`, defined in the README schema
- Server-side validation in [`handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/handleSubmitTool.ts) enforces length limits (100 chars for name, 500 for description) and URL syntax checking
- Valid categories include productivity, design, development, writing, privacy, utilities, data, media, and education
- Submissions can be made via the GitHub issue template at [`.github/ISSUE_TEMPLATE/request-to-add-a-tool.md`](https://github.com/BraveOPotato/FckSignups/blob/main/.github/ISSUE_TEMPLATE/request-to-add-a-tool.md) or the website's submission form
- All tools must function without requiring user sign-up or registration

## Frequently Asked Questions

### What are the mandatory fields for submitting a new tool?

The required fields are `id` (URL-friendly identifier), `name` (display name), `description` (one-sentence summary), `url` (live tool link), and `category` (predefined category ID). These fields are strictly enforced by the validation logic in [`cloudflare-worker/urlHandlers/handleSubmitTool.ts`](https://github.com/BraveOPotato/FckSignups/blob/main/cloudflare-worker/urlHandlers/handleSubmitTool.ts), which returns a 400 error if any are missing or invalid.

### How does the server validate tool submissions?

The Cloudflare worker's `handleSubmitTool` function validates that all mandatory fields contain non-empty strings, checks that URL fields contain valid syntax, trims and enforces length caps on text fields (100 characters for names, 500 for descriptions), and normalizes tags into an array format. This occurs server-side regardless of whether you submit via the web form or GitHub issue template.

### Can I submit a tool that requires user registration?

No. According to the contribution guidelines in the README, tools must be fully functional without requiring user registration, email verification, or account creation. The directory specifically focuses on no-signup alternatives, so any tool requiring authentication would violate the core project requirements.

### What categories are available for tool submissions?

The valid category IDs are: `productivity`, `design`, `development`, `writing`, `privacy`, `utilities`, `data`, `media`, and `education`. Each submission must specify one of these predefined categories as documented in the README Categories section. The `all` category exists for filtering but is not a valid submission value.