PromptFrenzy · PromptFrenzy AI Directory

Submit an eligible AI tool website and receive a public directory listing page with a dofollow backlink, plus public repository evidence of the publication.

ai-directory.publish-listing v0.2.0 active free — no wallet

Badge-required directory submission. Precondition: the tool's site must display the PromptFrenzy directory badge (static HTML anchor to https://www.promptfrenzy.com/directory, dofollow, on the domain being submitted) before invoking — the badge is the directory's eligibility mechanism; there is no human review queue and no payment. The execution posts the listing payload to the directory's submit API, which verifies the badge, opens a pull request in the public registry repository via the directory bot, auto-merges on pass (typically under 60 seconds), and publishes the listing page. Sites on their own durable domain get a full listing; platform subdomains (*.vercel.app, *.netlify.app, *.github.io and similar) are listed but flagged early-stage; raw IPs, tunnels and link shorteners are rejected. Richer optional fields (tags, key features, platforms, pricing detail) make the listing rank and get cited — thin submissions still list but read as filler. The badge is re-verified daily for the first week and weekly thereafter; removing it eventually moves the listing to a public removed state.

machine contract: manifest.json · manifest_hash sha256:f35a4385d1561de0

Explicitly not promised

Price

Free. No wallet, no account, no payment handshake — rejections cost nothing too.

Contract

Input
application/json · max 16,384 bytesMirrors the directory's own submit contract: name, url, description, category, pricing and badge_url are required; tags, pricing_detail, key_features, works_with, platforms, logo and submitted_by are optional but strongly encouraged.
Output
application/jsonThe listing URL is the canonical public artifact; the pull request URL is the durable public repository evidence the receipt binds to.
Input schema (JSON Schema)
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tracert.site/providers/prompt-frenzy/schemas/publish-listing.input.schema.json",
  "title": "ai-directory.publish-listing input",
  "description": "Mirrors the PromptFrenzy AI Directory submit contract (github.com/Prompt-Frenzy/ai-directory schema.json), minus server-managed fields. Precondition: the badge must already be live at badge_url.",
  "type": "object",
  "required": [
    "name",
    "url",
    "description",
    "category",
    "pricing",
    "badge_url"
  ],
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80,
      "description": "Display name of the tool."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "pattern": "^https://",
      "maxLength": 500,
      "description": "Canonical HTTPS URL of the tool's homepage — its own durable domain for a full listing. Platform subdomains (*.vercel.app etc.) list as early-stage; raw IPs, tunnels and shorteners are rejected."
    },
    "description": {
      "type": "string",
      "minLength": 20,
      "maxLength": 200,
      "description": "One-sentence factual description, no superlatives or marketing copy."
    },
    "category": {
      "enum": [
        "image-generation",
        "video-generation",
        "text-generation",
        "audio-generation",
        "prompt-tools",
        "agents",
        "chatbots",
        "code-assist",
        "productivity",
        "data-analysis",
        "voice-cloning",
        "other"
      ],
      "description": "Exactly one directory category; use tags for granularity."
    },
    "pricing": {
      "enum": [
        "free",
        "freemium",
        "paid",
        "subscription"
      ]
    },
    "badge_url": {
      "type": "string",
      "format": "uri",
      "pattern": "^https://",
      "maxLength": 500,
      "description": "The page on the submitted domain where the PromptFrenzy directory badge is pasted (static HTML, dofollow). The verifier fetches this URL."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[a-z0-9-]+$",
        "maxLength": 30
      },
      "maxItems": 5,
      "uniqueItems": true,
      "description": "Freeform lowercase-hyphen tags, max 5."
    },
    "pricing_detail": {
      "type": "string",
      "minLength": 10,
      "maxLength": 200,
      "description": "Specific pricing beyond the tier, e.g. 'Free tier watermarked; Pro $12/mo for 1,000 credits'."
    },
    "key_features": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 100
      },
      "minItems": 2,
      "maxItems": 6,
      "description": "2-6 short factual capability bullets. Strongly encouraged — richer entries rank better and get cited."
    },
    "works_with": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[a-z0-9][a-z0-9 .+-]{0,38}[a-z0-9]$",
        "maxLength": 40
      },
      "maxItems": 8,
      "uniqueItems": true,
      "description": "Tools, platforms or models this integrates with, e.g. ['chatgpt', 'figma', 'vs code']."
    },
    "platforms": {
      "type": "array",
      "items": {
        "enum": [
          "web",
          "api",
          "ios",
          "android",
          "windows",
          "macos",
          "linux",
          "cli",
          "browser-extension",
          "discord",
          "slack",
          "self-hosted"
        ]
      },
      "maxItems": 12,
      "uniqueItems": true,
      "description": "Where the tool runs / how it's accessed."
    },
    "logo": {
      "type": "string",
      "format": "uri",
      "pattern": "^https://",
      "maxLength": 500
    },
    "submitted_by": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9-]+$",
      "maxLength": 40,
      "description": "GitHub username of the submitter."
    }
  }
}
Output schema (JSON Schema)
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tracert.site/providers/prompt-frenzy/schemas/publish-listing.output.schema.json",
  "title": "ai-directory.publish-listing output",
  "type": "object",
  "required": [
    "listing_url",
    "pr_url"
  ],
  "additionalProperties": false,
  "properties": {
    "listing_url": {
      "type": "string",
      "format": "uri",
      "pattern": "^https://",
      "description": "Canonical public URL of the listing page (https://www.promptfrenzy.com/directory/<slug>). Independently fetchable; the execution verifies it resolves and lists the submitted tool URL."
    },
    "pr_url": {
      "type": "string",
      "format": "uri",
      "pattern": "^https://",
      "description": "The pull request in the public directory repository — the durable public evidence of the publication."
    },
    "pr_number": {
      "type": "integer",
      "minimum": 1
    },
    "slug": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9-]*$",
      "description": "Directory-side identifier of the listing."
    },
    "host_tier": {
      "enum": [
        "full",
        "early-stage"
      ],
      "description": "Whether the submitted host earned a full listing or an early-stage flag."
    }
  }
}

Failure semantics

CodeMeaningRetriable
invalid_inputThe payload failed field validation (the submit API returns HTTP 400 with field-level details, relayed verbatim).no
invalid_urlurl, badge_url or logo is not a syntactically valid HTTPS URL.no
badge_not_foundThe verifier could not find the badge anchor (static HTML, dofollow) at badge_url. Add the badge, then submit again.yes
host_rejectedThe submitted host is a raw IP, temporary tunnel, link shortener or placeholder host — not listable at any tier.no
unreachable_urlThe site or badge page did not respond during validation.yes
duplicate_listingThe canonical tool URL already has a live listing; the existing listing URL is returned in the rejection.no
publication_timeoutThe pull request did not merge or the listing page did not go live within the execution timeout.yes

Interfaces

Operational facts

Expected latency
p50 90s · p95 600s
Timeout
900s — every execution reaches a terminal state
Idempotency
supported
Availability signal
https://www.promptfrenzy.com/.well-known/ai-tools.json

Data handling (declared)

Input retention
Submitted listing data is intended for publication: it becomes a public YAML entry in the GitHub repository (permanent, version-controlled) and a public listing page. Removed listings move to a public removed state rather than disappearing.
Training use
Submitted fields are sent to a text-generation model (Gemini 2.5 Flash via AIMLAPI) once at submit time to auto-generate the listing's sample_use_case paragraph; they are not otherwise used for training.
Subprocessors
  • promptfrenzy.com submit API (badge verification, PR creation via directory bot)
  • AIMLAPI / Gemini 2.5 Flash (sample_use_case generation at submit time)
  • GitHub (public repository hosting)
Notes
Do not submit anything that must stay private — the output is a public page and a public repository entry by design.

Evidence

Provenance

Integration: first party · adapter operated by tracert

The directory and Tracert are operated by the same team (first party). Dogfooding — distribution infrastructure distributed through distribution infrastructure.


This page is generated from the capability’s TRACE Manifest — no hand-written marketing. Verify the contract yourself: manifest.json · schema