FckSignups API Endpoints: Complete Reference for the Cloudflare Worker API

FckSignups exposes three HTTP POST endpoints (/submit-tool, /report-tool, /suggest-tool) through a Cloudflare Worker that creates GitHub issues for tool submissions, reports, and suggestions.

The FckSignups API is a lightweight serverless interface designed to crowdsource tool discovery without requiring user accounts. Built as a Cloudflare Worker in the BraveOPotato/FckSignups repository, the API accepts JSON payloads from the frontend and automates GitHub issue creation for community moderation.

Core API Endpoints

All endpoints share the same base URL (your deployed Worker address) and follow identical patterns: POST requests with JSON bodies, JSON responses, and built-in CORS support.

/submit-tool — Submit a New Tool

The primary endpoint for adding tools to the FckSignups directory. In cloudflare-worker/worker.ts, this route delegates to handleSubmitTool.ts, which formats the payload into a GitHub issue.

fetch('https://<your-worker-url>/submit-tool', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'SuperTool',
    description: 'Makes life easier',
    url: 'https://example.com/supertool',
    category: 'Productivity'
  })
})
  .then(r => r.json())
  .then(console.log)
  .catch(console.error);

Expected payload fields: name, description, url, category.

/report-tool — Report an Existing Tool

Flags problematic tools for review. The handler in handleReportTool.ts creates a structured issue containing the tool identifier and user-supplied details.

fetch('https://<your-worker-url>/report-tool', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    toolId: '12345',
    reason: 'Broken link',
    details: 'The download URL returns 404.'
  })
})
  .then(r => r.json())
  .then(console.log)
  .catch(console.error);

Key fields: toolId (reference to existing tool), reason (categorized issue), details (free-form explanation).

/suggest-tool — Suggest an Unlisted Tool

For community members who want to propose tools not yet in the submission queue. Routed through handleSuggestTool.ts with issue formatting tailored to suggestions.

fetch('https://<your-worker-url>/suggest-tool', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'NewTool',
    description: 'A tool we think the community would love',
    url: 'https://newtool.example.com',
    category: 'Utilities'
  })
})
  .then(r => r.json())
  .then(console.log)
  .catch(console.error);

Request Handling and Routing Architecture

The entry point at cloudflare-worker/worker.ts implements a simple router with path matching:

  1. CORS preflight: Responds to OPTIONS requests with appropriate headers (defined in utils.ts).
  2. Method verification: Rejects non-POST requests with 405 status.
  3. Path dispatch: Routes to the corresponding handler module based on request.url.

Each handler module (handleSubmitTool.ts, handleReportTool.ts, handleSuggestTool.ts) contains the GitHub API integration logic and issue formatting rules specific to its endpoint type.

Shared Infrastructure

File Purpose
cloudflare-worker/utils.ts JSON response helpers and CORS header generation
cloudflare-worker/worker.ts Request routing and middleware pipeline
urlHandlers/handleSubmitTool.ts /submit-tool business logic
urlHandlers/handleReportTool.ts /report-tool business logic
urlHandlers/handleSuggestTool.ts /suggest-tool business logic

All handlers return JSON with either a success indicator or an error field containing failure details.

Response Format

Every FckSignups API endpoint returns a JSON object. Successful issue creation typically yields:

{ "success": true, "issueNumber": 42 }

Errors include descriptive messaging:

{ "error": "Missing required field: name" }

The utils.ts module standardizes these response structures across all three endpoints.

Summary

  • FckSignups provides three POST endpoints: /submit-tool, /report-tool, and /suggest-tool
  • All endpoints create GitHub issues through dedicated handlers in the urlHandlers/ directory
  • CORS-enabled with preflight support for browser-based clients
  • Consistent JSON request/response format with error handling via utils.ts
  • No authentication required — submissions are moderated through GitHub issue workflows

Frequently Asked Questions

Does the FckSignups API require authentication?

No. The FckSignups API is intentionally open. Authentication is handled at the GitHub level when the Worker creates issues using a repository token stored as a Cloudflare secret. End users submit tools anonymously, and maintainers moderate via standard GitHub issue workflows.

What HTTP methods does the FckSignups API support?

The three functional endpoints accept POST requests only. The Worker also responds to OPTIONS requests for CORS preflight. All other methods receive a 405 Method Not Allowed response generated in worker.ts before route dispatch occurs.

Can I use the FckSignups API from a browser?

Yes. The Worker explicitly handles CORS headers through the utility functions in utils.ts, allowing direct fetch() calls from browser contexts without proxy servers. Both simple requests and preflight scenarios are supported.

Where are the tools stored after submission?

Nowhere in a traditional database. According to the source code in handleSubmitTool.ts and sibling handlers, all submissions become GitHub issues in the repository configured via environment variables. The FckSignups API is essentially a GitHub issue creation proxy with structured 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 →