---
name: awesome-tools
description: Submit a software tool to Awesome Tools using the JSON API or browser WebMCP tools, and complete the free backlink path or review the paid listing options.
---

# Submit a tool to Awesome Tools

Use this skill when your requester wants their software listed on Awesome Tools. Confirm that they authorize you to submit the website and use their contact email. A submission saves a request and screens the site. It is not immediate publication. Read statusUrl from the response for eligibility, reasons, and the free or paid path.

## Choose a listing path

- Free: keep a visible, regular link to https://awesome.tools on the homepage, or on a page the homepage links to. The page may link to at most 50 other sites. A free listing also needs domain rating 20, 30 referring domains, and 200 monthly visits or 100 keywords. Verify the page after submitting.
- Featured Launch: 49 USD, one-time, reduced from 99 USD (save 50 USD), plus any applicable tax. It skips the backlink requirement and includes a permanent directory listing, a do-follow link, and featured directory placement.
- Featured + Newsletter Sponsor: 149 USD, one-time, reduced from 249 USD (save 100 USD), plus any applicable tax. Includes everything in Featured Launch plus a Sponsored Pick slot in the Awesome Tools Newsletter and 30 days pinned in category top picks. Review the checkout on the returned listing page. The submission API does not charge or complete a payment.
- Partner referrals (`?via=`): Directory aggregators, creators, and founders can share `https://awesome.tools/submit?via=<handle>` (see [Partners](https://awesome.tools/partners)) to earn 40% commission ($19.60 or $59.60) on referred paid listings.

Only submit, publish a backlink, or pay when the requester has authorized that action. A budget brief is not permission to buy a listing or another service.

## Gather the submission

Required fields:

| Field | What to provide |
| --- | --- |
| name | Actual software or product name; up to 200 characters. |
| websiteUrl | Public product website on a custom domain; up to 2048 characters. Bare domains and HTTP URLs are normalized to HTTPS. Development and preview hosting domains are rejected. |
| submitterName | Requester or representative name; up to 120 characters. |
| submitterEmail | Real contact email the requester has authorized you to use; up to 254 characters. |

Optional fields:

| Field | Limit and purpose |
| --- | --- |
| submitterNote | Up to 200 characters about the submission; defaults to an empty string. |
| botBudget | Up to 200 characters: amount, currency, and whether paid options are allowed. |
| botGoals | Up to 1000 characters: audience, discoverability goals, and priorities. |
| botListingPlans | Up to 1000 characters: other directories or listing services being considered. |
| botInstructions | Up to 2000 characters: context stored with the submission. It is not sent to a model. |
| newsletterOptIn | Ignored by the agent API: agent submissions never subscribe anyone. The requester can subscribe on the site. |
| dryRun | Set true to validate without saving a request or sending email. Defaults to false. |

Agent API submissions are always marked as bots. You may send isBot=true for clarity. In the browser form, check “Are you a bot?” on the first step. Bots are welcome. Brief fields are optional; include the requester's answers about budget, goals, other listing plans, and instructions when available. Never invent answers. Briefs are stored and are not sent to a model.

These contact and brief fields are private intake information. For an existing website, the submission records your new agent request without replacing the previous submitter's contact or claiming ownership. The response exposes only listing navigation fields.

## Validate first

No API key is required. Fetch the current requirements and JSON Schema:

```sh
curl --fail-with-body 'https://awesome.tools/api/agent/submissions'
```

Replace the example product, website, name, and email below with values your requester authorized. The .example addresses are placeholders.

```sh
curl --fail-with-body 'https://awesome.tools/api/agent/submissions' \
  -H 'Content-Type: application/json' \
  --data '{
    "dryRun": true,
    "isBot": true,
    "name": "Your Product",
    "websiteUrl": "https://your-product.example",
    "submitterName": "Authorized Requester",
    "submitterEmail": "requester@your-product.example",
    "newsletterOptIn": false,
    "botBudget": "Free listing only; no purchases authorized",
    "botGoals": "Help people find our software",
    "botInstructions": "Free listing only. Do not buy anything."
  }'
```

A successful preview returns success=true and dryRun=true. It does not check for an existing listing, test email deliverability, verify the backlink, or reserve a listing. Fix validation issues before submitting.

## Submit once

After a successful preview and the requester's authorization, send the same values with dryRun=false:

```sh
curl --fail-with-body 'https://awesome.tools/api/agent/submissions' \
  -H 'Content-Type: application/json' \
  --data '{
    "dryRun": false,
    "isBot": true,
    "name": "Your Product",
    "websiteUrl": "https://your-product.example",
    "submitterName": "Authorized Requester",
    "submitterEmail": "requester@your-product.example",
    "newsletterOptIn": false,
    "botBudget": "Free listing only; no purchases authorized",
    "botGoals": "Help people find our software",
    "botInstructions": "Free listing only. Do not buy anything."
  }'
```

Success returns success=true, dryRun=false, listing with botRequestReceived/isFeatured/name/slug/status, nextActionUrl, and statusUrl. Open nextActionUrl to finish the selected listing path. Read statusUrl for eligibility. A Draft status means the tool is not yet public.

Do not repeat a successful submission: each real agent submission records a new brief, including for an existing website. If the network response is lost, read statusUrl or the browser listing flow before retrying. Respect 429 rate limits rather than changing identities or flooding requests.

The endpoint accepts application/json only and limits the body to 16 KiB. Successful submissions return HTTP 201; previews return HTTP 200. Errors return success=false and error with code/message plus validation issues when present. Codes include validation_error (422), invalid_json (400), unsupported_media_type (415), payload_too_large (413), rate_limited (429), and submission_failed (500). See the [OpenAPI description](https://awesome.tools/api/agent/openapi.json) for the contract.

## Complete the free listing

With permission to edit the product website, add this ordinary, visible link and publish the page:

```html
<a href="https://awesome.tools">Listed on Awesome Tools</a>
```

The link can be in a footer, About page, or “Listed on” section. The page must be on the submitted site's allowed host, public without sign-in, and indexable. Links hidden in comments, invisible markup, scripts, or marked nofollow/sponsored/ugc do not qualify.

Open nextActionUrl, choose the free listing path, and supply the exact public page URL where the link appears. Use the page's “Check my link” button or verify_listing_backlink WebMCP tool. A successful link check returns status=live; it confirms the backlink rather than immediate directory publication. Keep the backlink in place. A removed backlink can lead to a listing being hidden; an unreadable page does not count as a missing link.

## Remote MCP server

Connect any MCP client to `https://awesome.tools/mcp` (also `https://awesome.tools/api/mcp`) over Streamable HTTP. No API key is needed. For example: `claude mcp add --transport http awesome-tools https://awesome.tools/mcp`.

| Tool | What it does |
| --- | --- |
| search_tools | Searches published tools by query, category, tag, or isFeatured. |
| get_tool | Reads a published tool, or the status and next steps of your own submission. |
| list_categories / list_tags | Lists slugs with published tool counts. Use category slugs in submit_tool. |
| submit_tool | plan free_backlink saves the listing. Paid plans (featured_49 default, or sponsor_149) return a price only and save nothing until confirmPaymentSpend=true, which returns a Stripe Checkout URL. |
| verify_my_backlink | Checks the badge on {"slug","backlinkUrl"} for an unpublished free listing and schedules it when the link is live. |
| submit_feedback | Sends a bug, missing_feature, question, or other note to the team. |

The MCP never charges a card. The requester pays on the returned Stripe Checkout page.

## Browser WebMCP

Open [the submission form](https://awesome.tools/submit) in a browser that supports WebMCP. Tools register while the relevant page is open:

| Tool | What it does |
| --- | --- |
| get_submission_requirements | Reads the current requirements and listing options. |
| prepare_tool_submission | Takes the submission fields, validates them, and fills the form's final review step. It does not submit or send email. |
| submit_tool | Takes only {"confirmSubmission":true} after prepare_tool_submission and requester authorization. It saves the reviewed request, screens the site, and returns the next listing URL. |
| get_backlink_requirements | Reads the backlink requirements for the current listing after opening its free listing form. |
| verify_listing_backlink | Takes {"backlinkUrl":"https://your-product.example/about"} on that free listing form. Checks the URL for the current listing; verification may update the listing and send status emails. |

Tools are page-specific. Inspect their input schemas before calling them. Prepare the complete authorized submission before calling submit_tool; it accepts no replacement contact or brief fields. Open the returned listing URL and choose the free path to discover the backlink tools. If your browser does not expose WebMCP, use the JSON API or the labeled browser form instead. No WebMCP or API tool completes a Stripe payment.

## Optional LinkDR workflow

For requesters who want to explore additional link-building options, read [LinkDR's own skill](https://linkdr.com/SKILL.md) and check its current services and terms. LinkDR is a separate service. The promotional code is AGENTIC. Do not sign up, buy services, or run outreach without the requester's authorization.

## Discovery

- [llms.txt](https://awesome.tools/llms.txt)
- [OpenAPI description](https://awesome.tools/api/agent/openapi.json)
- [Current requirements and JSON Schema](https://awesome.tools/api/agent/submissions)
- [Browser form](https://awesome.tools/submit)
