mcp server
GleanMark Trademark Search
Search 13.7M+ USPTO trademarks. Clearance, phonetic matching, TTAB stats, analytics.
Description as published by the maintainer. Source
- version 1.1.0
- slowing
- retrieval
- analytics
slowing — Registry entry last updated 2026-02-19. Dashed tags are derived by ZBS Index from the published description, not stated by the maintainer.
What this server can do
61 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
analyze_prosecution_history(serial_number)- Analyze the full prosecution history of a trademark — narrative timeline of office actions, responses, examiner decisions, and current status, with examiner-behavior patterns. For authenticated users this launches asynchronously (usually done in under a minute; longer for large file histories) and returns a processing handle — then call get_prosecution_history_status to fetch the completed result. Tell the user it is running. Required: serial_number.
analyze_ttab_proceeding(quick_mode, proceeding_number)- Analyze a TTAB (Trademark Trial and Appeal Board) proceeding in depth — fetches and analyzes proceeding documents, identifies key arguments, and returns a structured summary with timeline, party positions, and strategic assessment. For authenticated full-mode runs this launches asynchronously (typically 1-2 minutes) and returns a processing handle — then call get_ttab_proceeding_analysis_status to fetch the completed result. Tell the user it is running. Required: proceeding_number.
check_brand_availability(brand_name, industries, nice_classes, business_description)- Quick brand availability check — combines domain availability with a trademark conflict signal. Returns a recommendation tier (avoid, probably avoid, promising, or no conflicts found). Good first step before a full clearance search. Required: brand_name.
check_domain_availability(tlds, brand_name)- Check domain availability for a brand name. Returns status (available, parked, commercially used, or taken) for each TLD, plus .com variations (e.g., getbrand.com, brandhq.com). Required: brand_name.
compare_marks(mark_a, mark_b, nice_classes)- Compare two trademarks for likelihood of confusion using DuPont-style analysis. Returns similarity scores and risk assessment. Required: mark_a, mark_b.
count_trademarks_by_attributes(limit, mark_types, nice_classes, status_filter, class_match_mode, color_match_mode, standard_characters, claimed_color_shades, claimed_color_families)- Count and preview USPTO marks by record attributes rather than owner identity, with mark-type, standard-character, and Nice-class breakdowns plus metadata coverage. Use this for drawing type, standard-character, Nice-class, status, and cross-attribute counts. It can intersect claimed-color criteria with those attributes; color-only counts, rankings, lists, and vocabulary are outside its scope.
get_class_relationships(limit, class_number, include_legacy, relationship_type)- Look up coordinated Nice classes or related Nice classes for a given class number. Required: class_number.
get_cohort_event_intervals(end_event, max_sample, start_event, cohort_event, cohort_date_to, end_event_codes, cohort_date_from, start_event_codes, cohort_event_codes)- Aggregate event-to-event pendency across a COHORT of marks — e.g. "average days from office action to publication for marks published in Q2 2026". Pick the cohort by an anchor event (preset: publication, notice_of_publication, registration, notice_of_allowance, abandonment, first_office_action — or raw event codes, trailing * = prefix) within a date window (max 366 days), and an interval start/end event. Returns avg/median/percentiles in days, how many cohort marks never had the start event, and example marks. Samples up to max_sample marks from the start of the window and says so when truncated. Use get_event_code_reference first if you need non-preset event codes. Required: cohort_date_from, cohort_date_to.
get_correspondent_marks(limit, search_term, status_filter, correspondent_id, correspondent_name, recent_window_days, canonical_correspondent_id)- Get all trademarks handled by a specific attorney/correspondent, with prosecution event counts and office action flags. Returns marks sorted by prosecution history length. Use this for attorney-specific mark queries.
get_correspondent_specialization(url_key, search_term, top_class_limit, top_client_limit, correspondent_name)- Summarize what a named correspondent specializes in, including top clients, top Nice classes, and prosecution-versus-TTAB profile. Use this when the user asks what a specific correspondent or attorney specializes in.
get_deadline_satisfaction_mapping(event_code, deadline_type)- Check whether a specific USPTO event code satisfies a specific deadline type such as office action response, opposition period, Section 8, or Section 15. Required: event_code, deadline_type.
get_event_code_reference(code, limit, search)- Look up USPTO event codes used in trademark prosecution. Search by exact code, code prefix, or keyword in the event description. Returns the code, human-readable description, and category.
get_event_status_mapping(limit, event_code)- Look up which USPTO status code and status definition most commonly follow a specific prosecution event code. Required: event_code.
get_fame_profile(mark_or_stem)- Get the full fame profile for a brand (by mark wording or brand stem): fame tier (broad/dilution-tier vs market-specific), the fame "path" it cleared (concentrated dominant family vs large multi-class portfolio), its famous class footprint, corporate-family portfolio size and class breadth, brand-stem crowding, and TTAB enforcement history. Use to explain WHY a mark is (or is not) famous, or to profile a senior mark before a §2(d) / opposition / dilution strategy. Circumstantial signal, not statutory fame proof. Required: mark_or_stem.
get_firm_correspondent_tasks(limit, firm_name, deadline_days, recent_oa_days)- Resolve a trademark law firm and return what its lawyers should focus on: overdue/next-window action-required deadlines plus recent Office Actions from both case-file events and prosecution documents, including ROA-filed and §2(d) indicators. Use this for questions like "what correspondent tasks should this firm focus on over the next 30 days?" or "what recent OAs does this law firm have?". Required: firm_name.
get_firm_deadlines(limit, days_back, firm_name, days_ahead, status_filter, include_opposition_period, include_informational_windows)- Get public, system-generated trademark deadlines across marks handled by a specific law firm. Uses public firm resolution and prosecution mappings only. Does not expose any workspace, client, reminder, or user-created deadline data. Required: firm_name.
get_firm_oa_outcomes(limit, firm_name)- Resolve a trademark law firm and compute mark-level Office Action outcome rates: how many firm-handled marks registered after receiving an OA, raw and excluding pending matters. Use this for questions like "what percentage registered after an OA?" or "OA success rate for this firm". Required: firm_name.
get_firm_top_correspondents(limit, firm_name)- Get the leading correspondents or attorneys inside one named law firm, ranked by filing volume with prosecution and TTAB activity counts. Use this when the user asks for top correspondents at a specific firm, such as "Who are the top correspondents at Fross Zelnick?" Required: firm_name.
get_latest_office_action(serial_number)- Get the latest office action for a trademark serial number, plus the latest recorded response if one exists, and the VERIFIED refusal grounds (with cited registration numbers) parsed from the OA text. Use refusal_grounds as the authoritative answer to "what is this OA about / what ground is the refusal" — never infer the basis from the document title or general knowledge. Required: serial_number.
get_mark_ai_summary(serial_number)- Get an AI-generated deep-dive summary of a specific trademark. Covers mark details, goods/services, status, owner, prosecution context, and any active legal proceedings. Required: serial_number.
get_mark_deadlines(limit, days_back, days_ahead, subject_name, serial_number, status_filter, include_opposition_period, include_informational_windows)- Get public, system-generated trademark deadlines for a specific mark. Accepts a serial number directly or resolves a mark name to a specific serial first. Does not expose any workspace, client, reminder, or user-created deadline data.
get_mark_international_profile(serial_number)- Get the international / foreign footprint of a U.S. trademark by serial number: its Madrid Protocol international registration (IR number, date, status, renewal), whether it was filed as a 66(a) Madrid extension, Madrid maintenance (§8/§15, renewal), and the foreign applications/registrations it claims as priority or basis (country, registration number, dates). Use this for ANY question about a mark's foreign, international, Madrid Protocol, WIPO, or EUIPO registrations. Data comes from USPTO records, so it is only available for marks with a USPTO record — it does not query WIPO/EUIPO live. Required: serial_number.
get_mark_owner_landscape(limit, mark_text, match_mode, nice_classes, status_filter)- Show which owners hold marks matching a shared trademark term and summarize what else those owners have in their broader portfolios. Use this for crowded owner-landscape questions like "Which companies own a trademark for COMET?" or "Who owns trademarks for GLEAN?" Returns the matching owners ranked by footprint, with each owner's wider portfolio context. Required: mark_text.
get_mark_prosecution_summary(serial_number)- Get a compact prosecution summary for a trademark serial number. Returns current status, document counts, latest office action/response dates, milestones, and the latest key event. Required: serial_number.
get_nice_classes(search_term, class_numbers)- Get information about Nice Classification classes used for trademark registration. Lookup specific class numbers or search for classes by keyword.
get_owner_ai_summary(normalized_owner)- Get an AI-generated strategic analysis of a trademark owner. Covers brand protection philosophy, litigation posture, portfolio evolution, class distribution, and likely future behavior. Results are cached for 30 days. Required: normalized_owner.
get_owner_deadlines(limit, days_back, days_ahead, owner_name, status_filter, include_opposition_period, include_informational_windows)- Get public, system-generated trademark deadlines across a specific owner’s marks. Uses public USPTO owner resolution only. Does not expose any workspace, client, reminder, or user-created deadline data. Required: owner_name.
get_owner_filing_trends(end_year, owner_name, start_year)- Get a trademark owner's filing trends over time — yearly filing counts broken down by Nice class. Shows how the owner's trademark portfolio has evolved. Required: owner_name.
get_owner_goods_keywords(limit, owner_name)- Get the most frequent goods/services keywords for a trademark owner. Shows what products and services the owner focuses on, useful for understanding their brand strategy and identifying class patterns. Required: owner_name.
get_owner_related_parties(limit, owner_name)- Find entities likely related to a trademark owner (predecessors, subsidiaries, sister companies) from USPTO evidence: shared ownership history on the same marks, shared filing addresses (agent addresses excluded), and shared distinctive name tokens. Returns evidence and a high/possible confidence tier per hit — treat 'possible' as tentative. Use when analyzing an owner's full corporate family, portfolio scope, or whether two owners of similar marks are actually affiliated. Pass the owner name exactly as recorded (resolve with resolve_trademark_subject first if ambiguous). Required: owner_name.
get_owner_ttab_enforcement(role, limit, date_to, date_from, owner_name, target_classes, proceeding_types, target_mark_types, include_extensions, target_class_match, include_owner_marks, target_claims_color, target_color_families)- Analyze one trademark owner's TTAB enforcement in a single call. Filters and counts only target marks that actually satisfy the requested class, mark-type, and claimed-color criteria; separately reports all targets attached to qualifying proceedings. Supports exact class-only questions with target_class_match=only. Claimed-color metadata identifies candidate marks but does not prove color was alleged in the pleading; use analyze_ttab_proceeding for that evidence. Required: owner_name.
get_owner_ttab_stats(year, limit, owner_name)- Get a compact TTAB history for one owner with substantive inter partes, opposition, cancellation, extension, appeal, and role breakdowns. Do not equate total records with initiated oppositions. Use get_owner_ttab_enforcement for date ranges or challenged-mark/class analysis. Required: owner_name.
get_prosecution_document(max_chars, text_query, document_id, document_code, document_date, serial_number, uspto_document_id)- Retrieve one specific USPTO prosecution document by the stable document_id returned from list_prosecution_documents, USPTO document id, code, or date. Returns the working USPTO document link, extraction/readability status, cached document text, and optional query-centered excerpts. Use text_query when the user asks what the document says about a particular issue. Required: serial_number.
get_prosecution_timeline(serial_number)- Get the prosecution timeline for a trademark — chronological list of office actions, responses, and key events (publication, registration, suspension, etc.). Raw data without AI analysis. Required: serial_number.
get_reference_lookup(code, limit, query, after_code, reference_type)- Look up USPTO or TTAB reference codes and small lookup tables such as status codes, statement types, legal entity types, Nice classes, design codes, and TTAB proceeding/status/role codes. Required: reference_type.
get_similar_marks(limit, mark_text, include_dead, nice_classes)- Find USPTO trademarks similar to a given mark name. Uses examiner-style knockout search with phonetic, trigram, and component matching to identify potential conflicts. Returns similarity_score (mark-only similarity) and confusion_score (blended mark + commercial overlap). Useful for trademark clearance searches. Required: mark_text.
get_top_filers(limit, end_date, filer_type, start_date, nice_classes)- Get a ranked filer table for a date range, filer type, and optional Nice classes. Use this when the user asks for top filers, top owners, top law firms, or top correspondents by class or date, such as "Who are the top 10 filers in Class 9 in 2025?" Returns the ranked rows with per-filer live, registered, and pending counts plus corpus totals. Required: start_date, end_date.
get_trademark_analytics(metric, end_date, group_by, nice_class, start_date, time_period)- Get aggregate statistics about USPTO trademark filings, registrations, and TTAB proceedings. Required: metric.
get_ttab_document(max_chars, text_query, entry_number, proceeding_number)- Retrieve and read one specific TTABVUE filing by proceeding number and entry number. Returns filing metadata, a working USPTO TTABVUE viewer link, direct PDF link when available, extraction/readability status, document text, and optional query-centered excerpts. Use get_ttab_proceeding_details first when the entry number is unknown. Required: proceeding_number, entry_number.
get_ttab_proceeding_details(proceeding_number)- Get raw details for a TTAB proceeding — parties, involved marks, counsel, and recent filings with entry numbers and working TTABVUE document links. Use get_ttab_document to read one selected filing. Use get_owner_ttab_enforcement for owner-wide distributions and analyze_ttab_proceeding for AI-powered merits analysis. Required: proceeding_number.
is_mark_famous(mark, class)- Check whether a trademark is FAMOUS — and, critically, famous FOR A SPECIFIC MARKET (you pass the applicant's Nice class as a PROXY for that market; fame is market-determined, there is no per-class fame doctrine). Fame is market-specific (Joseph Phelps Vineyards v. Fairmont): a mark famous for electronics is not automatically famous for fresh fruit. Returns is_famous, famous_in_class, the fame tier (broad/dilution-tier household name vs market-specific), the famous market footprint (expressed as Nice classes), portfolio size, and the corporate family's TTAB-as-plaintiff enforcement history. Use for "is X a famous trademark?", "is X famous for <goods>?", gauging a senior mark's §2(d) strength, or §43(c) dilution eligibility. It is a circumstantial signal, not statutory fame proof. Required: mark.
list_prosecution_documents(limit, serial_number)- List prosecution documents for a trademark serial number, including stable document identifiers, working USPTO links when available, extraction/readability status, office actions, responses, notices, and other dated filings. Use get_prosecution_document to read one selected document. Required: serial_number.
lookup_trademark(serial_number)- Get detailed information about a specific USPTO trademark by its serial number. Returns owner, status, filing dates, goods/services, correspondent (attorney/law firm of record — use this for "which firm represents/is correspondent for" questions), and more. Required: serial_number.
phonetic_search(limit, mark_text, include_dead, nice_classes, similarity_threshold)- Find trademarks whose WHOLE mark sounds similar to the given mark (Metaphone + trigram, whole-mark similarity threshold). LIMITS: it compares entire marks, so multi-word marks that merely CONTAIN a sound-alike word are invisible to it — "KWIK REWARDS" will NOT surface for a QUICK query even though KWIK sounds like QUICK. Thin or empty results are NEVER evidence that no sound-alike marks exist and NEVER support an availability/clearance conclusion: cross-check with list_marks_containing_term on the likely variant spellings (e.g. KWIK, QUIK, QWIK for QUICK — it enumerates ALL containing marks, including compounds), and answer availability questions with run_knockout_search, the actual clearance engine. Required: mark_text.
recommend_nice_classes(industry, business_description)- Recommend Nice trademark classes based on a business description. Returns the most relevant classes with confidence scores and explanations. Required: business_description.
research_office_action(serial_number)- Research the Office Action for a trademark — returns structured refusal categories, latest OA/response context, cited marks, and third-party registrations that support coexistence arguments. For authenticated users this launches asynchronously (typically 1-2 minutes) and returns a processing handle — then call get_office_action_research_status to fetch the completed result. Tell the user it is running. Use this before draft_oa_response for preliminary research. Required: serial_number.
resolve_trademark_subject(limit, entity, subject_name)- Resolve an owner, law firm, correspondent, mark, TTAB proceeding, client, or portfolio to the best trademark entity match. Resolving clients and portfolios requires authentication. Required: entity, subject_name.
run_dupont_analysis(serial_a, serial_b)- Run a full 13-factor DuPont likelihood of confusion analysis between two trademarks. Includes web research on the companies, market overlap analysis, and detailed factor-by-factor scoring. This is the most thorough confusion analysis available — use compare_marks for a quick check first. Required: serial_a, serial_b.
run_knockout_search(mark_name, owner_name, max_results, design_codes, include_dead, nice_classes, goods_description)- Run an examiner-style knockout search with scoring via the unified knockout engine — the same engine the GleanMark product uses. This is a PURE USPTO conflict search over 14M trademark records (exact, phonetic, trigram, component words, coordinated class expansion, doctrine of foreign equivalents, design codes) with mark-similarity and commercial-overlap scoring. Returns 4-tier risk-grouped results (very_high/high/medium/low) with confusion scores, plus a dead-mark "naming territory" sample. The top-line verdict is calibrated four-tier — CRITICAL CONFLICTS / ELEVATED RISK / MODERATE RISK / LOW RISK — with a one-line reason, so multi-name shortlists rank meaningfully. ALWAYS pass goods_description when the user has told you what they sell — the risk bands score goods/services relatedness, so an identical mark in a related-goods class reads VERY_HIGH only when the goods are supplied (class-only scoring understates it). It does NOT check domain availability and does NOT run a brand/web availability check — for that, use check_brand_availability instead. Most searches finish in under a minute; before calling, give the user a one-line heads-up that it may take up to a minute. Optional owner_name adds portfolio context — shows the applicant's existing marks in searched classes. Required: mark_name.
run_safe_analytics(limit, entity, metric, filters, subject_name, analysis_type)- Run a constrained business-level analytics query without exposing schema details. This is the default fallback for bespoke rankings, counts, snapshots, and timelines across owners, firms, and correspondents. Prefer this before chaining search, summary, or web research tools for aggregate business questions. Required: analysis_type, entity.
search_attorneys(limit, search_term, search_type)- Search for trademark attorneys or law firms. Returns prosecution statistics, TTAB proceeding counts (as plaintiff/defendant), and contact information. Required: search_term.
search_by_owner(limit, owner_name)- Search for trademark owners by name. Use this to resolve or list candidate owners, not for owner counts, rankings, prosecution snapshots, or recent activity checks. Returns matching companies/individuals with their trademark portfolio statistics (total marks, live/dead counts, registered/pending). Required: owner_name.
search_claimed_colors(mode, term, level, limit, match, colors, status, claimed, nice_class, serial_number, registration_number)- Search or count US trademarks by the colours they claim, parsed from USPTO colour-claim statements. Neither TESS nor its successor offers this. TWO levels: level="family" (16 families; searching "red" also finds dark red, maroon, burgundy) and level="shade" (the exact term as claimed, e.g. "dark red"). Use match="all" for "claims at least these colours", match="only" for "claims exactly these and nothing else", match="only_bw" to also tolerate black/white. Set claimed=false to count marks whose statement DISCLAIMS colour. Modes: count, top_owners, list_marks, vocabulary (list the valid families or shades with corpus counts), explain_term (which family a shade belongs to), by_serial (what one mark claims).
search_design_codes(mode, codes, limit, match, query, status, nice_class, serial_number, registration_number)- Find US trademarks by USPTO design code — the codes examiners assign to the visual elements of a logo (26.17.01 = straight bands, 24.11 = crowns). Accepts dotted (26.17.01) or packed (261701) form. USPTO design vocabulary is literal and narrow: it records "Bands, straight" where a person says "stripe", and has no entry for words like "swoosh", so a plain shape word resolves to a code through mode="search_codes" before marks can be counted or listed. Modes: count, top_owners, list_marks, by_serial (what codes one mark carries), describe_code, search_codes. Omitting mode infers it from the arguments supplied.
search_goods_services(mode, sort, text, limit, match_mode, nice_classes, status_filter, owner_contains)- Full-text search over the goods/services recitations of 14M USPTO marks — answers "who else claims X in their goods?" (competitive landscape, descriptiveness/crowded-field evidence, ID-drafting precedent). Keyword-based: the text is tokenized and matched against each mark's indexed goods keywords (match_mode all = every keyword must appear, any = at least one). Rows return a short excerpt around the matched clause, NOT the full recitation. mode=count answers "how many marks claim X" with class/status breakdowns; mode=top_owners ranks the owners claiming X — neither pulls rows. This searches goods/services TEXT, not mark names — for mark-name conflicts use run_knockout_search or search_trademarks. Required: text.
search_mark_statements(mode, text, limit, status, nice_class, serial_number, statement_type, registration_number)- Search the statements USPTO records on a trademark: disclaimer ("no claim is made to PIZZA apart from the mark"), description (the examiner's written description of the drawing — "the mark consists of a red and white striped awning"), translation (foreign wording), prior_marks (claimed ownership of earlier registrations). Answers "which marks disclaim PIZZA" and "which marks are described as stripes". Colour claims have their own tool (search_claimed_colors); goods text is served by search_trademarks. Modes: count, top_owners, list_marks, by_serial (every statement on one mark), statement_types.
search_trademarks(limit, query, nice_classes, status_filter)- Search the USPTO trademark database by name — a RANKED similarity/prefix search that returns the closest whole-mark matches (14M records). It is NOT an exhaustive contains-scan: multi-word marks that merely contain the queried word rank low and are usually cut (a KWIK query will miss KWIK REWARDS / KWIK KOPY). To enumerate ALL live marks containing a word — including compounds and respelled forms via USPTO pseudo-mark equivalents — use list_marks_containing_term instead. Thin results here are never proof a name is absent or available; availability questions belong to run_knockout_search. Required: query.
search_ttab_proceedings(limit, query, role_filter, type_filter, status_filter, owner_contains)- Search TTAB proceedings using the same discovery index as the GleanMark TTAB workspace. Use for broad proceeding discovery by party name, exact 8-digit proceeding number, 8-digit trademark serial number, or 7-digit registration number. Supports status, proceeding type, matched party role, and owner-name filters. For one known case after discovery, use get_ttab_proceeding_details; for owner enforcement statistics, use get_owner_ttab_enforcement. Required: query.
suggest_gs_descriptions(limit, query, classes, gs_type)- Search the USPTO Trademark ID Manual (pre-approved, surcharge-free goods & services identifications) by plain words. Call once per distinct product/service line (e.g. construction services and lighting products are two separate calls), not once per whole business. Returns selectable Term IDs; entries with {curly-brace} placeholders are fill-in templates. Required: query.
validate_gs_description(text, classes)- Check a draft goods & services description against the USPTO ID Manual, clause by clause (clauses split on ";"). Each clause comes back verbatim (selectable pre-approved entry), close (with up to 3 pre-approved substitutes), or freeform (subject to the USPTO $200/class free-form surcharge). Deterministic — no AI rewriting. Required: text.
web_research(mark_text, entity_name, nice_classes, research_type)- Research a company, trademark, or legal topic on the internet. Returns grounded results with source citations. Use for company background, recent news, common law trademark use, or case law research. Required: entity_name, research_type.
Last successful function declaration observed on . Source: https://gleanmark.com/mcp. We list what the server declared; we do not call any of these functions.
Endpoint status observed on . Source: https://gleanmark.com/mcp.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| Latest published version | 1.1.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-02-19 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| First listed in the MCP Registry | 2026-02-19 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| mcp tools declared | 61 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | gleanmark.com | |
| mcp endpoint status | ok | The server listed 61 functions when asked. | as of probe | gleanmark.com |
Where to get it
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json