GleanMark Trademark Search
이 MCP로 할 수 있는 일
Searches and analyzes USPTO trademark records, including conflicts, prosecution histories, TTAB proceedings, ownership chains, deadlines, classifications, and brand availability signals.
도구
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
입력 스키마
{'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")'}}}
입력 스키마
{'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'}}}
입력 스키마
{'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")'}}}
입력 스키마
{'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'}}}
출력 스키마
{'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'}}}}
입력 스키마
{'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).'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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*").'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}]}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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").'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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".'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}}}
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}}}
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}}}
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
입력 스키마
{'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)'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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)'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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)'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'type': 'object', 'required': ['proceeding_number'], 'properties': {'proceeding_number': {'type': 'string', 'description': 'TTAB proceeding number (e.g., "91284756")'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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'}}}
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'pattern': '^\\d{8}$', 'description': 'USPTO serial number (exactly 8 digits)'}}}
출력 스키마
{'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'}]}}}
입력 스키마
{'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}}}
출력 스키마
{'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'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'type': 'object', 'required': ['serial_number'], 'properties': {'serial_number': {'type': 'string', 'description': 'USPTO serial number of the trademark with the Office Action'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
출력 스키마
{'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'}]}}}
입력 스키마
{'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".'}}}
입력 스키마
{'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'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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)'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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.'}}}
입력 스키마
{'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'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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}
입력 스키마
{'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'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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'}}}
출력 스키마
{'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'}}}
입력 스키마
{'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'}}}
최근 도구 변경
유사한 MCP 서버
BNM Data Shop
Sells access to cached official reports, enforcement orders, regulatory documents, inspection records, and other public-source te…
Dados Abertos Senado BR MCP
Searches and retrieves Brazilian Federal Senate legislative, administrative, budgetary, contracting, speech, committee, and e-Cid…
OpenHelvetia Gateway
Provides sourced access to Swiss federal legislation and political data, including law metadata, versions, amendments, citations,…
editalmd
Searches Brazilian public procurement opportunities and documents, tracks deadlines and alerts, and supports tender document acce…
DataNexus MCP
Enables public-data research across domains, patents, government contracts, nonprofits, compliance registries, and software secur…
agentdata-nl
Provides paid company, insolvency, sanctions, regulatory, crypto-market, news, payment-counterparty, and structured web research …
FDA Data MCP
Searches and analyzes FDA data covering drugs, devices, facilities, inspections, recalls, approvals, shortages, enforcement, and …
Court Listener
Searches and retrieves US court opinions, case citations, federal docket filings, and related legal documents.