MCP-Server

GleanMark Trademark Search

com.gleanmark/trademark-search
Recht & Compliance Suche & Recherche Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Searches and analyzes USPTO trademark records, including conflicts, prosecution histories, TTAB proceedings, ownership chains, deadlines, classifications, and brand availability signals.

analyze_prosecution_history
Analyze Prosecution History
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 used to retrieve the completed result once ready.
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
analyze_ttab_proceeding
Analyze a TTAB Proceeding
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 used to retrieve the completed result once ready.
Eingabeschema
{'type': 'object', 'required': ['proceeding_number'], 'properties': {'quick_mode': {'type': 'boolean', 'default': False, 'description': 'Quick mode skips lower-priority documents for faster results'}, 'proceeding_number': {'type': 'string', 'description': 'TTAB proceeding number (e.g., "91284756")'}}}
check_brand_availability
Check Brand Availability
Quick brand-name screen: checks whether the name's domains are registered and whether the .com site is in use, looks for similar registered trademarks in the given industries or classes, and returns a screening tier (avoid, probably avoid, promising, or no close conflicts surfaced) with the top conflicts and a domain snapshot. It is a first look, not a clearance search: it does not cover common-law use, state registrations or a full goods-relatedness analysis, so a result with no conflicts means none surfaced in this screen, not that the name is available. run_knockout_search is the fuller trademark conflict search.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['brand_name'], 'properties': {'brand_name': {'type': 'string', 'description': 'Brand name to check'}, 'industries': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Industry categories'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Nice classes to check against'}, 'business_description': {'type': 'string', 'description': 'Brief description of the business'}}}
check_domain_availability
Check Domain Availability
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).
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['brand_name'], 'properties': {'tlds': {'type': 'array', 'items': {'enum': ['com', 'ai', 'app', 'io', 'co'], 'type': 'string'}, 'default': ['com', 'ai', 'app', 'io', 'co'], 'description': 'TLDs to check. Defaults to com/ai/app/io/co when omitted.'}, 'brand_name': {'type': 'string', 'description': 'Brand name to check (e.g., "Moonlight Coffee")'}}}
compare_marks
Compare Two Marks for Confusion
Compare two trademarks for likelihood of confusion using DuPont-style analysis. Returns similarity scores and risk assessment.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['mark_a', 'mark_b'], 'properties': {'mark_a': {'type': 'string', 'description': 'First trademark to compare'}, 'mark_b': {'type': 'string', 'description': 'Second trademark to compare'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Nice classes for overlap analysis'}}}
Ausgabeschema
{'type': 'object', 'required': ['mark_a', 'mark_b', 'risk_level', 'risk_explanation', 'nice_class_overlap', 'dupont_factors_summary', 'similarity'], 'properties': {'mark_a': {'type': 'string'}, 'mark_b': {'type': 'string'}, 'risk_level': {'enum': ['High', 'Medium', 'Low'], 'type': 'string'}, 'similarity': {'type': 'object', 'required': ['visual_similarity', 'phonetic_similarity', 'trigram_similarity', 'overall_similarity'], 'properties': {'visual_similarity': {'type': 'number'}, 'overall_similarity': {'type': 'number'}, 'trigram_similarity': {'type': 'number'}, 'phonetic_similarity': {'type': 'number'}}}, 'risk_explanation': {'type': 'string'}, 'open_in_gleanmark': {'type': 'string'}, 'nice_class_overlap': {'type': 'boolean'}, 'dupont_factors_summary': {'type': 'array', 'items': {'type': 'string'}}}}
count_filings_by_period
Count Trademark Filings by Period
Counts U.S. trademark applications filed across the whole register in a date range, grouped by calendar year, month or day, with each period split into U.S.-filed and Madrid Protocol (79-series) applications and the change from the previous period. Answers questions such as how many trademark applications were filed in 2025 and how that compares with 2024, or which month of a year had the most filings. Counts are one per serial number by the filing date on the USPTO record; they are calendar periods, not USPTO fiscal-year statistics, and not class counts. Returns data_through, the latest filing date on the register; recent periods grow as late records arrive.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['start_date', 'end_date'], 'properties': {'end_date': {'type': 'string', 'description': 'Last filing date to count, YYYY-MM-DD, inclusive (e.g. 2025-12-31).'}, 'group_by': {'enum': ['year', 'month', 'day'], 'type': 'string', 'default': 'year', 'description': 'Period size. Daily counts cover at most about a year.'}, 'start_date': {'type': 'string', 'description': 'First filing date to count, YYYY-MM-DD (e.g. 2024-01-01).'}}}
count_trademarks_by_attributes
Count Trademarks by Attributes
Counts and previews USPTO marks by record attributes (drawing type, standard-character claim, Nice class, status, and combinations of these), with breakdowns by mark type, standard character and class, plus how complete the underlying data is. Claimed-color criteria can be combined with these attributes; counts by color alone, rankings, lists and color vocabulary are outside its scope.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 1}, 'mark_types': {'type': 'array', 'items': {'enum': ['Word', 'Stylized', 'Design', 'Combined', 'NonVisual', 'Unknown'], 'type': 'string'}}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}}, 'status_filter': {'enum': ['all', 'live', 'dead', 'registered', 'pending', 'cancelled', 'abandoned'], 'type': 'string', 'default': 'all', 'description': 'Use registered for currently live registrations; live also includes pending applications.'}, 'class_match_mode': {'enum': ['any', 'all'], 'type': 'string', 'default': 'any'}, 'color_match_mode': {'enum': ['all', 'only', 'only_bw'], 'type': 'string', 'default': 'all', 'description': 'all permits additional claimed colors; only requires exactly the selected colors; only_bw also permits black/white.'}, 'standard_characters': {'type': 'boolean'}, 'claimed_color_shades': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Exact canonical shades from the USPTO color claim.'}, 'claimed_color_families': {'type': 'array', 'items': {'enum': ['red', 'orange', 'yellow', 'green', 'blue', 'teal', 'purple', 'pink', 'brown', 'black', 'white', 'gray', 'beige', 'gold', 'silver', 'copper'], 'type': 'string'}, 'description': 'Normalized color families. Burgundy and maroon, for example, count as red.'}}}
fetch
Fetch
Retrieve the full USPTO record for one trademark, using an id returned by the search tool. Returns mark, owner, status, filing and registration dates, Nice classes, the goods and services text, and counsel of record, with a public gleanmark.com URL for citation.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Document id from a search result, e.g. "uspto-72303482". A bare serial number is also accepted.'}}}
get_chain_of_title
Get Chain Of Title
Traces who has owned a trademark over time: the ownership stages the USPTO recorded, from the original applicant or registrant through each later owner, plus any recorded assignment documents GleanMark holds. Answers questions such as who owns a mark now versus who filed it, whether it was sold, transferred or assigned, and how it reached its current owner, including chain-of-title and due-diligence questions. lookup_trademark shows only the current owner. Owners listed within one stage are joint owners, not successive ones. Not a title opinion.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number of the mark, e.g. "98725143". Registration numbers are not accepted â\x80\x94 resolve to a serial first with lookup_trademark or search_trademarks.'}}}
get_class_relationships
Get Related Nice Classes
Look up coordinated Nice classes or related Nice classes for a given class number.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['class_number'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'Maximum rows to return.'}, 'class_number': {'type': 'integer', 'maximum': 45, 'minimum': 1, 'description': 'Nice class number to inspect.'}, 'include_legacy': {'type': 'boolean', 'default': True, 'description': 'Include legacy US classes A, B, and 200 when returning coordinated classes.'}, 'relationship_type': {'enum': ['coordinated', 'related'], 'type': 'string', 'description': 'Whether to return USPTO coordinated classes or curated related classes.'}}}
get_cohort_event_intervals
Cohort Event Intervals
Measures the time between two prosecution events across a group of marks, e.g. the average days from Office Action to publication for marks published in Q2 2026. The group is chosen by an anchor event (preset: publication, notice_of_publication, registration, notice_of_allowance, abandonment or first_office_action, or raw event codes, where a trailing * matches a prefix) within a date window of up to 366 days; the interval runs from a start event to an end event. Returns the average, median and percentiles in days, how many marks in the group had no start event, and example marks. Samples up to max_sample marks from the start of the window and says when the sample is truncated. Event codes beyond the presets are listed by get_event_code_reference.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['cohort_date_from', 'cohort_date_to'], 'properties': {'end_event': {'enum': ['first_office_action', 'publication', 'notice_of_publication', 'registration', 'notice_of_allowance', 'abandonment'], 'type': 'string', 'description': 'Interval end event (first occurrence on/after the start event). Defaults to the cohort event itself.'}, 'max_sample': {'type': 'integer', 'maximum': 2000, 'minimum': 100, 'description': 'Max cohort marks to measure (default 1000, max 2000).'}, 'start_event': {'enum': ['first_office_action', 'publication', 'notice_of_publication', 'registration', 'notice_of_allowance', 'abandonment'], 'type': 'string', 'description': 'Interval start event (first occurrence on/before the cohort event). Defaults to first_office_action.'}, 'cohort_event': {'enum': ['first_office_action', 'publication', 'notice_of_publication', 'registration', 'notice_of_allowance', 'abandonment'], 'type': 'string', 'description': 'Preset anchor event defining cohort membership (e.g. publication = PUBO).'}, 'cohort_date_to': {'type': 'string', 'description': 'Cohort window end (YYYY-MM-DD). Required. Window max 366 days.'}, 'end_event_codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Alternative to end_event: raw event codes (trailing * = prefix).'}, 'cohort_date_from': {'type': 'string', 'description': 'Cohort window start (YYYY-MM-DD). Required.'}, 'start_event_codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Alternative to start_event: raw event codes (trailing * = prefix).'}, 'cohort_event_codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Alternative to cohort_event: raw USPTO event codes; trailing * matches a prefix (e.g. "NPUB*").'}}}
get_correspondent_marks
Marks for a Correspondent
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Maximum marks to return.'}, 'search_term': {'type': 'string', 'description': 'Attorney name to search for (e.g., "Todd Schneider"). Will find the best match.'}, 'status_filter': {'enum': ['all', 'pending', 'registered', 'live', 'dead'], 'type': 'string', 'default': 'all', 'description': 'Filter marks by status.'}, 'correspondent_id': {'type': 'string', 'description': 'Alias for canonical_correspondent_id.'}, 'correspondent_name': {'type': 'string', 'description': 'Alias for search_term. Preferred when the caller already knows this is a correspondent name.'}, 'recent_window_days': {'type': 'integer', 'default': 180, 'maximum': 730, 'minimum': 1, 'description': 'How many days back to count recent office actions. Use 90 for "last 3 months".'}, 'canonical_correspondent_id': {'type': 'string', 'description': 'UUID of the correspondent (from search_attorneys result). Use this if you already have the ID.'}}}
get_correspondent_specialization
Correspondent Specialization
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'url_key': {'type': 'string', 'description': 'Known correspondent url_key, if already resolved.'}, 'search_term': {'type': 'string', 'description': 'Correspondent or attorney name to resolve.'}, 'top_class_limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Maximum top Nice classes to return.'}, 'top_client_limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Maximum top clients to return.'}, 'correspondent_name': {'type': 'string', 'description': 'Alias for search_term.'}}}
Ausgabeschema
{'type': 'object', 'required': ['found', 'correspondent_name', 'url_key', 'practice_profile', 'prosecution_profile', 'ttab_profile', 'headline', 'summary'], 'properties': {'found': {'type': 'boolean'}, 'summary': {'type': 'string'}, 'url_key': {'type': 'string'}, 'headline': {'type': 'string'}, 'firm_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ttab_profile': {'type': 'object', 'required': ['total_ttab_proceedings', 'managed_ttab_proceedings', 'active_managed_ttab_proceedings', 'client_ttab_cases', 'managed_as_plaintiff', 'managed_as_defendant'], 'properties': {'client_ttab_cases': {'type': 'integer'}, 'managed_as_defendant': {'type': 'integer'}, 'managed_as_plaintiff': {'type': 'integer'}, 'total_ttab_proceedings': {'type': 'integer'}, 'managed_ttab_proceedings': {'type': 'integer'}, 'active_managed_ttab_proceedings': {'type': 'integer'}}}, 'primary_email': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'firm_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'practice_profile': {'type': 'object', 'required': ['emphasis', 'narrative'], 'properties': {'emphasis': {'type': 'string'}, 'narrative': {'type': 'string'}}}, 'correspondent_name': {'type': 'string'}, 'prosecution_profile': {'type': 'object', 'required': ['total_marks', 'live_marks', 'total_owner_clients'], 'properties': {'live_marks': {'type': 'integer'}, 'total_marks': {'type': 'integer'}, 'total_owner_clients': {'type': 'integer'}}}, 'correspondent_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}
get_deadline_satisfaction_mapping
Deadline Satisfaction Reference
Check what role a USPTO event code plays for a deadline type (satisfies it, triggers it, abandons it, suspends it) per the deadline vocabulary table deadline_event_roles — office action response, opposition period, Statement of Use, Section 8/9/15, post-registration office action, ITU notice.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['event_code', 'deadline_type'], 'properties': {'event_code': {'type': 'string', 'description': 'USPTO event code to inspect.'}, 'deadline_type': {'enum': ['office_action_response', 'opposition_period', 'section_15_initial', 'section_8_and_9_renewal', 'section_8_and_9_subsequent', 'section_8_initial', 'statement_of_use', 'post_registration_office_action', 'itu_notice_response'], 'type': 'string', 'description': 'Deadline family to test against.'}}}
get_event_code_reference
USPTO Event Code Reference
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'code': {'type': 'string', 'description': 'Exact USPTO event code or prefix (e.g., "OAIN" for exact, "OA" for prefix match).'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return (default 20).'}, 'search': {'type': 'string', 'description': 'Keyword to search in event descriptions (e.g., "office action", "abandoned").'}}}
get_event_status_mapping
USPTO Event Status Reference
Look up which USPTO status code and status definition most commonly follow a specific prosecution event code.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['event_code'], 'properties': {'limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Maximum mappings to return.'}, 'event_code': {'type': 'string', 'description': 'USPTO event code to inspect.'}}}
get_fame_profile
Fame Profile for a Mark
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['mark_or_stem'], 'properties': {'mark_or_stem': {'type': 'string', 'description': 'A mark ("THE DISNEY STORE") or a bare brand stem ("disney"). Both resolve to the same family.'}}}
get_firm_correspondent_tasks
Firm Correspondent Tasks
Resolves a trademark law firm and returns its action-required work: overdue deadlines and those in the next window, plus recent Office Actions from case-file events and prosecution documents, with flags for a filed response and for Section 2(d) refusals. Answers questions such as which correspondent tasks a firm has in the next 30 days or which recent Office Actions a firm has received.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['firm_name'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum deadlines/recent OAs/task previews to return.'}, 'firm_name': {'type': 'string', 'description': 'Law firm name or normalized key, e.g. "Imani Law" or "imanilawllp".'}, 'deadline_days': {'type': 'integer', 'default': 30, 'maximum': 365, 'minimum': 1, 'description': 'How many days ahead to include action-required deadlines. Overdue items still in grace are also included.'}, 'recent_oa_days': {'type': 'integer', 'default': 90, 'maximum': 730, 'minimum': 1, 'description': 'How many days back to include recent Office Actions.'}}}
get_firm_deadlines
Firm Deadlines
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['firm_name'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum number of deadline rows to return. Defaults to 50.'}, 'days_back': {'type': 'integer', 'maximum': 3650, 'minimum': 0, 'description': 'How far back to include overdue or recently resolved deadlines. Defaults to 60 days.'}, 'firm_name': {'type': 'string', 'description': 'Law firm name to resolve and analyze.'}, 'days_ahead': {'type': 'integer', 'maximum': 3650, 'minimum': 1, 'description': 'How far forward to look. Defaults to 365 days.'}, 'status_filter': {'enum': ['active', 'pending', 'overdue', 'satisfied', 'cancelled', 'all'], 'type': 'string', 'description': 'Deadline status filter. Defaults to active.'}, 'include_opposition_period': {'type': 'boolean', 'description': 'Deprecated alias for include_informational_windows. Defaults to false.'}, 'include_informational_windows': {'type': 'boolean', 'description': 'Include informational review windows such as publication opposition windows. Defaults to false.'}}}
Ausgabeschema
{'type': 'object', 'required': ['title', 'total', 'returned', 'is_partial', 'days_ahead', 'days_back', 'status_filter', 'include_opposition_period', 'include_informational_windows', 'counts_by_status', 'counts_by_type', 'deadlines', 'firm_name', 'matched_mark_count'], 'properties': {'title': {'type': 'string'}, 'total': {'type': 'integer'}, 'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'returned': {'type': 'integer'}, 'days_back': {'type': 'integer'}, 'deadlines': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'deadline_type', 'deadline_type_code', 'event_category', 'action_required_by', 'is_correspondent_action_required', 'counts_as_docket_deadline', 'deadline_date', 'days_until_deadline'], 'properties': {'id': {'type': 'string'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'owner_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'deadline_date': {'type': 'string'}, 'deadline_type': {'type': 'string'}, 'serial_number': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'event_category': {'type': 'string'}, 'priority_level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'action_required_by': {'type': 'string'}, 'deadline_type_code': {'type': 'string'}, 'days_until_deadline': {'type': 'integer'}, 'mark_identification': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'consequences_if_missed': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'counts_as_docket_deadline': {'type': 'boolean'}, 'is_correspondent_action_required': {'type': 'boolean'}}}}, 'firm_name': {'type': 'string'}, 'days_ahead': {'type': 'integer'}, 'is_partial': {'type': 'boolean'}, 'status_filter': {'type': 'string'}, 'counts_by_type': {'type': 'object', 'additionalProperties': {'type': 'integer'}}, 'firm_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'counts_by_status': {'type': 'object', 'additionalProperties': {'type': 'integer'}}, 'open_in_gleanmark': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matched_mark_count': {'type': 'integer'}, 'include_opposition_period': {'type': 'boolean'}, 'include_informational_windows': {'type': 'boolean'}}}
get_firm_oa_outcomes
Firm Office Action Outcomes
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".
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['firm_name'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum examples to return in each outcome bucket.'}, 'firm_name': {'type': 'string', 'description': 'Law firm name or normalized key, e.g. "Imani Law" or "imanilawllp".'}}}
get_firm_top_correspondents
Top Correspondents at a Firm
Ranks the correspondents or attorneys within one named law firm by filing volume, with prosecution and TTAB activity counts. Answers questions such as who the top correspondents at Fross Zelnick Lehrman & Zissu are.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['firm_name'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'Maximum correspondents to return.'}, 'firm_name': {'type': 'string', 'description': 'Law firm name or normalized firm key.'}}}
Ausgabeschema
{'type': 'object', 'required': ['firm_name', 'total_correspondents', 'returned', 'headline', 'summary', 'leader_total_filings', 'presentation'], 'properties': {'summary': {'type': 'string'}, 'headline': {'type': 'string'}, 'returned': {'type': 'integer'}, 'firm_name': {'type': 'string'}, 'leader_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'presentation': {'type': 'object', 'required': ['title', 'rows'], 'properties': {'cta': {'anyOf': [{'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}}, {'type': 'null'}]}, 'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'title', 'metrics'], 'properties': {'rank': {'type': 'integer'}, 'title': {'type': 'string'}, 'badges': {'type': 'array', 'items': {'type': 'string'}}, 'metrics': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'subtitle': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'subtitle_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}, 'title': {'type': 'string'}, 'metrics': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'subtitle': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'firm_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'leader_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'leader_total_filings': {'type': 'integer'}, 'total_correspondents': {'type': 'integer'}}}
get_latest_office_action
Latest Office Action for a Mark
Returns the most recent Office Action for a trademark serial number, the latest recorded response if there is one, and the refusal grounds parsed from the Office Action text, with the cited registration numbers. refusal_grounds is taken from the text of the action, not from the document title.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
get_mark_ai_summary
AI Summary of a Mark
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
get_mark_deadlines
Deadlines for a Mark
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum number of deadline rows to return. Defaults to 50.'}, 'days_back': {'type': 'integer', 'maximum': 3650, 'minimum': 0, 'description': 'How far back to include overdue or recently resolved deadlines. Defaults to 60 days.'}, 'days_ahead': {'type': 'integer', 'maximum': 3650, 'minimum': 1, 'description': 'How far forward to look. Defaults to 365 days.'}, 'subject_name': {'type': 'string', 'description': 'Specific mark text or serial-number-like query. Use when the user names the mark instead of giving a serial.'}, 'serial_number': {'type': 'string', 'description': 'USPTO serial number for the specific mark.'}, 'status_filter': {'enum': ['active', 'pending', 'overdue', 'satisfied', 'cancelled', 'all'], 'type': 'string', 'description': 'Deadline status filter. Defaults to active.'}, 'include_opposition_period': {'type': 'boolean', 'description': 'Deprecated alias for include_informational_windows. Defaults to false.'}, 'include_informational_windows': {'type': 'boolean', 'description': 'Include informational review windows such as publication opposition windows. Defaults to false.'}}}
Ausgabeschema
{'type': 'object', 'required': ['title', 'total', 'returned', 'is_partial', 'days_ahead', 'days_back', 'status_filter', 'include_opposition_period', 'include_informational_windows', 'counts_by_status', 'counts_by_type', 'deadlines'], 'properties': {'title': {'type': 'string'}, 'total': {'type': 'integer'}, 'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'returned': {'type': 'integer'}, 'days_back': {'type': 'integer'}, 'deadlines': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'deadline_type', 'deadline_type_code', 'event_category', 'action_required_by', 'is_correspondent_action_required', 'counts_as_docket_deadline', 'deadline_date', 'days_until_deadline'], 'properties': {'id': {'type': 'string'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'owner_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'deadline_date': {'type': 'string'}, 'deadline_type': {'type': 'string'}, 'serial_number': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'event_category': {'type': 'string'}, 'priority_level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'action_required_by': {'type': 'string'}, 'deadline_type_code': {'type': 'string'}, 'days_until_deadline': {'type': 'integer'}, 'mark_identification': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'consequences_if_missed': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'counts_as_docket_deadline': {'type': 'boolean'}, 'is_correspondent_action_required': {'type': 'boolean'}}}}, 'mark_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'days_ahead': {'type': 'integer'}, 'is_partial': {'type': 'boolean'}, 'owner_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'serial_number': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status_filter': {'type': 'string'}, 'counts_by_type': {'type': 'object', 'additionalProperties': {'type': 'integer'}}, 'counts_by_status': {'type': 'object', 'additionalProperties': {'type': 'integer'}}, 'open_in_gleanmark': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'include_opposition_period': {'type': 'boolean'}, 'include_informational_windows': {'type': 'boolean'}}}
get_mark_international_profile
International Filings for a Mark
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
get_mark_owner_landscape
Owner Landscape for a Mark
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['mark_text'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 15, 'minimum': 1, 'description': 'Maximum number of owners to return.'}, 'mark_text': {'type': 'string', 'description': 'Trademark term to analyze across owners, such as COMET or GLOW.'}, 'match_mode': {'enum': ['contains', 'exact', 'starts_with'], 'type': 'string', 'default': 'contains', 'description': 'How to match the mark text: contains, exact, or starts_with.'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}, 'description': 'Optional Nice classes to narrow the landscape.'}, 'status_filter': {'enum': ['all', 'live', 'dead', 'registered', 'pending'], 'type': 'string', 'default': 'live', 'description': 'Optional status filter. Default is live.'}}}
Ausgabeschema
{'type': 'object', 'required': ['title', 'headline', 'summary', 'mark_text', 'match_mode', 'status_filter', 'nice_classes', 'total_matching_marks', 'total_matching_live_marks', 'total_matching_owners', 'returned', 'leader_matching_mark_count', 'leader_total_portfolio_mark_count'], 'properties': {'title': {'type': 'string'}, 'owners': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'owner_name', 'matching_mark_count'], 'properties': {'rank': {'type': 'integer'}, 'owner_name': {'type': 'string'}, 'share_percent': {'type': 'number'}, 'live_mark_count': {'type': 'integer'}, 'owner_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pending_mark_count': {'type': 'integer'}, 'matching_mark_count': {'type': 'integer'}, 'registered_mark_count': {'type': 'integer'}}}}, 'summary': {'type': 'string'}, 'headline': {'type': 'string'}, 'returned': {'type': 'integer'}, 'mark_text': {'type': 'string'}, 'match_mode': {'enum': ['contains', 'exact', 'starts_with'], 'type': 'string'}, 'leader_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'status_filter': {'enum': ['all', 'live', 'dead', 'registered', 'pending'], 'type': 'string'}, 'leader_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'total_matching_marks': {'type': 'integer'}, 'total_matching_owners': {'type': 'integer'}, 'total_matching_live_marks': {'type': 'integer'}, 'leader_matching_mark_count': {'type': 'integer'}, 'leader_total_portfolio_mark_count': {'type': 'integer'}}}
get_mark_prosecution_summary
Prosecution Summary for a Mark
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
get_nice_classes
Look Up Nice Classes
Get information about Nice Classification classes used for trademark registration. Lookup specific class numbers or search for classes by keyword.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'search_term': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Search term to find relevant classes (e.g., "software", "clothing", "restaurant")'}, 'class_numbers': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}, 'maxItems': 45, 'description': 'Specific class numbers to look up (1-45)'}}}
Ausgabeschema
{'type': 'object', 'required': ['classes'], 'properties': {'classes': {'type': 'array', 'items': {'type': 'object', 'properties': {'title': {'type': 'string'}, 'category': {'enum': ['Goods', 'Services'], 'type': 'string'}, 'examples': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}, 'class_number': {'type': 'integer'}}}}, 'open_in_gleanmark': {'type': 'string'}}}
get_owner_ai_summary
AI Summary of an 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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['normalized_owner'], 'properties': {'normalized_owner': {'type': 'string', 'description': 'Normalized owner name (lowercase, no punctuation, e.g., "appleinc", "homeboxofficeinc"). Use search_by_owner first to find the correct normalized name.'}}}
get_owner_deadlines
Deadlines for an Owner
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['owner_name'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum number of deadline rows to return. Defaults to 50.'}, 'days_back': {'type': 'integer', 'maximum': 3650, 'minimum': 0, 'description': 'How far back to include overdue or recently resolved deadlines. Defaults to 60 days.'}, 'days_ahead': {'type': 'integer', 'maximum': 3650, 'minimum': 1, 'description': 'How far forward to look. Defaults to 365 days.'}, 'owner_name': {'type': 'string', 'description': 'Owner name to resolve and analyze.'}, 'status_filter': {'enum': ['active', 'pending', 'overdue', 'satisfied', 'cancelled', 'all'], 'type': 'string', 'description': 'Deadline status filter. Defaults to active.'}, 'include_opposition_period': {'type': 'boolean', 'description': 'Deprecated alias for include_informational_windows. Defaults to false.'}, 'include_informational_windows': {'type': 'boolean', 'description': 'Include informational review windows such as publication opposition windows. Defaults to false.'}}}
Ausgabeschema
{'type': 'object', 'required': ['title', 'total', 'returned', 'is_partial', 'days_ahead', 'days_back', 'status_filter', 'include_opposition_period', 'include_informational_windows', 'counts_by_status', 'counts_by_type', 'deadlines', 'owner_name', 'matched_mark_count'], 'properties': {'title': {'type': 'string'}, 'total': {'type': 'integer'}, 'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'returned': {'type': 'integer'}, 'days_back': {'type': 'integer'}, 'deadlines': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'deadline_type', 'deadline_type_code', 'event_category', 'action_required_by', 'is_correspondent_action_required', 'counts_as_docket_deadline', 'deadline_date', 'days_until_deadline'], 'properties': {'id': {'type': 'string'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'owner_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'deadline_date': {'type': 'string'}, 'deadline_type': {'type': 'string'}, 'serial_number': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'event_category': {'type': 'string'}, 'priority_level': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'action_required_by': {'type': 'string'}, 'deadline_type_code': {'type': 'string'}, 'days_until_deadline': {'type': 'integer'}, 'mark_identification': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'consequences_if_missed': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'counts_as_docket_deadline': {'type': 'boolean'}, 'is_correspondent_action_required': {'type': 'boolean'}}}}, 'days_ahead': {'type': 'integer'}, 'is_partial': {'type': 'boolean'}, 'owner_name': {'type': 'string'}, 'status_filter': {'type': 'string'}, 'counts_by_type': {'type': 'object', 'additionalProperties': {'type': 'integer'}}, 'counts_by_status': {'type': 'object', 'additionalProperties': {'type': 'integer'}}, 'owner_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'open_in_gleanmark': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matched_mark_count': {'type': 'integer'}, 'include_opposition_period': {'type': 'boolean'}, 'include_informational_windows': {'type': 'boolean'}}}
get_owner_filing_trends
Owner Filing Trends
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['owner_name'], 'properties': {'end_year': {'type': 'integer', 'maximum': 2030, 'description': 'End year (default: current year)'}, 'owner_name': {'type': 'string', 'description': 'Owner name as shown in USPTO records (e.g., "NIKE, INC."). Use search_by_owner first to find the exact name.'}, 'start_year': {'type': 'integer', 'minimum': 1870, 'description': 'Start year (default: 2000)'}}}
get_owner_goods_keywords
Owner Goods & Services Keywords
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['owner_name'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 10, 'description': 'Max keywords to return'}, 'owner_name': {'type': 'string', 'description': 'Owner name as shown in USPTO records (e.g., "NIKE, INC."). Use search_by_owner first to find the exact name.'}}}
get_owner_related_parties
Likely Related Parties for an Owner
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).
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['owner_name'], 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum related parties to return'}, 'owner_name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Owner name as recorded at the USPTO (e.g., "Netflix, Inc."). Normalized internally to the owner key.'}}}
get_owner_ttab_enforcement
TTAB Enforcement History for an Owner
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['owner_name'], 'properties': {'role': {'enum': ['plaintiff', 'defendant', 'any'], 'type': 'string', 'default': 'plaintiff', 'description': 'Use plaintiff for proceedings the owner initiated.'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1}, 'date_to': {'type': 'string', 'description': 'Inclusive filing-date end in YYYY-MM-DD format.'}, 'date_from': {'type': 'string', 'description': 'Inclusive filing-date start in YYYY-MM-DD format.'}, 'owner_name': {'type': 'string', 'description': 'Owner name, including a likely typo such as "Niked" for NIKE, Inc.'}, 'target_classes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}, 'description': 'Nice classes required on the qualifying challenged/target marks.'}, 'proceeding_types': {'type': 'array', 'items': {'enum': ['OPP', 'CAN', 'CNU', 'INT', 'EXT'], 'type': 'string'}, 'default': ['OPP', 'CAN']}, 'target_mark_types': {'type': 'array', 'items': {'enum': ['Word', 'Stylized', 'Design', 'Combined', 'NonVisual', 'Unknown'], 'type': 'string'}}, 'include_extensions': {'type': 'boolean', 'default': False, 'description': 'Include Extensions of Time to Oppose, reported separately from substantive cases.'}, 'target_class_match': {'enum': ['any', 'all', 'only'], 'type': 'string', 'default': 'any', 'description': 'any = at least one selected class; all = every selected class; only = exactly the selected class set and no others.'}, 'include_owner_marks': {'type': 'boolean', 'default': False, 'description': "Include the enforcing owner's asserted marks. Leave false for class/type/color target lists to keep the result compact."}, 'target_claims_color': {'type': 'boolean', 'description': 'When true, require a USPTO color claim on each qualifying target mark.'}, 'target_color_families': {'type': 'array', 'items': {'enum': ['red', 'orange', 'yellow', 'green', 'blue', 'teal', 'purple', 'pink', 'brown', 'black', 'white', 'gray', 'beige', 'gold', 'silver', 'copper'], 'type': 'string'}, 'description': 'Optional normalized color families that qualifying target marks must claim.'}}}
get_owner_ttab_stats
TTAB Statistics for an Owner
Returns a compact TTAB history for one owner: counts of inter partes proceedings, oppositions, cancellations, extensions of time to oppose and appeals, broken down by the owner's role. The total counts every record, including extensions and cases the owner defended, so it is not the number of oppositions the owner started. get_owner_ttab_enforcement covers date ranges and the marks and classes challenged.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['owner_name'], 'properties': {'year': {'type': 'integer', 'maximum': 2030, 'minimum': 2000, 'description': 'Filter to a specific year'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1}, 'owner_name': {'type': 'string', 'description': 'Owner name to search for'}}}
get_prosecution_document
Get a Prosecution Document
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. Call with serial_number alone and it returns the list of documents on file (newest first) so you can pick one — no separate list_prosecution_documents call needed.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'max_chars': {'type': 'integer', 'default': 9000, 'maximum': 9000, 'minimum': 1000}, 'text_query': {'type': 'string', 'description': 'Optional word or phrase; returns up to five excerpts centered on matches.'}, 'document_id': {'type': 'string', 'description': 'Stable GleanMark document UUID; the exact selector. Omit every selector to get the list of documents for this serial and pick one from it.'}, 'document_code': {'type': 'string', 'description': 'Document code such as NFIN, FREF, ROA, or RFR.'}, 'document_date': {'type': 'string', 'description': 'Exact document date in YYYY-MM-DD.'}, 'serial_number': {'type': 'string', 'description': 'Eight-digit USPTO serial number.'}, 'uspto_document_id': {'type': 'string', 'description': 'USPTO document identifier from list_prosecution_documents.'}}}
get_prosecution_timeline
Prosecution Timeline
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
get_reference_lookup
Reference Data Lookup
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['reference_type'], 'properties': {'code': {'type': 'string', 'description': 'Exact code to look up when known.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Maximum entries to return.'}, 'query': {'type': 'string', 'description': 'Free-text search across code descriptions and labels.'}, 'after_code': {'type': 'string', 'description': 'Cursor from next_after_code for the next page when browsing a reference table without code/query filters.'}, 'reference_type': {'enum': ['nice_class', 'uspto_event', 'uspto_status', 'uspto_statement_type', 'uspto_legal_entity_type', 'uspto_party_type', 'uspto_mark_drawing_code', 'uspto_mark_type', 'uspto_us_class', 'uspto_entry_type', 'uspto_design_code', 'ttab_entry', 'ttab_proceeding_type', 'ttab_status', 'ttab_role', 'ttab_address_type'], 'type': 'string', 'description': 'Which small lookup/reference table to search.'}}}
get_similar_marks
Find Similar Marks
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['mark_text'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 15, 'minimum': 1, 'description': 'Maximum number of similar marks to return'}, 'mark_text': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Trademark name to find similar marks for'}, 'include_dead': {'type': 'boolean', 'default': False, 'description': 'Include dead/abandoned trademarks in results'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}, 'maxItems': 5, 'description': 'Filter by Nice Classification classes (similar marks in same classes are higher risk)'}}}
Ausgabeschema
{'type': 'object', 'required': ['query_mark', 'risk_summary', 'similar_marks'], 'properties': {'query_mark': {'type': 'string'}, 'risk_summary': {'type': 'string'}, 'similar_marks': {'type': 'array', 'items': {'type': 'object', 'properties': {'owner': {'type': 'string'}, 'status': {'type': 'string'}, 'mark_name': {'type': 'string'}, 'detail_url': {'type': 'string'}, 'risk_level': {'enum': ['High', 'Medium', 'Low'], 'type': 'string'}, 'filing_date': {'type': 'string'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'serial_number': {'type': 'string'}, 'owner_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'similarity_score': {'type': 'number'}}}}, 'open_in_gleanmark': {'type': 'string'}}}
get_top_filers
Top Trademark Filers
Get a ranked filer table for a date range, filer type, and optional Nice classes. Handles questions like "Who are the top 10 filers in Class 9 in 2025?" Returns ranked rows with per-filer live, registered, and pending counts plus corpus totals. A single call covers the full ranked list: `limit` (up to 100) sets the number of rows and the date range may span multiple years. `offset` reaches ranks beyond 100 or a specific band (ranks 40-45 = `limit: 6, offset: 39`).
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['start_date', 'end_date'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of ranked filers to return. Up to 100 in a single call.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Rank to start from, 0-based. Use with limit to reach deeper bands: ranks 40-45 are limit 6, offset 39. Ranks in the response already account for this.'}, 'rank_by': {'enum': ['filings', 'registrations', 'success_rate'], 'type': 'string', 'default': 'filings', 'description': "What to order by. 'filings' is raw volume and is dominated by high-volume online filing services. 'success_rate' ranks by registrations as a share of DECIDED outcomes (registered vs abandoned), which surfaces quality rather than throughput. Every response carries success_rate_percent and supplemental_percent regardless of ordering."}, 'end_date': {'type': 'string', 'description': 'Inclusive end date in YYYY-MM-DD format.'}, 'filer_type': {'enum': ['owner', 'firm', 'correspondent'], 'type': 'string', 'default': 'owner', 'description': 'Whether to rank owners, law firms, or individual correspondents.'}, 'start_date': {'type': 'string', 'description': 'Inclusive start date in YYYY-MM-DD format.'}, 'min_filings': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Minimum filings a filer needs to appear. Defaults to 25 when rank_by is success_rate, 0 otherwise. Required for rate rankings: without a floor a filer with 2 marks and 2 registrations scores 100% and outranks a firm that won 900 of 1,000.'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}, 'description': 'Optional Nice classes to filter by. Use integers like 42 or 9.'}, 'filer_profile': {'enum': ['all', 'law_firm', 'full_service', 'prosecution_only', 'filing_service', 'in_house'], 'type': 'string', 'default': 'all', 'description': 'Restrict to a kind of filer. Firm rankings only. \'filing_service\' is a curated, human-verified list of productized high-volume filing operations (LegalZoom, Rocket Lawyer, Swyft and similar) â\x80\x94 use \'law_firm\' to EXCLUDE them, which is what a user means by "exclude the agencies/factories". \'full_service\' is a law firm that litigates (files TTAB oppositions/cancellations); \'prosecution_only\' is a law firm that mostly does not â\x80\x94 that is practice scope, NOT a judgment about quality, and prosecution-only firms are entirely legitimate. \'in_house\' is a company\'s own trademark department (Mattel, Disney), not a firm serving clients.'}}}
Ausgabeschema
{'type': 'object', 'required': ['title', 'headline', 'summary', 'filer_type', 'start_date', 'end_date', 'nice_classes', 'total_matching_filings', 'total_matching_filers', 'returned', 'leader_filing_count', 'presentation'], 'properties': {'title': {'type': 'string'}, 'summary': {'type': 'string'}, 'end_date': {'type': 'string'}, 'headline': {'type': 'string'}, 'returned': {'type': 'integer'}, 'filer_type': {'enum': ['owner', 'firm', 'correspondent'], 'type': 'string'}, 'start_date': {'type': 'string'}, 'leader_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'presentation': {'type': 'object', 'required': ['title', 'rows'], 'properties': {'cta': {'anyOf': [{'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}}, {'type': 'null'}]}, 'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'title', 'metrics'], 'properties': {'rank': {'type': 'integer'}, 'title': {'type': 'string'}, 'badges': {'type': 'array', 'items': {'type': 'string'}}, 'metrics': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'subtitle': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'title_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'subtitle_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}, 'title': {'type': 'string'}, 'metrics': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}}}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'subtitle': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, 'leader_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'leader_filing_count': {'type': 'integer'}, 'total_matching_filers': {'type': 'integer'}, 'total_matching_filings': {'type': 'integer'}}}
get_ttab_document
Get a TTAB Document
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['proceeding_number', 'entry_number'], 'properties': {'max_chars': {'type': 'integer', 'default': 9000, 'maximum': 9000, 'minimum': 1000}, 'text_query': {'type': 'string', 'description': 'Optional word or phrase; returns up to five excerpts centered on matches.'}, 'entry_number': {'type': 'integer', 'minimum': 1, 'description': 'TTABVUE entry number returned by get_ttab_proceeding_details.'}, 'proceeding_number': {'type': 'string', 'description': 'Seven- or eight-digit TTAB proceeding number.'}}}
get_ttab_proceeding_details
TTAB Proceeding Details
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['proceeding_number'], 'properties': {'proceeding_number': {'type': 'string', 'description': 'TTAB proceeding number (e.g., "91284756")'}}}
get_ttab_top_opposition_filers
Get TTAB Top Opposition Filers
Ranks the parties that filed the most TTAB oppositions (or cancellations) across the whole Board in a date range. Answers market-wide questions such as which party filed the most oppositions in April 2026. Takes a calendar date range. One owner's record is covered by get_owner_ttab_stats, and one proceeding by get_ttab_proceeding_details.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['start_date', 'end_date'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many ranked parties to return.'}, 'end_date': {'type': 'string', 'description': 'End of the filing-date window, YYYY-MM-DD. Inclusive. For "April 2026" use 2026-04-30.'}, 'party_role': {'enum': ['plaintiff', 'defendant'], 'type': 'string', 'default': 'plaintiff', 'description': 'Rank the party that FILED (plaintiff/opposer) or the party that was targeted (defendant). "Filed the most oppositions" means plaintiff.'}, 'start_date': {'type': 'string', 'description': 'Start of the filing-date window, YYYY-MM-DD. Inclusive. For "April 2026" use 2026-04-01.'}, 'proceeding_type': {'enum': ['opposition', 'cancellation'], 'type': 'string', 'default': 'opposition', 'description': 'Which proceeding type to rank. Oppositions challenge a pending application; cancellations attack a registration.'}}}
is_mark_famous
Check Whether a Mark Is Famous
Checks whether a trademark is famous, and whether it is famous for a specific market, using the applicant's Nice class as a stand-in for that market (fame is market-specific under 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 household-name fame or market-specific fame), the classes where the mark is famous, portfolio size, and the corporate family's record as a TTAB plaintiff. Relevant to whether a mark is famous, the strength of a senior mark under Section 2(d), and dilution eligibility under Section 43(c). A circumstantial signal, not proof of statutory fame.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['mark'], 'properties': {'mark': {'type': 'string', 'description': 'The mark wording to check (e.g. "MONSTER", "DELTA", "APPLE").'}, 'class': {'type': 'string', 'description': 'Optional Nice class number 1-45 (e.g. "25"), used as a proxy for the relevant market to test market-specific fame. Omit for a class-agnostic read.'}}}
list_prosecution_documents
List Prosecution Documents
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum documents to return (default 50).'}, 'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
lookup_trademark
Look Up Trademark by 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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'pattern': '^\\d{8}$', 'description': 'USPTO serial number (exactly 8 digits)'}}}
Ausgabeschema
{'type': 'object', 'required': ['serial_number', 'found', 'trademark'], 'properties': {'found': {'type': 'boolean'}, 'trademark': {'anyOf': [{'type': 'object', 'properties': {'owner': {'type': 'string'}, 'status': {'type': 'string'}, 'attorney': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'live_dead': {'type': 'string'}, 'mark_name': {'type': 'string'}, 'mark_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'filing_date': {'type': 'string'}, 'status_code': {'type': 'string'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'serial_number': {'type': 'string'}, 'goods_services': {'type': 'string'}, 'owner_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'registration_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'registration_number': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, {'type': 'null'}]}, 'serial_number': {'type': 'string'}, 'open_in_gleanmark': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}
phonetic_search
Search Marks That Sound Alike
Finds trademarks whose whole mark sounds like the given mark, using Metaphone codes and trigram similarity with a whole-mark threshold. Because it compares entire marks, a multi-word mark that only contains a sound-alike word is not returned: for QUICK, KWIK REWARDS does not appear even though KWIK sounds like QUICK. An empty or short result does not show that no sound-alike marks exist and is not a clearance result; run_knockout_search is the conflict search.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['mark_text'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1}, 'mark_text': {'type': 'string', 'description': 'Trademark name to find sound-alike matches for'}, 'include_dead': {'type': 'boolean', 'default': False}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Filter by Nice classes'}, 'similarity_threshold': {'type': 'number', 'default': 0.4, 'maximum': 1, 'minimum': 0}}}
Ausgabeschema
{'type': 'object', 'required': ['query_mark', 'total_found', 'search_method', 'results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'owner': {'type': 'string'}, 'status': {'type': 'string'}, 'mark_name': {'type': 'string'}, 'detail_url': {'type': 'string'}, 'filing_date': {'type': 'string'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'serial_number': {'type': 'string'}, 'owner_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'similarity_score': {'type': 'number'}, 'similarity_method': {'type': 'string'}, 'registration_number': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}, 'query_mark': {'type': 'string'}, 'total_found': {'type': 'integer'}, 'search_method': {'type': 'string'}, 'open_in_gleanmark': {'type': 'string'}}}
recommend_nice_classes
Recommend Nice Classes
Recommend Nice trademark classes based on a business description. Returns the most relevant classes with confidence scores and explanations.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['business_description'], 'properties': {'industry': {'type': 'string', 'description': 'Optional industry category for context'}, 'business_description': {'type': 'string', 'minLength': 50, 'description': 'Detailed description of the business, products, or services (minimum 50 characters). Pass the full user description, do not summarize.'}}}
research_office_action
Research an Office Action
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 used to retrieve the completed result once ready.
Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number of the trademark with the Office Action'}}}
resolve_trademark_subject
Resolve an Ambiguous Name
Matches a name to one trademark entity (an owner, law firm, correspondent, mark, TTAB proceeding, client or portfolio) and returns the match with its identifiers, or the top candidates when the name is ambiguous. Resolving clients and portfolios requires a signed-in account.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['entity', 'subject_name'], 'properties': {'limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Maximum number of candidate matches to return.'}, 'entity': {'enum': ['owner', 'firm', 'correspondent', 'mark', 'proceeding', 'client', 'portfolio'], 'type': 'string', 'description': 'What kind of trademark subject to resolve.'}, 'subject_name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Raw owner, firm, correspondent, mark text/serial number, TTAB proceeding query, client name, or portfolio name to resolve.'}}}
run_knockout_search
Run Knockout Search
Runs a scored trademark conflict (knockout) search over 14M USPTO records with the same engine as the GleanMark app: exact, phonetic, trigram and component-word matching, coordinated class expansion, foreign-equivalent translation and design codes, scored for mark similarity and commercial overlap. Returns results grouped into four risk tiers (very high, high, medium, low) with confusion scores, a four-level headline verdict (critical conflicts, elevated risk, moderate risk, low risk) with a one-line reason, and a sample of dead marks in the same naming territory. goods_description, when supplied, is scored for goods and services relatedness; without it, scoring uses classes only, which understates conflicts between related goods in different classes. owner_name adds the applicant's existing marks in the searched classes. It searches trademarks only, not domains or web use; check_brand_availability covers domains. Most searches finish in under a minute. Requires a signed-in GleanMark account.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['mark_name'], 'properties': {'mark_name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The proposed mark name to search for (e.g., "BARLYTICS", "WAR MUSCLE")'}, 'owner_name': {'type': 'string', 'description': 'Optional: the applicant/owner company name (e.g., "APPLE INC."). Adds portfolio context showing their existing marks in the searched classes and flags same-owner conflicts.'}, 'max_results': {'type': 'integer', 'default': 100, 'maximum': 200, 'minimum': 10, 'description': 'Maximum scored results to return (default 100). The verdict and risk bands are computed over the full candidate set regardless; 100 rows is plenty for a knockout answer, and larger payloads only slow the response.'}, 'design_codes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5, 'description': 'USPTO design codes to include in the search (optional)'}, 'include_dead': {'type': 'boolean', 'default': False, 'description': 'Default false â\x80\x94 LEAVE IT FALSE for availability / "what would block me" questions: dead and abandoned marks cannot block a filing, and the live-only search already returns a dead-mark sample for naming context. Setting true scans the abandoned register too and takes 2-3 minutes, which exceeds most client timeouts (measured 2026-09-09: live-only 23s; include_dead 150s then failed). Only set true when the user explicitly asks about dead or abandoned marks.'}, 'nice_classes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5, 'description': 'Nice classes to search (e.g., ["042", "035"]). The search automatically expands to coordinated classes. Optional â\x80\x94 omit to search all classes.'}, 'goods_description': {'type': 'string', 'maxLength': 2000, 'description': 'The goods/services the applicant plans to sell (e.g., "hair extensions; synthetic hair pieces and wigs"). STRONGLY RECOMMENDED whenever known: it drives goods-relatedness scoring, so conflicts on related goods surface at their true risk band instead of being understated by class-only overlap.'}}}
run_safe_analytics
Run Safe Analytics Query
Runs a constrained analytics query over owners, law firms and correspondents (rankings, counts, snapshots and timelines) and returns the results without exposing database details. Suited to custom aggregate business questions that a single search or summary tool does not answer.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['analysis_type', 'entity'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'Maximum number of ranked rows, preview marks, or timeline events to return.'}, 'entity': {'enum': ['owner', 'firm', 'correspondent'], 'type': 'string', 'description': 'What to analyze. Ranking currently supports owners. Count, snapshot, and timeline also support firms and correspondents.'}, 'metric': {'enum': ['filings', 'pending_marks', 'live_marks', 'registered_marks', 'recent_office_actions'], 'type': 'string', 'description': 'Required for count. Ranking currently supports filings only.'}, 'filters': {'type': 'object', 'properties': {'end_date': {'type': 'string', 'description': 'Optional inclusive filing-date end date in YYYY-MM-DD format.'}, 'mark_text': {'type': 'string', 'description': 'Optional trademark text filter, such as "stellar".'}, 'match_mode': {'enum': ['contains', 'exact', 'starts_with'], 'type': 'string', 'default': 'contains', 'description': 'How to match mark_text. Defaults to contains.'}, 'start_date': {'type': 'string', 'description': 'Optional inclusive filing-date start date in YYYY-MM-DD format.'}, 'event_scope': {'enum': ['prosecution_activity', 'office_actions', 'office_action_responses'], 'type': 'string', 'default': 'prosecution_activity', 'description': 'For timeline, whether to return office actions, office action responses, or broader recent prosecution activity.'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}, 'description': 'Optional Nice class filter.'}, 'status_filter': {'enum': ['all', 'live', 'dead', 'registered', 'pending'], 'type': 'string', 'default': 'all', 'description': 'Optional status filter for the matched marks.'}, 'recent_window_days': {'type': 'integer', 'default': 180, 'maximum': 730, 'minimum': 1, 'description': 'For count, snapshot, and timeline, how many days back should count as recent.'}}}, 'subject_name': {'type': 'string', 'description': 'Required for count, snapshot, and timeline. Examples: "Ideaya Biosciences", "Goodwin Procter", or "Todd Schneider".'}, 'analysis_type': {'enum': ['ranking', 'count', 'snapshot', 'timeline'], 'type': 'string', 'description': 'Business analytics mode: ranking, count, snapshot, or timeline.'}}}
Ausgabeschema
{'type': 'object', 'required': ['title', 'summary', 'analysis_type', 'entity', 'metric', 'subject_name', 'resolved_subject', 'filters_applied', 'open_in_gleanmark', 'rankings', 'count_result', 'snapshot_result', 'timeline_result', 'resolution', 'returned'], 'properties': {'title': {'type': 'string'}, 'entity': {'enum': ['owner', 'firm', 'correspondent'], 'type': 'string'}, 'metric': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'summary': {'type': 'string'}, 'rankings': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'position', 'owner_name', 'filing_count', 'live_mark_count', 'registered_mark_count', 'pending_mark_count', 'share_percent', 'portfolio_preview'], 'properties': {'rank': {'type': 'integer'}, 'position': {'type': 'integer'}, 'owner_name': {'type': 'string'}, 'filing_count': {'type': 'integer'}, 'share_percent': {'type': 'number'}, 'live_mark_count': {'type': 'integer'}, 'owner_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'portfolio_preview': {'type': 'object', 'required': ['total_mark_count', 'live_mark_count', 'registered_mark_count', 'pending_mark_count', 'matching_nice_classes', 'sample_matching_marks', 'top_nice_classes', 'sample_other_marks'], 'properties': {'live_mark_count': {'type': 'integer'}, 'top_nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'total_mark_count': {'type': 'integer'}, 'pending_mark_count': {'type': 'integer'}, 'sample_other_marks': {'type': 'array', 'items': {'type': 'string'}}, 'matching_nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'registered_mark_count': {'type': 'integer'}, 'sample_matching_marks': {'type': 'array', 'items': {'type': 'string'}}}}, 'pending_mark_count': {'type': 'integer'}, 'registered_mark_count': {'type': 'integer'}}}}, 'returned': {'type': 'integer'}, 'resolution': {'anyOf': [{'type': 'object', 'required': ['status', 'message', 'clarification_question', 'candidates'], 'properties': {'status': {'enum': ['resolved', 'ambiguous', 'no_match'], 'type': 'string'}, 'message': {'type': 'string'}, 'candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['canonical_name', 'detail_url', 'total_marks', 'live_marks', 'registered_marks', 'pending_marks'], 'properties': {'detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'live_marks': {'type': 'integer'}, 'total_marks': {'type': 'integer'}, 'pending_marks': {'type': 'integer'}, 'canonical_name': {'type': 'string'}, 'registered_marks': {'type': 'integer'}}}}, 'clarification_question': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, {'type': 'null'}]}, 'count_result': {'anyOf': [{'type': 'object', 'required': ['metric', 'label', 'value', 'matched_mark_count', 'recent_office_action_mark_count', 'recent_office_action_response_mark_count'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'integer'}, 'metric': {'enum': ['filings', 'pending_marks', 'live_marks', 'registered_marks', 'recent_office_actions'], 'type': 'string'}, 'matched_mark_count': {'type': 'integer'}, 'recent_window_days': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'recent_office_action_mark_count': {'type': 'integer'}, 'recent_office_action_response_mark_count': {'type': 'integer'}}}, {'type': 'null'}]}, 'subject_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'analysis_type': {'enum': ['ranking', 'count', 'snapshot', 'timeline'], 'type': 'string'}, 'filters_applied': {'type': 'object', 'required': ['match_mode', 'status_filter', 'nice_classes', 'recent_window_days', 'event_scope'], 'properties': {'end_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'mark_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'match_mode': {'enum': ['contains', 'exact', 'starts_with'], 'type': 'string'}, 'start_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'event_scope': {'enum': ['prosecution_activity', 'office_actions', 'office_action_responses'], 'type': 'string'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'status_filter': {'enum': ['all', 'live', 'dead', 'registered', 'pending'], 'type': 'string'}, 'recent_window_days': {'type': 'integer'}}}, 'snapshot_result': {'anyOf': [{'type': 'object', 'required': ['matched_mark_count', 'matched_live_mark_count', 'matched_registered_mark_count', 'matched_pending_mark_count', 'recent_window_days', 'recent_office_action_mark_count', 'recent_office_action_event_count', 'recent_office_action_response_mark_count', 'has_recent_office_actions', 'marks'], 'properties': {'marks': {'type': 'array', 'items': {'type': 'object', 'required': ['serial_number', 'mark_identification', 'display_status', 'filing_date', 'status_date'], 'properties': {'detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'filing_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'status_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'serial_number': {'type': 'string'}, 'display_status': {'type': 'string'}, 'mark_identification': {'type': 'string'}, 'latest_activity_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'latest_response_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'has_recent_office_action': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}]}, 'latest_office_action_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'latest_activity_description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'latest_response_description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'latest_office_action_description': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}, 'latest_status_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matched_mark_count': {'type': 'integer'}, 'recent_window_days': {'type': 'integer'}, 'matched_live_mark_count': {'type': 'integer'}, 'has_recent_office_actions': {'type': 'boolean'}, 'matched_pending_mark_count': {'type': 'integer'}, 'latest_prosecution_event_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'matched_registered_mark_count': {'type': 'integer'}, 'recent_office_action_mark_count': {'type': 'integer'}, 'recent_office_action_event_count': {'type': 'integer'}, 'recent_office_action_response_mark_count': {'type': 'integer'}}}, {'type': 'null'}]}, 'timeline_result': {'anyOf': [{'type': 'object', 'required': ['event_scope', 'recent_window_days', 'total_events', 'marks_with_events', 'events'], 'properties': {'events': {'type': 'array', 'items': {'type': 'object', 'required': ['serial_number', 'mark_identification', 'date', 'code', 'description', 'event_category'], 'properties': {'code': {'type': 'string'}, 'date': {'type': 'string'}, 'detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'description': {'type': 'string'}, 'serial_number': {'type': 'string'}, 'event_category': {'type': 'string'}, 'mark_identification': {'type': 'string'}}}}, 'event_scope': {'enum': ['prosecution_activity', 'office_actions', 'office_action_responses'], 'type': 'string'}, 'total_events': {'type': 'integer'}, 'latest_event_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'marks_with_events': {'type': 'integer'}, 'recent_window_days': {'type': 'integer'}}}, {'type': 'null'}]}, 'resolved_subject': {'anyOf': [{'type': 'object', 'required': ['entity', 'canonical_name', 'normalized_key', 'total_marks', 'live_marks', 'dead_marks', 'registered_marks', 'pending_marks'], 'properties': {'entity': {'enum': ['owner', 'firm', 'correspondent'], 'type': 'string'}, 'dead_marks': {'type': 'integer'}, 'detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'live_marks': {'type': 'integer'}, 'total_marks': {'type': 'integer'}, 'pending_marks': {'type': 'integer'}, 'canonical_name': {'type': 'string'}, 'normalized_key': {'type': 'string'}, 'registered_marks': {'type': 'integer'}}}, {'type': 'null'}]}, 'open_in_gleanmark': {'type': 'string'}, 'total_matching_marks': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'total_matching_entities': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'total_matching_live_marks': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}}
search
Search
Search GleanMark's USPTO trademark database and return citable results. Each result is a US trademark record with a stable id, a human-readable title (mark, owner and status) and a public gleanmark.com URL. Use the fetch tool with a returned id to read the full record. Covers 14M+ USPTO applications and registrations, live and dead.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search terms â\x80\x94 a mark name, a brand, or an owner name. Example: "spicy coke" or "Apple Inc".'}}}
search_attorneys
Search Trademark Attorneys
Search for trademark attorneys or law firms. Returns prosecution statistics, TTAB proceeding counts (as plaintiff/defendant), and contact information.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['search_term'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'search_term': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Attorney name or law firm name to search for'}, 'search_type': {'enum': ['attorneys', 'firms'], 'type': 'string', 'default': 'attorneys', 'description': 'Search for individual attorneys or law firms'}}}
Ausgabeschema
{'type': 'object', 'required': ['query', 'search_type', 'results'], 'properties': {'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'properties': {'detail_url': {'type': 'string'}, 'person_name': {'type': 'string'}, 'primary_key': {'type': 'string'}, 'primary_email': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'similarity_score': {'type': 'number'}, 'organization_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'prosecution_count': {'type': 'integer'}, 'ttab_defendant_count': {'type': 'integer'}, 'ttab_plaintiff_count': {'type': 'integer'}, 'ttab_proceeding_count': {'type': 'integer'}, 'organization_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, {'type': 'object', 'properties': {'detail_url': {'type': 'string'}, 'primary_key': {'type': 'string'}, 'attorney_count': {'type': 'integer'}, 'cluster_firm_ids': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}]}, 'similarity_score': {'type': 'number'}, 'canonical_firm_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'organization_name': {'type': 'string'}, 'prosecution_count': {'type': 'integer'}, 'ttab_defendant_count': {'type': 'integer'}, 'ttab_plaintiff_count': {'type': 'integer'}, 'ttab_proceeding_count': {'type': 'integer'}}}]}}, 'search_type': {'enum': ['attorneys', 'firms'], 'type': 'string'}, 'open_in_gleanmark': {'type': 'string'}}}
search_by_owner
Search Marks by Owner
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).
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['owner_name'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'Maximum number of owners to return'}, 'owner_name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Owner name to search for (company or individual)'}}}
Ausgabeschema
{'type': 'object', 'required': ['query', 'owners'], 'properties': {'query': {'type': 'string'}, 'owners': {'type': 'array', 'items': {'type': 'object', 'properties': {'dead_marks': {'type': 'integer'}, 'detail_url': {'type': 'string'}, 'live_marks': {'type': 'integer'}, 'total_marks': {'type': 'integer'}, 'pending_marks': {'type': 'integer'}, 'canonical_name': {'type': 'string'}, 'normalized_name': {'type': 'string'}, 'registered_marks': {'type': 'integer'}, 'similarity_score': {'type': 'number'}}}}, 'open_in_gleanmark': {'type': 'string'}}}
search_claimed_colors
Search Marks by Claimed Color
Searches or counts U.S. trademarks by the colors they claim, parsed from USPTO color-claim statements. Two levels: level="family" (16 color families; red also finds dark red, maroon and burgundy) and level="shade" (the exact term claimed, e.g. dark red). match="all" finds marks claiming at least the given colors, match="only" marks claiming exactly those colors, and match="only_bw" the same while also allowing black and white. claimed=false counts marks whose statement says color is not claimed. Modes: count, top_owners, list_marks, vocabulary (the valid families or shades with counts), explain_term (the family a shade belongs to) and by_serial (what one mark claims).
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'mode': {'enum': ['count', 'top_owners', 'list_marks', 'vocabulary', 'explain_term', 'by_serial'], 'type': 'string', 'default': 'count', 'description': "count = how many marks match. top_owners = who owns the most. list_marks = sample the matches. vocabulary = valid colour terms + corpus counts. explain_term = a shade's family. by_serial = what one mark claims."}, 'term': {'type': 'string', 'description': 'Required for mode="explain_term", e.g. "maroon".'}, 'level': {'enum': ['family', 'shade'], 'type': 'string', 'default': 'family', 'description': 'family = 16 broad families (red covers maroon). shade = the exact claimed term.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Rows for top_owners, list_marks, vocabulary.'}, 'match': {'enum': ['all', 'only', 'only_bw'], 'type': 'string', 'default': 'all', 'description': 'all = claims at least these. only = claims exactly these, nothing else. only_bw = exactly these, allowing black/white (usually background).'}, 'colors': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Colour terms, e.g. ["orange","green","red"]. Must be real families or shades â\x80\x94 call mode="vocabulary" if unsure. Omit to match every colour-claiming mark.'}, 'status': {'enum': ['any', 'live', 'dead', 'registered', 'pending'], 'type': 'string', 'default': 'any', 'description': 'registered/pending are narrower than live. "How many live REGISTRATIONS" means status="registered".'}, 'claimed': {'type': 'boolean', 'default': True, 'description': 'false = count marks whose statement disclaims colour ("Color is not claimed as a feature of the mark").'}, 'nice_class': {'type': 'string', 'description': 'Restrict to one Nice class, e.g. "25" or "025".'}, 'serial_number': {'type': 'string', 'description': 'Eight-digit serial number for mode="by_serial".'}, 'registration_number': {'type': 'string', 'description': 'Registration number for mode="by_serial"; resolved to its serial number automatically.'}}}
search_design_codes
Search USPTO Design Codes
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'mode': {'enum': ['count', 'top_owners', 'list_marks', 'by_serial', 'describe_code', 'search_codes'], 'type': 'string', 'default': 'count', 'description': 'search_codes = find a code from a word. describe_code = what a code means. count/top_owners/list_marks = marks carrying the codes. Omit it and the mode is inferred: query -> search_codes, serial_number/registration_number -> by_serial, codes -> count.'}, 'codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Design codes, dotted or packed, e.g. ["26.17.01"].'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1}, 'match': {'enum': ['all', 'any'], 'type': 'string', 'default': 'all', 'description': 'all = mark carries every code. any = at least one.'}, 'query': {'type': 'string', 'description': 'Required for mode="search_codes". A shape word: band, bar, circle, star, triangle, chevron, crown, leaf, arrow, shield.'}, 'status': {'enum': ['any', 'live', 'dead', 'registered', 'pending'], 'type': 'string', 'default': 'any'}, 'nice_class': {'type': 'string', 'description': 'Restrict to one Nice class, e.g. "25".'}, 'serial_number': {'type': 'string', 'description': 'Eight-digit serial number for mode="by_serial".'}, 'registration_number': {'type': 'string', 'description': 'Registration number for mode="by_serial"; resolved to its serial number automatically.'}}}
search_goods_services
Search Goods Services
Full-text search over the goods and services identifications of 14M USPTO marks, for questions such as which other owners claim a product in their goods (competitive landscape, descriptiveness or crowded-field evidence, identification drafting precedent). Keyword-based: the query is tokenized and matched against each mark's indexed goods keywords (match_mode all requires every keyword, any requires at least one). Rows include a short excerpt around the matched clause, not the full identification. mode=count returns how many marks claim the goods, with class and status breakdowns; mode=top_owners ranks the owners claiming them; neither returns rows. Searches goods and services text, not mark names; run_knockout_search and search_trademarks search mark names.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'mode': {'enum': ['list_marks', 'count', 'top_owners'], 'type': 'string', 'default': 'list_marks', 'description': 'list_marks returns rows; count returns totals + class/status breakdowns only; top_owners ranks owners by matching-mark count.'}, 'sort': {'enum': ['relevance', 'filing_date_desc', 'filing_date_asc', 'registration_date_desc', 'registration_date_asc', 'owner_name', 'recently_updated'], 'type': 'string', 'default': 'relevance'}, 'text': {'type': 'string', 'maxLength': 500, 'minLength': 3, 'description': 'Goods/services text to search for (e.g. "anti-tarnish", "vegan leather handbags"). Words of 3+ characters are matched as keywords.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Max rows for list_marks mode (default 20).'}, 'match_mode': {'enum': ['all', 'any'], 'type': 'string', 'default': 'all', 'description': 'all = every keyword must appear in the recitation (default); any = at least one.'}, 'nice_classes': {'type': 'array', 'items': {'type': ['string', 'integer']}, 'maxItems': 10, 'description': 'Optional Nice class filter (e.g. [14] or ["014"]).'}, 'status_filter': {'enum': ['all', 'live', 'dead', 'registered', 'pending'], 'type': 'string', 'default': 'all', 'description': 'live = Registered + Pending; dead = Cancelled/Abandoned/Expired.'}, 'owner_contains': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Optional: only marks whose owner name contains this text.'}}}
search_mark_statements
Search Mark Statements
Searches the statements the USPTO records on a trademark: disclaimers ("no claim is made to PIZZA apart from the mark"), descriptions of the drawing ("the mark consists of a red and white striped awning"), translations of foreign wording, and claims of prior registrations. Answers questions such as which marks disclaim a word or which marks are described as stripes. Modes: count, top_terms, top_owners, list_marks, by_serial (every statement on one mark) and statement_types. mode=top_terms with nice_class ranks the most-disclaimed terms in a class with per-term mark counts (disclaimers only); its status filter accepts live (registered and pending together), any or dead, so a registered-only ranking is not available. A single term's registered-only count is available with mode=count, text set to the term, and status=registered. Color claims are searched with search_claimed_colors.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'mode': {'enum': ['count', 'top_terms', 'top_owners', 'list_marks', 'by_serial', 'statement_types'], 'type': 'string', 'default': 'count'}, 'text': {'type': 'string', 'description': 'Free text to find inside the statement, minimum 3 characters (e.g. "PIZZA", "stripe"). Omit to count every mark carrying that statement type.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1}, 'status': {'enum': ['any', 'live', 'dead', 'registered', 'pending'], 'type': 'string', 'default': 'any'}, 'nice_class': {'type': 'string', 'description': 'Restrict to one Nice class, e.g. "25".'}, 'serial_number': {'type': 'string', 'description': 'Eight-digit serial number for mode="by_serial".'}, 'statement_type': {'enum': ['disclaimer', 'description', 'translation', 'prior_marks'], 'type': 'string', 'description': 'Required except for by_serial and statement_types.'}, 'registration_number': {'type': 'string', 'description': 'Registration number for mode="by_serial"; resolved to its serial number automatically.'}}}
search_trademarks
Search Trademarks
Searches USPTO trademarks by name (14M records) and returns the closest whole-mark matches, ranked by similarity and prefix. It is not an exhaustive contains-search: multi-word marks that only contain the queried word rank low and are often cut (a KWIK query can miss KWIK REWARDS or KWIK KOPY); search_marks_by_pattern returns complete lists. A short result does not show that a name is absent from the register or available.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'Maximum number of results to return'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Search query for trademark name'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer', 'maximum': 45, 'minimum': 1}, 'maxItems': 5, 'description': 'Filter by Nice Classification classes (1-45)'}, 'status_filter': {'enum': ['all', 'live', 'dead', 'registered', 'pending'], 'type': 'string', 'default': 'all', 'description': 'Filter by trademark status'}}}
Ausgabeschema
{'type': 'object', 'required': ['query', 'total_count', 'results'], 'properties': {'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'owner': {'type': 'string'}, 'status': {'type': 'string'}, 'mark_name': {'type': 'string'}, 'mark_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'detail_url': {'type': 'string'}, 'filing_date': {'type': 'string'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}}, 'serial_number': {'type': 'string'}, 'owner_detail_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'registration_number': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}}, 'total_count': {'type': 'integer'}, 'open_in_gleanmark': {'type': 'string'}}}
search_ttab_proceedings
Search TTAB Proceedings
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1}, 'query': {'type': 'string', 'description': 'Party name, 8-digit proceeding/serial number, or 7-digit registration number.'}, 'role_filter': {'type': 'array', 'items': {'enum': ['P', 'D'], 'type': 'string'}, 'description': 'Role of the party matched by query: P for plaintiff/petitioner, D for defendant/respondent.'}, 'type_filter': {'type': 'array', 'items': {'enum': ['Oppositions', 'Cancellations', 'Extensions of Time to Oppose', 'Concurrent Use', 'Ex Parte Appeal', 'Miscellaneous'], 'type': 'string'}, 'description': 'TTAB proceeding type labels (exact values from the USPTO type table). Singular forms and codes are accepted too â\x80\x94 "Cancellation" / "CAN" â\x86\x92 Cancellations, "Opposition" / "OPP" â\x86\x92 Oppositions, "Extension" / "EXT" â\x86\x92 Extensions of Time to Oppose. NOTE: Monster Energy-style enforcers file far more Oppositions than Cancellations; a Cancellations filter returning 0-1 is usually the true answer, not an error.'}, 'status_filter': {'type': 'array', 'items': {'enum': ['active', 'suspended', 'not_instituted', 'terminated'], 'type': 'string'}}, 'owner_contains': {'type': 'string', 'description': 'Optional additional substring that must appear in any party name.'}}, 'additionalProperties': False}
suggest_gs_descriptions
Suggest Goods & Services Descriptions
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Max suggestions (default 10)'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 3, 'description': 'Plain-words description of ONE product or service line (e.g. "phone cases with batteries")'}, 'classes': {'type': 'array', 'items': {'type': ['string', 'number']}, 'maxItems': 45, 'description': 'Optional Nice class filter, 1-45 (padded or unpadded, e.g. 9 or "009")'}, 'gs_type': {'enum': ['GOODS', 'SERVICES'], 'type': 'string', 'description': 'Optional filter to goods or services entries'}}}
Ausgabeschema
{'type': 'object', 'required': ['suggestions'], 'properties': {'cta': {'type': 'string'}, 'suggestions': {'type': 'array', 'items': {'type': 'object', 'required': ['term_id', 'class', 'description', 'gs_type', 'is_template', 'match_type'], 'properties': {'tm5': {'type': 'boolean'}, 'class': {'type': 'string'}, 'notes': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'gs_type': {'enum': ['GOODS', 'SERVICES'], 'type': 'string'}, 'term_id': {'type': 'string'}, 'match_type': {'enum': ['exact', 'prefix', 'fts', 'fts_partial', 'trigram', 'semantic'], 'type': 'string'}, 'description': {'type': 'string'}, 'is_template': {'type': 'boolean'}}}}, 'open_in_gleanmark': {'type': 'string'}}}
validate_gs_description
Validate a Goods & Services Description
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'maxLength': 8000, 'minLength': 10, 'description': 'The draft goods & services description to validate'}, 'classes': {'type': 'array', 'items': {'type': ['string', 'number']}, 'maxItems': 45, 'description': 'Optional Nice class scope, 1-45; without it exact matches may span classes'}}}
Ausgabeschema
{'type': 'object', 'required': ['clauses', 'summary', 'truncated'], 'properties': {'clauses': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'verdict'], 'properties': {'text': {'type': 'string'}, 'verdict': {'enum': ['verbatim', 'close', 'freeform'], 'type': 'string'}, 'substitutes': {'type': 'array', 'items': {'type': 'object', 'required': ['term_id', 'class', 'description', 'gs_type', 'is_template', 'match_type'], 'properties': {'tm5': {'type': 'boolean'}, 'class': {'type': 'string'}, 'notes': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'gs_type': {'enum': ['GOODS', 'SERVICES'], 'type': 'string'}, 'term_id': {'type': 'string'}, 'match_type': {'enum': ['exact', 'prefix', 'fts', 'fts_partial', 'trigram', 'semantic'], 'type': 'string'}, 'description': {'type': 'string'}, 'is_template': {'type': 'boolean'}}}}, 'matched_terms': {'type': 'array', 'items': {'type': 'object', 'required': ['term_id', 'class', 'description', 'gs_type', 'is_template', 'match_type'], 'properties': {'tm5': {'type': 'boolean'}, 'class': {'type': 'string'}, 'notes': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'gs_type': {'enum': ['GOODS', 'SERVICES'], 'type': 'string'}, 'term_id': {'type': 'string'}, 'match_type': {'enum': ['exact', 'prefix', 'fts', 'fts_partial', 'trigram', 'semantic'], 'type': 'string'}, 'description': {'type': 'string'}, 'is_template': {'type': 'boolean'}}}}}}}, 'summary': {'type': 'object', 'required': ['verbatim_count', 'close_count', 'freeform_count', 'surcharge_note'], 'properties': {'close_count': {'type': 'integer'}, 'freeform_count': {'type': 'integer'}, 'surcharge_note': {'type': 'string'}, 'verbatim_count': {'type': 'integer'}}}, 'truncated': {'type': 'boolean'}, 'unprocessed_clause_count': {'type': 'integer'}}}
web_research
Web Research
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.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['entity_name', 'research_type'], 'properties': {'mark_text': {'type': 'string', 'description': 'Trademark text (for common_law_use and state_registrations searches)'}, 'entity_name': {'type': 'string', 'description': 'Company name, trademark, or topic to research'}, 'nice_classes': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Nice classes for context'}, 'research_type': {'enum': ['company_background', 'news', 'common_law_use', 'case_law', 'state_registrations'], 'type': 'string', 'description': 'Type of research to perform'}}}
Entfernt
get_trademark_analytics
25. September 2026 03:02
Geändert
web_research
25. September 2026 03:02
Geändert
validate_gs_description
25. September 2026 03:02
Geändert
suggest_gs_descriptions
25. September 2026 03:02
Geändert
search_ttab_proceedings
25. September 2026 03:02
Geändert
search_trademarks
25. September 2026 03:02
Geändert
search_mark_statements
25. September 2026 03:02
Geändert
search_goods_services
25. September 2026 03:02
Geändert
search_design_codes
25. September 2026 03:02
Geändert
search_claimed_colors
25. September 2026 03:02
Geändert
search_by_owner
25. September 2026 03:02
Geändert
search_attorneys
25. September 2026 03:02
Geändert
search
25. September 2026 03:02
Geändert
run_safe_analytics
25. September 2026 03:02
Geändert
run_knockout_search
25. September 2026 03:02
Geändert
resolve_trademark_subject
25. September 2026 03:02
Geändert
research_office_action
25. September 2026 03:02
Geändert
recommend_nice_classes
25. September 2026 03:02
Geändert
phonetic_search
25. September 2026 03:02
Geändert
lookup_trademark
25. September 2026 03:02
Geändert
list_prosecution_documents
25. September 2026 03:02
Geändert
is_mark_famous
25. September 2026 03:02
Geändert
get_ttab_top_opposition_filers
25. September 2026 03:02
Geändert
get_ttab_proceeding_details
25. September 2026 03:02
Geändert
get_ttab_document
25. September 2026 03:02
Geändert
get_top_filers
25. September 2026 03:02
Geändert
get_similar_marks
25. September 2026 03:02
Geändert
get_reference_lookup
25. September 2026 03:02
Geändert
get_prosecution_timeline
25. September 2026 03:02
Geändert
get_prosecution_document
25. September 2026 03:02