Server definition
- Hash
- sha256:6d7563c729400497900d023f56e924a810edbc853b18de65983d3be4412f08f8
- What it is
- What a remote MCP server returned when asked what it offers: 31 tools
The blob, as servednamed by its sha256
{
"instructions": "toolfound.com is a launch platform + tool directory where the entire launch lifecycle is agent-native: search the directory, submit a product, verify ownership, track the transparent launch queue, claim listings, and fetch embed badges — all through these tools.\nAll 16 read-only tools (directory discovery plus deterministic launch helpers, task matching, and public-link inspection) need no auth. Some attributed catalogue/network reads can still be rate-limited or unavailable.\nWrite tools use an email-verification loop: ownership verification is mandatory before any launch is queued (DNS TXT, meta tag, or email magic link). Unverified submissions purge after 14 days.\nLaunching is permanently free. In toolfound_get_launch_calendar, free_launch_slots_remaining is a deprecated legacy counter: it is not a limit on free launches and does not describe current launch-date availability. Use calendar[].slots_open for date capacity. Queue position and launch date are always shown transparently.\nRate limits: 3 submissions per email per day, 10 per IP per day.",
"tools": [
{
"description": "Create one deterministic UTM link while retaining unrelated query parameters and the page anchor. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"campaign": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"content": {
"maxLength": 100,
"type": "string"
},
"medium": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"source": {
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"websiteUrl": {
"format": "uri",
"maxLength": 2000,
"type": "string"
}
},
"required": [
"websiteUrl",
"source",
"medium",
"campaign"
],
"type": "object"
},
"name": "toolfound_campaign_links",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Normalize UTM naming or remove campaign parameters from a supplied URL without visiting its destination. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"mode": {
"enum": [
"normalize",
"remove"
],
"type": "string"
},
"url": {
"maxLength": 2000,
"type": "string"
}
},
"required": [
"url",
"mode"
],
"type": "object"
},
"name": "toolfound_campaign_url_cleaner",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Non-destructive dry run of ownership verification for a toolfound submission: reports, per method, what the checker sees RIGHT NOW — meta tag found or not (with the exact expected tag), DNS TXT found or not (with the exact expected record), and whether the submission email qualifies for the magic-link path. Use it to distinguish 'my deploy is not live yet' from 'wrong token' before calling toolfound_verify_submission. Changes nothing.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"token": {
"description": "The verify_token returned by toolfound_submit_product.",
"maxLength": 200,
"minLength": 8,
"type": "string"
}
},
"required": [
"token"
],
"type": "object"
},
"name": "toolfound_check_verification",
"outputSchema": null
},
{
"description": "Claim an existing toolfound listing as the product's owner (free). Claiming requires ownership verification — a magic link is sent to the email you provide (use an address at the product's domain), and meta-tag / DNS TXT verification also works. Claimed listings unlock editing, badges, analytics, and the optional open-to-acquisition flag.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"description": "Your email — ideally at the product's own domain — receives the claim magic link.",
"format": "email",
"maxLength": 254,
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"slug": {
"description": "Slug of the listing to claim.",
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"slug",
"email"
],
"type": "object"
},
"name": "toolfound_claim_listing",
"outputSchema": null
},
{
"description": "Calculate the WCAG text contrast ratio for two opaque hex colors before shipping a landing page or launch graphic. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"background": {
"maxLength": 7,
"type": "string"
},
"foreground": {
"maxLength": 7,
"type": "string"
}
},
"required": [
"foreground",
"background"
],
"type": "object"
},
"name": "toolfound_color_contrast",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Clean repeated campaign or listing-export rows while retaining the first exact match and showing how many rows changed. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"csv": {
"maxLength": 12000,
"type": "string"
}
},
"required": [
"csv"
],
"type": "object"
},
"name": "toolfound_csv_deduplicator",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Filter the dated launch-directory evidence by product fit, cost, format, and link policy. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cost": {
"enum": [
"any",
"free",
"paid",
"unknown"
],
"type": "string"
},
"dofollow": {
"enum": [
"any",
"yes",
"no",
"conditional",
"unknown"
],
"type": "string"
},
"launchModel": {
"enum": [
"any",
"daily-ranking",
"weekly-ranking",
"monthly-ranking",
"evergreen-listing",
"community",
"review-site",
"deal-marketplace",
"database",
"newsletter",
"unknown"
],
"type": "string"
},
"segment": {
"enum": [
"any",
"b2b-saas",
"ai-tools",
"dev-tools",
"side-projects",
"ai-directories",
"mcp-registries",
"high-authority"
],
"type": "string"
}
},
"required": [
"segment",
"cost",
"launchModel",
"dofollow"
],
"type": "object"
},
"name": "toolfound_directory_matcher",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Turn a launch date and up to eight chosen channels into a bounded preparation timetable. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"channels": {
"maxLength": 1000,
"minLength": 1,
"type": "string"
},
"launchDate": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"required": [
"launchDate",
"channels"
],
"type": "object"
},
"name": "toolfound_distribution_plan",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Create a bounded interview plan and evidence log from a learning goal, participant count, and available time. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"goal": {
"maxLength": 300,
"minLength": 12,
"type": "string"
},
"minutes": {
"type": "string"
},
"participants": {
"type": "string"
},
"stage": {
"enum": [
"evaluating",
"new",
"active",
"churned"
],
"type": "string"
}
},
"required": [
"goal",
"participants",
"minutes",
"stage"
],
"type": "object"
},
"name": "toolfound_feedback_interview_planner",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Match a bounded task description against public Toolfound catalogue evidence. Results are not personal recommendations and unknown capabilities remain unknown.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"pricing": {
"enum": [
"any",
"free",
"free_or_freemium"
],
"type": "string"
},
"task": {
"maxLength": 500,
"minLength": 1,
"type": "string"
}
},
"required": [
"task"
],
"type": "object"
},
"name": "toolfound_find_by_task",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"error": {
"type": "string"
},
"matches": {
"items": {
"additionalProperties": false,
"properties": {
"limitations": {
"items": {
"type": "string"
},
"type": "array"
},
"listing_url": {
"format": "uri",
"type": "string"
},
"matching_terms": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"pricing_model": {
"enum": [
"free",
"freemium",
"trial",
"paid",
"unknown"
],
"type": "string"
},
"slug": {
"type": "string"
},
"tagline": {
"type": "string"
}
},
"required": [
"slug",
"name",
"tagline",
"listing_url",
"pricing_model",
"matching_terms",
"limitations"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"query": {
"type": "string"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"ok",
"query",
"matches",
"warnings",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "List alternatives to a given product on toolfound — tools in the same primary category, ranked by points (community votes plus an AI listing score). Useful for 'alternatives to X' and comparison questions. Each result includes tagline, pricing model, votes, and a canonical listing URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"slug": {
"description": "Slug of the product to find alternatives for.",
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "toolfound_get_alternatives",
"outputSchema": null
},
{
"description": "Get the three copy-paste badge embed snippets for a toolfound listing ('live on toolfound', 'verified', 'top 3 this week' variants). Badges are optional and earned — they deep-link to the listing with varied anchor text, and the embedder chooses the rel attribute freely. Listing status is never conditioned on embedding a badge.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"slug": {
"description": "Slug of the listing to get badges for.",
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "toolfound_get_badge",
"outputSchema": null
},
{
"description": "The upcoming toolfound launch calendar with seat availability per date: featured seats (a scarce, limited number per day) vs how many are already taken, plus the total daily cap and how many launches are queued, over a horizon you choose (default 30 days, up to 180). Launching is permanently free. toolfound shows availability openly — no hidden queues. Use this to pick a launch date before submitting: pass preferred_launch_date to toolfound_submit_product to request a specific day.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"horizon_days": {
"description": "How many days ahead to return (default 30, max 180).",
"maximum": 180,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "toolfound_get_launch_calendar",
"outputSchema": null
},
{
"description": "Check the status of a toolfound submission by submission id or product URL: current state (pending verification, queued, launched), transparent queue position, assigned launch date, and the listing URL once live. toolfound never hides queue state — what this returns is exactly what everyone sees.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"submission_id": {
"description": "The submission id returned by toolfound_submit_product.",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"url": {
"description": "Or the product URL you submitted.",
"maxLength": 500,
"minLength": 4,
"type": "string"
}
},
"type": "object"
},
"name": "toolfound_get_launch_status",
"outputSchema": null
},
{
"description": "Fetch the full toolfound listing for a product by slug: description, tagline, pricing model, tags, socials, vote count, launch date, ownership-verification status, and the canonical listing URL. Every launched listing on toolfound is ownership-verified by its maker (DNS TXT, meta tag, or domain email). Includes the top alternatives in the same category.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"slug": {
"description": "The product slug, e.g. 'acme-analytics' (from search results or the listing URL).",
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "toolfound_get_product",
"outputSchema": null
},
{
"description": "The toolfound leaderboard: top products launched in the last day, week, or month, ranked by points (community votes plus an AI listing score). toolfound is a launch platform with a transparent queue — every product here launched publicly on an assigned date and is ownership-verified. Great for 'what launched recently' and 'trending tools' questions.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"period": {
"description": "Leaderboard window: day, week, or month.",
"enum": [
"day",
"week",
"month"
],
"type": "string"
}
},
"required": [
"period"
],
"type": "object"
},
"name": "toolfound_get_trending",
"outputSchema": null
},
{
"description": "Safely fetch one public HTTPS source page and report matching anchor markup for a public HTTPS target, including observed rel tokens. This does not establish indexing, crawler treatment, or ranking impact. Redirect history is reported as unobserved.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"sourceUrl": {
"description": "Public HTTPS page whose fetched HTML should be inspected.",
"format": "uri",
"maxLength": 2000,
"type": "string"
},
"targetUrl": {
"description": "Public HTTPS destination to match exactly, ignoring fragments.",
"format": "uri",
"maxLength": 2000,
"type": "string"
}
},
"required": [
"sourceUrl",
"targetUrl"
],
"type": "object"
},
"name": "toolfound_inspect_public_link",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"error": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"field": {
"enum": [
"sourceUrl",
"targetUrl"
],
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"evidence": {
"additionalProperties": false,
"properties": {
"found": {
"type": "boolean"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"anchorText": {
"type": "string"
},
"href": {
"type": "string"
},
"nofollow": {
"type": "boolean"
},
"rel": {
"items": {
"type": "string"
},
"type": "array"
},
"resolvedUrl": {
"type": "string"
},
"sponsored": {
"type": "boolean"
},
"ugc": {
"type": "boolean"
}
},
"required": [
"href",
"resolvedUrl",
"anchorText",
"rel",
"nofollow",
"sponsored",
"ugc"
],
"type": "object"
},
"type": "array"
},
"matchingLinkCount": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"required": [
"found",
"matchingLinkCount",
"links"
],
"type": "object"
},
"fetch": {
"additionalProperties": false,
"properties": {
"note": {
"type": "string"
},
"redirectHistory": {
"const": "unobserved",
"type": "string"
},
"status": {
"enum": [
"fetched",
"failed",
"rejected"
],
"type": "string"
}
},
"required": [
"status",
"redirectHistory",
"note"
],
"type": "object"
},
"fetchedAt": {
"type": "string"
},
"ok": {
"type": "boolean"
},
"sourceUrl": {
"type": "string"
},
"summary": {
"type": "string"
},
"targetUrl": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sourceUrl",
"targetUrl",
"fetchedAt",
"fetch",
"evidence",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Convert a small flat JSON export into a downloadable spreadsheet, with explicit limits and formula protection. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"json": {
"maxLength": 12000,
"type": "string"
}
},
"required": [
"json"
],
"type": "object"
},
"name": "toolfound_json_to_csv",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Check whether an editable product draft has the fields needed for a complete directory submission. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"description": {
"maxLength": 5000,
"type": "string"
},
"logoURL": {
"format": "uri",
"maxLength": 2000,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"tagline": {
"maxLength": 200,
"type": "string"
},
"websiteUrl": {
"format": "uri",
"maxLength": 2000,
"type": "string"
}
},
"type": "object"
},
"name": "toolfound_launch_readiness",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Calculate transparent signup and conversion rates from the non-negative counts you provide. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"conversions": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"signups": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"visits": {
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"required": [
"visits",
"signups"
],
"type": "object"
},
"name": "toolfound_launch_review",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "List every category in the toolfound directory with product counts and curated intros. Use this to browse the index or to map a user's need to the right category before searching.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "toolfound_list_categories",
"outputSchema": null
},
{
"description": "Turn supplied product facts into deterministic, editable listing copy without inventing claims. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"audience": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"differentiator": {
"maxLength": 5000,
"type": "string"
},
"name": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"outcome": {
"maxLength": 5000,
"minLength": 1,
"type": "string"
},
"problem": {
"maxLength": 5000,
"minLength": 1,
"type": "string"
}
},
"required": [
"name",
"audience",
"problem",
"outcome"
],
"type": "object"
},
"name": "toolfound_listing_copy",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Build an honest pitch checklist from the materials editors usually need before they can review a launch. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"audience": {
"maxLength": 200,
"type": "string"
},
"logoURL": {
"format": "uri",
"maxLength": 2000,
"type": "string"
},
"name": {
"maxLength": 200,
"type": "string"
},
"newsAngle": {
"maxLength": 5000,
"type": "string"
},
"websiteUrl": {
"format": "uri",
"maxLength": 2000,
"type": "string"
}
},
"type": "object"
},
"name": "toolfound_newsletter_readiness",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Relaunch an already-launched toolfound listing: same listing, same URL, a new launch date shown alongside the old one. Relaunch requires a fresh verified-owner session, so this anonymous MCP transport reports the eligibility result but directs owners to the dashboard to authorize the write.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"description": "Claimed-owner email. The relaunch must still be authorized from its verified dashboard session.",
"format": "email",
"maxLength": 254,
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"note": {
"description": "Required: one line about what changed since the original launch (10-200 characters). Shown publicly on the listing page.",
"maxLength": 200,
"minLength": 10,
"type": "string"
},
"requested_launch_date": {
"description": "Preferred new launch date, YYYY-MM-DD, within the next 180 days. Use toolfound_get_launch_calendar to find open featured seats. Falls back to the earliest open day if omitted or full.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"slug": {
"description": "Slug of the listing to relaunch.",
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"slug",
"email",
"note"
],
"type": "object"
},
"name": "toolfound_relaunch",
"outputSchema": null
},
{
"description": "Choose between a relaunch, a regular update, or more preparation from the size of the change and launch evidence you provide. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"audienceChanged": {
"enum": [
"yes",
"no"
],
"type": "string"
},
"change": {
"enum": [
"small",
"major",
"direction"
],
"type": "string"
},
"evidence": {
"enum": [
"strong",
"release",
"none"
],
"type": "string"
},
"listingCurrent": {
"enum": [
"yes",
"no"
],
"type": "string"
},
"measurementReady": {
"enum": [
"yes",
"no"
],
"type": "string"
}
},
"required": [
"change",
"audienceChanged",
"listingCurrent",
"evidence",
"measurementReady"
],
"type": "object"
},
"name": "toolfound_relaunch_decision",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Search toolfound.com — the launch platform and tool directory built agent-first — for SaaS products and developer tools by name, tagline, or tag. Returns matching products with taglines, pricing model, vote counts, and canonical listing URLs you can cite or open. Use this when a user asks to find, compare, or discover a tool for a job.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"query": {
"description": "Free-text search: product name, problem, or tag (e.g. 'invoicing', 'screenshot api').",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "toolfound_search_tools",
"outputSchema": null
},
{
"description": "Export a safe 1200×630 SVG preview from a bounded product name and tagline. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"name": {
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"tagline": {
"maxLength": 180,
"minLength": 1,
"type": "string"
}
},
"required": [
"name",
"tagline"
],
"type": "object"
},
"name": "toolfound_share_preview",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Normalize two software prices to a first-year cost using seats, billing periods, setup fees, and expected usage charges. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"aBilling": {
"enum": [
"monthly",
"annual",
"one-time"
],
"type": "string"
},
"aName": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"aPrice": {
"type": "string"
},
"aSetup": {
"type": "string"
},
"aUsage": {
"type": "string"
},
"bBilling": {
"enum": [
"monthly",
"annual",
"one-time"
],
"type": "string"
},
"bName": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"bPrice": {
"type": "string"
},
"bSetup": {
"type": "string"
},
"bUsage": {
"type": "string"
},
"seats": {
"type": "string"
}
},
"required": [
"seats",
"aName",
"aPrice",
"aBilling",
"bName",
"bPrice",
"bBilling"
],
"type": "object"
},
"name": "toolfound_software_cost_comparison",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Estimate the clicks, signups, and customers needed to recover a sponsorship cost from your own funnel assumptions. Returns an evidence-bounded result and the canonical web tool URL.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"cost": {
"type": "string"
},
"customerRate": {
"type": "string"
},
"margin": {
"type": "string"
},
"revenue": {
"type": "string"
},
"signupRate": {
"type": "string"
}
},
"required": [
"cost",
"revenue",
"margin",
"signupRate",
"customerRate"
],
"type": "object"
},
"name": "toolfound_sponsorship_break_even",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"canonical_result_url": {
"format": "uri",
"type": "string"
},
"data": {
"additionalProperties": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"errors": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"links": {
"items": {
"additionalProperties": false,
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
],
"type": "object"
},
"type": "array"
},
"ok": {
"type": "boolean"
},
"sections": {
"items": {
"additionalProperties": false,
"properties": {
"heading": {
"type": "string"
},
"items": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"heading",
"items"
],
"type": "object"
},
"type": "array"
},
"summary": {
"type": "string"
}
},
"required": [
"ok",
"summary",
"sections",
"links",
"canonical_result_url"
],
"type": "object"
}
},
{
"description": "Submit a product to launch on toolfound.com — the launch platform where the whole launch runs agent-native, end to end. New submissions require a public URL for the maker-selected product logo; a discovered favicon does not count. One call returns everything: your submission id, ownership-verification instructions (mandatory — DNS TXT, meta tag, or email magic link), transparent queue position and assigned launch date, and the live free-slots counter (launches are free). AGENTS: you do not need inbox access — the verify_token in this response works with the meta_tag or dns_txt method via toolfound_verify_submission, and toolfound_check_verification dry-runs the checks; the emailed magic link is a human fallback that can also be completed later from the dashboard. Description renders as plain-text paragraphs on the listing page: 100–200 words reads best, and entries over 100 words qualify for search-engine indexing. Resubmitting a known URL returns the existing submission (idempotent and grandfathered when the existing row predates the logo requirement).",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"description": {
"description": "Longer description (optional — you can edit later).",
"maxLength": 5000,
"minLength": 1,
"type": "string"
},
"email": {
"description": "Maker's email — receives the verification link, queue updates, and launch results.",
"format": "email",
"maxLength": 254,
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"type": "string"
},
"logo_url": {
"description": "Direct public URL for the product's real logo (PNG, JPG, GIF or WebP; max 2MB). Required for new submissions.",
"maxLength": 2000,
"minLength": 1,
"type": "string"
},
"name": {
"description": "Product name (optional — drafted from the site if omitted).",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"preferred_launch_date": {
"description": "Preferred launch date, YYYY-MM-DD (optional). Must be within the next 180 days; use toolfound_get_launch_calendar to find open featured seats. If that day is full by the time you verify, the earliest open day is assigned and reported. Omit to get the earliest open date automatically.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"price_usd": {
"description": "Optional starting price in USD (e.g. the cheapest paid plan). Only used when pricing_model is 'paid', 'freemium', or 'trial'.",
"maximum": 1000000,
"minimum": 0,
"type": "number"
},
"pricing_model": {
"description": "The product's pricing model (optional, but strongly recommended — captured now instead of after claim so the listing never sits at 'Pricing unlisted').",
"enum": [
"free",
"freemium",
"trial",
"paid",
"unknown"
],
"type": "string"
},
"tagline": {
"description": "One-line tagline (optional).",
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"url": {
"description": "The product's public https URL (e.g. https://yourproduct.com).",
"maxLength": 500,
"minLength": 4,
"type": "string"
},
"x_handle": {
"description": "The maker's X (Twitter) handle, e.g. @yourproduct (optional). Shown on the listing. If the listing wins that UTC day, @toolfoundcom tags this handle the next morning. We do not tag every launch.",
"maxLength": 120,
"type": "string"
}
},
"required": [
"url",
"email"
],
"type": "object"
},
"name": "toolfound_submit_product",
"outputSchema": null
},
{
"description": "Complete the mandatory ownership verification for a toolfound submission using the verification token (from the email magic link, or after placing the meta tag / DNS TXT record on your domain — this call checks them on demand). Verification is what makes toolfound listings trustworthy: every launched product is confirmed maker-owned. On success your launch is queued at the transparent position and date you were assigned.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"token": {
"description": "The verification token from your submission email or verification snippet.",
"maxLength": 200,
"minLength": 8,
"type": "string"
}
},
"required": [
"token"
],
"type": "object"
},
"name": "toolfound_verify_submission",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:6d7563c729400497900d023f56e924a810edbc853b18de65983d3be4412f08f8 | sha256sum