WonderFonT for AI assistants
WonderFonT sells original Hebrew and Latin font families. An assistant can learn what we sell, help a person choose fonts, connect their account, buy what is missing when the person allows it, and set the fonts up on a website or hand over files for a PDF, with the same rules as the website.
This page is the guide. The facts that change (prices, the number of families, the license version) are read live from the store and shown in the box above, and the tool list below is read from the running MCP server.
The three licenses
• Desktop, one time, per family: the font files (OTF) and the license, for local design work, PDFs, print and logos, for your business and its clients. Every weight of the family, and weights added to it later.
• Web, one time, per family, for 1, 5 or 25 registered sites: WonderFonT serves the family on those sites. No files.
• Web library, a subscription for 10, 50 or 100 sites: every published family, served on those sites while the subscription is paid (and 14 days after, the grace period). No files.
A web license or the library never allows downloading fonts, also not to make a PDF with a headless browser. A PDF needs a desktop license for that family. An independent desktop or one-time web purchase is never affected by the subscription ending.
Sites: example.com and www.example.com are one site; any other subdomain and every preview host is a separate site; a path is never a site. One library site may use many families and still counts once.
Prices
Prices come from the published price book, never from this page. Read them with get_pricing (MCP) or GET /api/v1/pricing and a family's own prices with get_font_details or GET /api/v1/catalog/families/{slug}. The amount that is charged is the one in a server quote (quote_purchase, valid 15 minutes). Desktop prices follow the family's number of weights.
What needs an account
Without an account: what WonderFonT is, prices, the whole catalog, recommendations, previews of your own text. With an account: what you own, sites and embed code, desktop files, purchases, favorites, collections and the team.
Connect an assistant (MCP)
• Signed in: https://wonderfont.art/mcp (Streamable HTTP). It answers 401 with a pointer to its OAuth metadata, and your assistant opens the sign-in page.
• No account: https://wonderfont.art/mcp/public, the public tools only. Add this one when your client cannot keep an optional login on one address.
Claude Code:
claude mcp add --transport http wonderfont https://wonderfont.art/mcpThen run /mcp in Claude Code and choose WonderFonT to sign in.
Claude (web and desktop): Settings, Connectors, Add custom connector, and paste https://wonderfont.art/mcp. Another MCP client: any client with Streamable HTTP and OAuth 2.1 works the same way.
Signing in: the browser opens WonderFonT. Type your email and press the link we send (or use Google). A new address becomes a new account at that moment, with its own workspace; there is no password and nothing to paste into the chat. Then pick the workspace and allow the permissions you want. The English site (wonderfont.art) and the Hebrew site (wonderfont.art/he) keep separate accounts, so the page asks which one.
Each connection works in one workspace. To work in another, connect again. See and disconnect every assistant under Account, Developers, Connected assistants.
Technical details: MCP protocol 2026-07-28 and the 2025 initialize handshake (2025-11-25, 2025-06-18, 2025-03-26), stateless, JSON responses. OAuth 2.1 with PKCE S256 only, the resource indicator https://wonderfont.art/mcp, client ID metadata documents or dynamic registration, iss on every redirect. Access tokens last one hour; refresh tokens last 90 days and change on every use. Metadata: /.well-known/oauth-protected-resource/mcp and /.well-known/oauth-authorization-server.
Scripts and automation can use an API key from Account, Developers instead (Authorization: Bearer wf_...), on the MCP endpoint or the REST API.
Permissions
A connection asks for permissions by name and the consent page lists them. A member of a team can give only a member's share: paying and team management belong to the owner.
• catalog:read, account:read, account:write: the catalog and your account.
• licenses:read: what the workspace owns.
• sites:read, sites:write, mappings:write: sites and which fonts they use.
• downloads:create: desktop files (only with a desktop license).
• billing:request: prepare quotes (a member's quote becomes a request to the owner).
• billing:execute: pay as the owner and accept the license for the purchases it makes. Owner only.
• collections, team, transfers and referrals: as on the website.
Having a font does not give billing permission, and billing permission does not create font rights: rights exist only after the payment provider confirms the payment.
Tools
Every tool answers the same shape: request_id, state, summary, data, warnings and next_actions. A refusal is a tool error with error.code, the API's own code and the step that fixes it.
Public (both endpoints):
• get_service_info: what WonderFonT sells, the licenses, how to connect and pay, links.
• get_pricing: current prices; with a family, its desktop and web prices.
• search_fonts: search the catalog, a page at a time.
• get_font_details: styles, weights, axes, scripts, coverage read from the files, pairings, prices.
• recommend_fonts: a ranked shortlist for a brief; signed in, what the workspace owns and what the rest costs.
• preview_fonts: your own text drawn with each family's real font file, and the characters it cannot draw.
Signed in:
• get_account_context: who is connected, the workspace, role, permissions and subscription.
• get_entitlements: desktop and web licenses apart, site use, windows, the subscription's dates.
• check_access: for given families, what is owned and the price of what is missing.
• list_sites, register_site, verify_site, update_site, remove_site: websites and their slots.
• get_site_fonts, configure_site_fonts, rollback_site_fonts: which family, weight and style each role uses, with revisions.
• get_embed_code: the exact stylesheet link and CSS for a site, with placement for HTML, Next.js, React, WordPress, Webflow, Wix and Shopify.
• diagnose_site_fonts: configuration, rights, what the stylesheet serves now, and the last page check, each as its own evidence.
• get_desktop_download: a 24 hour download link for desktop files, with a desktop license only.
• quote_purchase, execute_purchase, approve_purchase_request, get_order_status, list_orders: buying and receipts.
• manage_favorites, manage_collections: saved choices, the same as on the website.
• get_team, manage_team, transfer_site, get_referral: the team, handing a site to a client, the referral link.
• get_account_links: the pages kept on the website on purpose (keys, card, sessions, account deletion).
The same work is in the REST API: openapi.json. Recommendations: POST /api/v1/catalog/recommend. Previews: POST /api/v1/catalog/families/{slug}/preview. What is owned: GET /api/v1/workspaces/{id}/access.
Paying
1. check_access, so nothing owned is bought again. 2. quote_purchase: the server's amount in cents, what it grants and for how long. Send accept_license true only after the person agreed to the license. 3. execute_purchase: needs billing:execute and an owner. - A subscription change is charged to the subscription's card at once. - Where enabled, a one-time purchase is charged to a card the owner saved for assistant purchases. The first checkout an assistant opens offers to save it, and says so on the payment page. The owner can remove it under Account, Developers. - Otherwise, or when the bank needs the person (3-D Secure), the answer is PAYMENT_ACTION_REQUIRED with continuation_url. The person pays there; the assistant then calls get_order_status. The same order continues and is never charged twice. 4. Rights exist only after the payment provider's verified event. get_order_status says done when they do.
Card numbers, codes and passwords never go into the chat or a tool.
Subscriptions
quote_purchase with subscribe, plan_change (now, with proration), schedule_downgrade (at the end of the paid period), cancel (keeps access until the paid period ends, then 14 days of grace) or reactivate. A plan is never upgraded to make a site registration succeed: register_site answers SITE_LIMIT_REACHED with the options.
Websites
1. recommend_fonts with use web, then check_access. 2. register_site (or pick one from list_sites). 3. configure_site_fonts with dry_run true, then again with expected_revision. A weight the family does not have moves to its nearest real weight and the answer says so. A newer release of a family is listed, never applied for you. 4. get_embed_code and add the code to the site. The assistant needs its own access to the site's code for that; WonderFonT serves the fonts. 5. diagnose_site_fonts if something looks wrong.
The fonts are served by WonderFonT only to pages on the site's own addresses. Do not download or self-host them (for example with next/font): a web license is hosted only.
PDFs and print
1. recommend_fonts with use pdf (or print, logo, local) and the text's language. 2. check_access: owned desktop families come first. 3. Buy a desktop license only if needed, then get_desktop_download. 4. Read the LICENSE file in the download for embedding terms. A finished PDF and sending font files to others are different uses.
Errors
• AUTH_REQUIRED: connect or reconnect.
• INSUFFICIENT_SCOPE: the connection lacks that permission; reconnect and allow it, or ask the owner.
• WORKSPACE_ACCESS_DENIED: the id belongs to another workspace.
• OWNER_APPROVAL_REQUIRED: only the owner can do this.
• DESKTOP_LICENSE_REQUIRED, WEB_LICENSE_REQUIRED: the license is missing; the answer carries the price.
• SITE_LIMIT_REACHED: every slot is used; remove a site or quote a bigger plan.
• QUOTE_EXPIRED: get a new quote.
• PAYMENT_ACTION_REQUIRED, PAYMENT_PENDING: the person pays, or the payment is being checked; ask get_order_status.
• LICENSE_ACCEPTANCE_REQUIRED: the person accepts the current license.
• VERSION_CONFLICT: something changed meanwhile; read it again.
• RATE_LIMITED: wait a minute.
Limits
600 requests a minute for each connection, 120 a minute for each address without one, 30 previews a minute. Quotes last 15 minutes, download links 24 hours. A sample text is at most 200 characters.
Example conversations
Website: "Choose fonts for my bakery's site, Hebrew, warm and friendly." The assistant asks nothing it already knows, calls recommend_fonts (use web, script he, feel warm, roles heading and body), shows three families with preview_fonts, check_access says the library covers them, then register_site, configure_site_fonts and get_embed_code.
PDF: "I need a font for a Hebrew and English price list PDF." recommend_fonts (use pdf, script both), check_access shows one family already owned for desktop, the assistant offers it first, then get_desktop_download.
New customer: on /mcp/public the person explores and keeps a shortlist in the conversation. To buy, they add /mcp, sign in with their email (which creates the account), and the assistant continues from the same shortlist with check_access and quote_purchase.
Privacy and support
The text you preview is not stored. Tokens are kept only as hashes. Questions: support@wonderfont.art. Privacy: privacy@wonderfont.art.