Published prices and licence fit for email verification, sound effect packs and font licences.
io.github.Keith-CY/formquote-mcp (MCP) Server
The io.github.Keith-CY/formquote-mcp Model Context Protocol (MCP) server publishes prices and licence fit for email verification, sound effect packs, and font licences. Its description indicates it provides structured information related to pricing and licensing eligibility for these specific content categories.
🛠️ Key Features
Published prices
Licence fit information
🚀 Use Cases
Email verification licensing evaluation
Sound effect pack pricing/licensing fit
Font licence pricing/licensing fit
⚡ Developer Benefits
Centralized, category-specific pricing and licence-fit data for integration with MCP-based workflows
⚠️ Limitations
Available details do not enumerate specific tools, endpoints, or configuration options beyond the areas listed in its description.
Compare what it costs to verify (clean, validate) a list of email addresses with MillionVerifier, Reoon, DeBounce and Emailable, from their published credit packs and monthly plans. Use this when the user asks how much it costs to verify a number of emails, which email verification service is cheapest for their list size, or how many credit packs to buy. Give only the number of emails, never the addresses. Credits the user already holds with a supplier can be counted. Returns the packs ranked within comparable groups (one-time packs vs monthly plans, per currency), the price for this request, the cost allocated to this job, what is unconfirmed, the date each price was checked and the seller’s page. These are published list prices, not live checkout quotes; it does not verify emails or buy anything.
Parameters4
emails
integer
required
How many email addresses need verifying (1 to 10,000,000). Only the count, never the addresses.
existing_credits
object
optional
Unexpired verification credits the user already holds, by supplier (optional), e.g. {"reoon": 5000}.
goal
string
optional
How to rank: lowest_cash_now = least money to pay now for whole packs or plans; lowest_job_cost = lowest cost allocated to this job (leftover credits keep their value); best_requirement_fit = best match to the stated use first.
lang
string
optional
Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese).
Raw schema
{
"type": "object",
"properties": {
"emails": {
"type": "integer",
"minimum": 1,
"maximum": 10000000,
"description": "How many email addresses need verifying (1 to 10,000,000). Only the count, never the addresses."
},
"existing_credits": {
"type": "object",
"description": "Unexpired verification credits the user already holds, by supplier (optional), e.g. {\"reoon\": 5000}.",
"properties": {
"millionverifier": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Credits already held with millionverifier."
},
"reoon": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Credits already held with reoon."
},
"debounce": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Credits already held with debounce."
},
"emailable": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Credits already held with emailable."
}
},
"additionalProperties": false
},
"goal": {
"type": "string",
"enum": [
"lowest_cash_now",
"lowest_job_cost",
"best_requirement_fit"
],
"default": "lowest_cash_now",
"description": "How to rank: lowest_cash_now = least money to pay now for whole packs or plans; lowest_job_cost = lowest cost allocated to this job (leftover credits keep their value); best_requirement_fit = best match to the stated use first."
},
"lang": {
"type": "string",
"enum": [
"en",
"zh",
"ja",
"fr",
"de"
],
"default": "en",
"description": "Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese)."
}
},
"required": [
"emails"
],
"additionalProperties": false
}
compare_sound_effects_licenses
Check prices and licence fit for a small, hand-checked set of sound effect packs: UI clicks and snaps, motion-graphics sounds, desert wind and train ambiences, and a kettle whistle, from SoundMorph, HISSandaROAR and Thomas Rex Beverly Audio (8 packs). Use this when the user wants sound effects for an app, game, video or interface and asks what a pack costs or whether its licence allows their use: commercial work, number of seats, AI training or generation, reselling the sounds, or a product where the sounds are a large share. Returns each pack’s price, whether it fits (eligible, conditional or not eligible) and which licence points still need the seller’s confirmation. It covers only these packs, not whole sound libraries; say so if none fits. Published prices; nothing is bought.
Parameters8
intent
string
required
What the sounds are for: ui (interface clicks, snaps), motion (motion graphics), nature (ambiences such as wind), train, kettle, or any.
seats
integer
optional
People or workstations that will use the sounds (default 1).
ai_use
boolean
optional
Will the audio itself be used to train or generate with AI? (Asking an AI chat for prices is not AI use.) Default false.
commercial_use
boolean
optional
Will the sounds be used in commercial work? Default true.
standalone_resale
boolean
optional
Will the sounds be resold or redistributed on their own (as a sound pack)? Default false.
pure_sfx_percent
number
optional
Optional: the share (0–100) of the finished product’s total duration that is this supplier’s sound effects alone, with no voice or music. Some licences restrict products where it reaches 25%.
goal
string
optional
How to rank: lowest_cash_now = least money to pay now for whole packs or plans; lowest_job_cost = lowest cost allocated to this job (leftover credits keep their value); best_requirement_fit = best match to the stated use first.
lang
string
optional
Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese).
Raw schema
{
"type": "object",
"properties": {
"intent": {
"type": "string",
"enum": [
"any",
"ui",
"motion",
"nature",
"train",
"kettle"
],
"description": "What the sounds are for: ui (interface clicks, snaps), motion (motion graphics), nature (ambiences such as wind), train, kettle, or any."
},
"seats": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"description": "People or workstations that will use the sounds (default 1).",
"default": 1
},
"ai_use": {
"type": "boolean",
"description": "Will the audio itself be used to train or generate with AI? (Asking an AI chat for prices is not AI use.) Default false.",
"default": false
},
"commercial_use": {
"type": "boolean",
"description": "Will the sounds be used in commercial work? Default true.",
"default": true
},
"standalone_resale": {
"type": "boolean",
"description": "Will the sounds be resold or redistributed on their own (as a sound pack)? Default false.",
"default": false
},
"pure_sfx_percent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Optional: the share (0–100) of the finished product’s total duration that is this supplier’s sound effects alone, with no voice or music. Some licences restrict products where it reaches 25%."
},
"goal": {
"type": "string",
"enum": [
"lowest_cash_now",
"lowest_job_cost",
"best_requirement_fit"
],
"default": "best_requirement_fit",
"description": "How to rank: lowest_cash_now = least money to pay now for whole packs or plans; lowest_job_cost = lowest cost allocated to this job (leftover credits keep their value); best_requirement_fit = best match to the stated use first."
},
"lang": {
"type": "string",
"enum": [
"en",
"zh",
"ja",
"fr",
"de"
],
"default": "en",
"description": "Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese)."
}
},
"required": [
"intent"
],
"additionalProperties": false
}
compare_font_licenses
Check which licence a use needs, and what it costs, for a small, hand-checked set of fonts: Pangram Pangram’s Font Starter Packs, Fontwerk Push, Grilli Type GT Cinetype and Fontfabric Nexa (6 offers). Use this when the user asks whether one of these fonts can be used on a website, on desktop, in print, in an app or game, in a logo or in paid ads, and what licence and price that needs: users, websites, monthly pageviews or unique visitors per site, years of use. Returns each offer’s published price where one applies, which requirements fail or are unconfirmed (for example pageview caps, PV versus UV, styles chosen at the foundry) and the foundry’s page. Other typefaces are not covered; say so instead of guessing. Published prices; nothing is bought.
Parameters14
license_use
string
required
web (webfonts on a site), desktop (installed for design work) or both.
seats
integer
optional
People who will use the font (default 1).
websites
integer
optional
Websites the font will be used on (default 1).
monthly_pageviews
integer
optional
Traffic cap needed per website per month, in the unit of traffic_metric (default 5,000).
traffic_metric
string
optional
pv = pageviews, uv = unique visitors. They are not converted into each other.
term_years
integer
optional
Years the font will be used (default 1). Yearly plans only confirm the first year’s price.
medium
string
optional
Where it is used. A plain website licence does not cover a web app, app, game, logo or paid ads.
commercial_use
boolean
optional
Commercial use? (optional)
commercial_projects
integer
optional
Commercial projects per year (optional).
print_projects
integer
optional
Print projects (optional).
print_units
integer
optional
Printed units (optional).
requires_all_styles
boolean
optional
Does the user need every weight and style of the family? (optional)
goal
string
optional
How to rank: lowest_cash_now = least money to pay now for whole packs or plans; lowest_job_cost = lowest cost allocated to this job (leftover credits keep their value); best_requirement_fit = best match to the stated use first.
lang
string
optional
Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese).
Raw schema
{
"type": "object",
"properties": {
"license_use": {
"type": "string",
"enum": [
"web",
"desktop",
"both"
],
"description": "web (webfonts on a site), desktop (installed for design work) or both."
},
"seats": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"description": "People who will use the font (default 1).",
"default": 1
},
"websites": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "Websites the font will be used on (default 1).",
"default": 1
},
"monthly_pageviews": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Traffic cap needed per website per month, in the unit of traffic_metric (default 5,000).",
"default": 5000
},
"traffic_metric": {
"type": "string",
"enum": [
"pv",
"uv"
],
"default": "pv",
"description": "pv = pageviews, uv = unique visitors. They are not converted into each other."
},
"term_years": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Years the font will be used (default 1). Yearly plans only confirm the first year’s price.",
"default": 1
},
"medium": {
"type": "string",
"enum": [
"website",
"print",
"app",
"web_app",
"game",
"logo",
"paid_ad"
],
"description": "Where it is used. A plain website licence does not cover a web app, app, game, logo or paid ads."
},
"commercial_use": {
"type": "boolean",
"description": "Commercial use? (optional)"
},
"commercial_projects": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Commercial projects per year (optional)."
},
"print_projects": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Print projects (optional)."
},
"print_units": {
"type": "integer",
"minimum": 0,
"maximum": 1000000000,
"description": "Printed units (optional)."
},
"requires_all_styles": {
"type": "boolean",
"description": "Does the user need every weight and style of the family? (optional)"
},
"goal": {
"type": "string",
"enum": [
"lowest_cash_now",
"lowest_job_cost",
"best_requirement_fit"
],
"default": "best_requirement_fit",
"description": "How to rank: lowest_cash_now = least money to pay now for whole packs or plans; lowest_job_cost = lowest cost allocated to this job (leftover credits keep their value); best_requirement_fit = best match to the stated use first."
},
"lang": {
"type": "string",
"enum": [
"en",
"zh",
"ja",
"fr",
"de"
],
"default": "en",
"description": "Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese)."
}
},
"required": [
"license_use"
],
"additionalProperties": false
}
list_formquote_catalog
List everything Formquote has price evidence for: email verification credit packs and plans (MillionVerifier, Reoon, DeBounce, Emailable), sound effect packs (SoundMorph, HISSandaROAR, Thomas Rex Beverly Audio) and font licences (Pangram Pangram, Fontwerk, Grilli Type, Fontfabric), with each listed price, billing period, the date it was checked and the seller’s page. Use this to see what is covered, or when the user asks for one of these suppliers’ listed prices. To price a specific need, use the compare_* tools instead.
Parameters2
category
string
optional
Only this category (optional; default all three).
lang
string
optional
Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese).
Raw schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"email_verification",
"sound_effects",
"font_license"
],
"description": "Only this category (optional; default all three)."
},
"lang": {
"type": "string",
"enum": [
"en",
"zh",
"ja",
"fr",
"de"
],
"default": "en",
"description": "Language of the Formquote page linked in the answer (en, zh, ja, fr, de). The figures are the same; notes recorded by Formquote stay in their original language (mostly Chinese)."
}
},
"additionalProperties": false
}
Ask an AI assistant “what does it cost to verify 25,000 emails?”, “which email verifier is cheapest for 300,000 addresses if I already have 5,000 Reoon credits?” or “can I use GT Cinetype on a site with 50,000 pageviews a month, and what would the licence cost?” — and get published prices from Formquote, each with the date it was checked, its source, and what is still unconfirmed.
code
https://formquote-mcp.chen-yu-d1.workers.dev/mcp
No account, no API key, no sign-in. Read-only. Streamable HTTP. Works in ChatGPT, Claude, Cursor, VS Code and any other MCP client.
What it covers
Formquote compares published prices and licence terms that it has checked by hand, with a source link and a date for each. It is a small catalogue, and the tools say so:
Category
Suppliers
Items
Email verification credits
MillionVerifier, Reoon, DeBounce, Emailable
13 credit packs and plans
Sound effect packs
SoundMorph, HISSandaROAR, Thomas Rex Beverly Audio
The prices are list prices observed on the dates shown, not live checkout quotes. Taxes and checkout fees are left unconfirmed unless the seller states them. Nothing can be ordered or paid through this server. Formquote’s PCB estimates need an operator key and are not part of it.
Tools
All four tools are read-only (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false).
Tool
Input
What it returns
compare_email_verification_prices
emails (1–10,000,000), existing_credits? by supplier, goal?, lang?
Packs and plans ranked within comparable groups (one-time vs monthly, per currency): price for this request, packs needed, cost allocated to this job, unconfirmed points, checked date, seller link
Which offers fit the use, the published price where one applies, failing or unconfirmed requirements (pageview caps, PV vs UV, styles chosen at the foundry), foundry link
list_formquote_catalog
category?, lang?
Every item with its listed price, billing period, checked date and seller page
goal is lowest_cash_now, lowest_job_cost or best_requirement_fit. lang (en, zh, ja, fr, de) picks the language of the Formquote page linked in the answer; notes recorded by Formquote stay in their original language (mostly Chinese), which chat models translate.
Every result has a short text answer and the same data as structuredContent. Input is checked before anything is sent: only counts and usage facts are accepted, never email addresses or files.
Example: compare_email_verification_prices with {"emails": 25000} (excerpt)
code
Formquote · email verification for 25,000 emails · goal: lowest cash now
13 offers from 4 suppliers: 10 eligible, 3 conditional, 0 not eligible. Result: partial.
Published prices observed by Formquote on the dates shown, not live checkout quotes. …
One-time · USD · ranked by price for this request, lowest first
1. Reoon · 25,000 credits — eligible
USD 29.66 for this request (1 pack)
checked 2026-10-08 (stale) · https://www.reoon.com/email-verifier/
2. Reoon · 10,000 credits — eligible
USD 35.70 for this request (3 packs) · cost allocated to this job USD 29.75
checked 2026-10-08 (stale) · https://www.reoon.com/email-verifier/
3. DeBounce · 5,000 credits — eligible
USD 50.00 for this request (5 packs) · cash needed now USD 50.00 · taxes included
…
Compare on Formquote: https://pcba-quote-lab.pages.dev/en/email-verification
(stale) marks a price past Formquote’s review window (7 days for email verification, 30 for sounds and fonts).
Connect it
ChatGPT
On chatgpt.com: Settings → Apps → Add (custom MCP server). Depending on your plan this sits under developer mode.
The server speaks MCP 2026-07-28 (stateless, server/discover) and the earlier handshake versions (2025-11-25, 2025-06-18, 2025-03-26). There are no sessions; every request stands alone.
The API behind it
The server is a thin wrapper over Formquote’s public quote API, documented at pcba-quote-lab.pages.dev/en/developers (OpenAPI 3.1): GET /api/v2/catalog and POST /api/v2/quotes for the three public categories. It caches identical requests for a few minutes, times out slow calls, never answers a failed call from an older result, and keeps a shared ceiling on calls so a burst can’t overload the API.
Privacy
The server keeps no logs and sets no cookies. It has no accounts and no sessions.
Tool inputs are counts and usage facts (how many emails, which licence use). They are sent to the Formquote API to compute the answer and are not stored by this server; Formquote’s API does not persist digital quote bodies either (privacy).
Anonymous counts. To see whether the connector is useful, it keeps daily totals with fixed labels only: the day, whether it was a connection, a tool list or a tool call, which tool and category, the outcome (ok, no match, invalid input, busy, upstream error) and the client family (ChatGPT, Claude, Cursor, VS Code, …, directory scanner, other). No IP address, no user or session id, no tool input, no User-Agent string, no time finer than the day. See src/counts.js and COUNTS.md.
Seller links open the seller’s own site, where its terms and privacy policy apply.
Develop
sh
npm install
npm test# unit tests with recorded API answers
npx wrangler dev # http://localhost:8787/mcp
node scripts/smoke.mjs http://localhost:8787/mcp
npx -y @modelcontextprotocol/inspector --cli http://localhost:8787/mcp --transport http --method tools/list
Deploying needs the Cloudflare account that owns the Worker (npx wrangler deploy). To run your own copy, remove or replace the d1_databases entry in wrangler.jsonc; without it nothing is counted.
Licence
The server code and examples: MIT. The catalogue, prices and notes it returns come from Formquote’s API; prices belong to their sellers and change without notice.