GleanMark Trademark Search
REMOTE · GLEANMARK.COM · SCANNED SEP 21
Search 13.7M+ USPTO trademarks. Clearance, phonetic matching, TTAB stats, analytics.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security74
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 14758 tokens (~189/item across 78 items; 64 tools + 14 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management98
- Stability check failed: schema churn in the 30 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 4 additions. See how to fix → Fail
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 90% of tool parameters carry a description.Partial
- Structured output schemas are declared (28% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 64 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 66 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the GleanMark Trademark Search MCP server?
GleanMark Trademark Search is a hosted endpoint at https://gleanmark.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · gleanmark.com
claude mcp add --transport http com-gleanmark-trademark-search 'https://gleanmark.com/mcp'
{
"mcpServers": {
"com-gleanmark-trademark-search": {
"url": "https://gleanmark.com/mcp"
}
}
} {
"servers": {
"com-gleanmark-trademark-search": {
"type": "http",
"url": "https://gleanmark.com/mcp"
}
}
} [mcp_servers.com-gleanmark-trademark-search] url = "https://gleanmark.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-gleanmark-trademark-search": {
"type": "remote",
"url": "https://gleanmark.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-gleanmark-trademark-search --url 'https://gleanmark.com/mcp' --transport streamable-http
mcp_servers:
com-gleanmark-trademark-search:
url: "https://gleanmark.com/mcp" {
"McpServers": {
"com-gleanmark-trademark-search": {
"Transport": "http",
"Url": "https://gleanmark.com/mcp"
}
}
} assistant mcp add com-gleanmark-trademark-search -t streamable-http -u 'https://gleanmark.com/mcp'
{
"mcpServers": {
"com-gleanmark-trademark-search": {
"type": "http",
"url": "https://gleanmark.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 11 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- 10 Sept 26 0
- Tool “phonetic_search” rewrote its description, which is the text the model reads security
- Tool “search_mark_statements” rewrote its description, which is the text the model reads security
- Tool “search_trademarks” rewrote its description, which is the text the model reads security
- “run_knockout_search” reworded the description of “include_dead” cosmetic
- “run_knockout_search” reworded the description of “max_results” cosmetic
- “search_ttab_proceedings” reworded the description of “type_filter” cosmetic
- 9 Sept 26 −1
- Stability: pass → fail ▼ security
- A breaking change shipped without a version bump: still 1.2.0 ▼ security
- Tool “run_dupont_analysis” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “analyze_prosecution_history” rewrote its description, which is the text the model reads security
- Tool “analyze_ttab_proceeding” rewrote its description, which is the text the model reads security
- Tool “get_latest_office_action” rewrote its description, which is the text the model reads security
- Tool “get_top_filers” rewrote its description, which is the text the model reads security
- Tool “research_office_action” rewrote its description, which is the text the model reads security
- 5 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “check_brand_availability” rewrote its description, which is the text the model reads security
- New tool “fetch” functional
- New tool “get_chain_of_title” functional
- New tool “get_ttab_top_opposition_filers” functional
- New tool “search” functional
- 4 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- 3 Sept 26 +8
- Judged manipulation: unverified → pass ▲ security
- Schema quality: unverified → excellent ▲ functional
- 2 Sept 26 −8
- Judged manipulation: pass → unverified ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Schema quality: excellent → unverified ▼ functional
- 1 Sept 26 0
- Tool “get_top_filers” rewrote its description, which is the text the model reads security
- “get_top_filers” added an optional parameter “filer_profile” cosmetic
- “get_top_filers” added an optional parameter “min_filings” cosmetic
- “get_top_filers” added an optional parameter “rank_by” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Probed https://gleanmark.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=gleanmark.com | CN=YR2,O=Let's Encrypt,C=US | 18 Sept 2026 | 17 Dec 2026 | RSA 2048 | SHA256-RSA | 57b181409fd91cd0873659dd47e162169e5 |
| SANs: gleanmark.com | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of gleanmark.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| gleanmark.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://gleanmark.com/mcp | Verified | 200 | |
| http (plaintext) | http://gleanmark.com/mcp | HTTPS enforced | 301 | https://gleanmark.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_prosecution_history Analyze Prosecution History ~87
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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number |
No output schema declared.
No examples provided.
analyze_ttab_proceeding Analyze a TTAB Proceeding ~121
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.
| Name | Type | Req | Description |
|---|---|---|---|
| proceeding_number | string | yes | TTAB proceeding number (e.g., "91284756") |
| quick_mode | boolean | – | Quick mode skips lower-priority documents for faster results |
No output schema declared.
No examples provided.
check_brand_availability Check Brand Availability ~171
Quick brand SCREEN — combines domain availability with a trademark conflict signal for the industries given. NOT a clearance search and NEVER an availability answer: it does not see common-law rights, state registrations, or goods relatedness in any depth. Returns a screening tier (avoid, probably avoid, promising, or nothing surfaced). Report a clean result as "our quick search did not surface close conflicts" — never as "no conflicts", "available", or "clear" — and always point the user to a complete clearance search. Availability conclusions come only from run_knockout_search.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_name | string | yes | Brand name to check |
| business_description | string | – | Brief description of the business |
| industries | array | – | Industry categories |
| nice_classes | array | – | Nice classes to check against |
No output schema declared.
No examples provided.
check_domain_availability Check Domain Availability ~96
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).
| Name | Type | Req | Description |
|---|---|---|---|
| brand_name | string | yes | Brand name to check (e.g., "Moonlight Coffee") |
| tlds | array | – | TLDs to check. Defaults to com/ai/app/io/co when omitted. |
No output schema declared.
No examples provided.
compare_marks Compare Two Marks for Confusion ~65
Compare two trademarks for likelihood of confusion using DuPont-style analysis. Returns similarity scores and risk assessment.
| Name | Type | Req | Description |
|---|---|---|---|
| mark_a | string | yes | First trademark to compare |
| mark_b | string | yes | Second trademark to compare |
| nice_classes | array | – | Nice classes for overlap analysis |
| Name | Type | Req | Description |
|---|---|---|---|
| dupont_factors_summary | array | yes | – |
| mark_a | string | yes | – |
| mark_b | string | yes | – |
| nice_class_overlap | boolean | yes | – |
| open_in_gleanmark | string | – | – |
| risk_explanation | string | yes | – |
| risk_level | string | yes | – |
| similarity | object | yes | – |
No examples provided.
count_trademarks_by_attributes Count Trademarks by Attributes ~223
Count and preview USPTO marks by record attributes rather than owner identity, with mark-type, standard-character, and Nice-class breakdowns plus metadata coverage. Use this for drawing type, standard-character, Nice-class, status, and cross-attribute counts. It can intersect claimed-color criteria with those attributes; color-only counts, rankings, lists, and vocabulary are outside its scope.
| Name | Type | Req | Description |
|---|---|---|---|
| claimed_color_families | array | – | Normalized color families. Burgundy and maroon, for example, count as red. |
| claimed_color_shades | array | – | Exact canonical shades from the USPTO color claim. |
| class_match_mode | string | – | – |
| color_match_mode | string | – | all permits additional claimed colors; only requires exactly the selected colors; only_bw also permits black/white. |
| limit | integer | – | – |
| mark_types | array | – | – |
| nice_classes | array | – | – |
| standard_characters | boolean | – | – |
| status_filter | string | – | Use registered for currently live registrations; live also includes pending applications. |
No output schema declared.
No examples provided.
fetch Fetch ~94
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Document id from a search result, e.g. "uspto-72303482". A bare serial number is also accepted. |
No output schema declared.
No examples provided.
get_chain_of_title Get Chain Of Title ~169
Trace who has owned a trademark over time — the ownership stages USPTO recorded (original applicant/registrant through each successive new owner), plus any recorded assignment documents we hold. Use this whenever the user asks who owns a mark now versus who filed it, whether a mark was sold, transferred or assigned, how it came to its current owner, or for chain-of-title / due-diligence questions. lookup_trademark returns only the CURRENT owner and cannot answer any of these. Owners listed within a single stage are joint owners, not successive ones. Not a title opinion.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number of the mark, e.g. "98725143". Registration numbers are not accepted — resolve to a serial first with lookup_trademark or search_trademarks. |
No output schema declared.
No examples provided.
get_class_relationships Get Related Nice Classes ~92
Look up coordinated Nice classes or related Nice classes for a given class number.
| Name | Type | Req | Description |
|---|---|---|---|
| class_number | integer | yes | Nice class number to inspect. |
| include_legacy | boolean | – | Include legacy US classes A, B, and 200 when returning coordinated classes. |
| limit | integer | – | Maximum rows to return. |
| relationship_type | string | – | Whether to return USPTO coordinated classes or curated related classes. |
No output schema declared.
No examples provided.
get_cohort_event_intervals Cohort Event Intervals ~384
Aggregate event-to-event pendency across a COHORT of marks — e.g. "average days from office action to publication for marks published in Q2 2026". Pick the cohort by an anchor event (preset: publication, notice_of_publication, registration, notice_of_allowance, abandonment, first_office_action — or raw event codes, trailing * = prefix) within a date window (max 366 days), and an interval start/end event. Returns avg/median/percentiles in days, how many cohort marks never had the start event, and example marks. Samples up to max_sample marks from the start of the window and says so when truncated. Use get_event_code_reference first if you need non-preset event codes.
| Name | Type | Req | Description |
|---|---|---|---|
| cohort_date_from | string | yes | Cohort window start (YYYY-MM-DD). Required. |
| cohort_date_to | string | yes | Cohort window end (YYYY-MM-DD). Required. Window max 366 days. |
| cohort_event | string | – | Preset anchor event defining cohort membership (e.g. publication = PUBO). |
| cohort_event_codes | array | – | Alternative to cohort_event: raw USPTO event codes; trailing * matches a prefix (e.g. "NPUB*"). |
| end_event | string | – | Interval end event (first occurrence on/after the start event). Defaults to the cohort event itself. |
| end_event_codes | array | – | Alternative to end_event: raw event codes (trailing * = prefix). |
| max_sample | integer | – | Max cohort marks to measure (default 1000, max 2000). |
| start_event | string | – | Interval start event (first occurrence on/before the cohort event). Defaults to first_office_action. |
| start_event_codes | array | – | Alternative to start_event: raw event codes (trailing * = prefix). |
No output schema declared.
No examples provided.
get_correspondent_marks Marks for a Correspondent ~195
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.
| Name | Type | Req | Description |
|---|---|---|---|
| canonical_correspondent_id | string | – | UUID of the correspondent (from search_attorneys result). Use this if you already have the ID. |
| correspondent_id | string | – | Alias for canonical_correspondent_id. |
| correspondent_name | string | – | Alias for search_term. Preferred when the caller already knows this is a correspondent name. |
| limit | integer | – | Maximum marks to return. |
| recent_window_days | integer | – | How many days back to count recent office actions. Use 90 for "last 3 months". |
| search_term | string | – | Attorney name to search for (e.g., "Todd Schneider"). Will find the best match. |
| status_filter | string | – | Filter marks by status. |
No output schema declared.
No examples provided.
get_correspondent_specialization Correspondent Specialization ~125
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.
| Name | Type | Req | Description |
|---|---|---|---|
| correspondent_name | string | – | Alias for search_term. |
| search_term | string | – | Correspondent or attorney name to resolve. |
| top_class_limit | integer | – | Maximum top Nice classes to return. |
| top_client_limit | integer | – | Maximum top clients to return. |
| url_key | string | – | Known correspondent url_key, if already resolved. |
| Name | Type | Req | Description |
|---|---|---|---|
| correspondent_detail_url | – | – | – |
| correspondent_name | string | yes | – |
| firm_detail_url | – | – | – |
| firm_name | – | – | – |
| found | boolean | yes | – |
| headline | string | yes | – |
| practice_profile | object | yes | – |
| primary_email | – | – | – |
| prosecution_profile | object | yes | – |
| summary | string | yes | – |
| ttab_profile | object | yes | – |
| url_key | string | yes | – |
No examples provided.
get_deadline_satisfaction_mapping Deadline Satisfaction Reference ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| deadline_type | string | yes | Deadline family to test against. |
| event_code | string | yes | USPTO event code to inspect. |
No output schema declared.
No examples provided.
get_event_code_reference USPTO Event Code Reference ~119
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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | Exact USPTO event code or prefix (e.g., "OAIN" for exact, "OA" for prefix match). |
| limit | integer | – | Maximum number of results to return (default 20). |
| search | string | – | Keyword to search in event descriptions (e.g., "office action", "abandoned"). |
No output schema declared.
No examples provided.
get_event_status_mapping USPTO Event Status Reference ~54
Look up which USPTO status code and status definition most commonly follow a specific prosecution event code.
| Name | Type | Req | Description |
|---|---|---|---|
| event_code | string | yes | USPTO event code to inspect. |
| limit | integer | – | Maximum mappings to return. |
No output schema declared.
No examples provided.
get_fame_profile Fame Profile for a Mark ~158
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mark_or_stem | string | yes | A mark ("THE DISNEY STORE") or a bare brand stem ("disney"). Both resolve to the same family. |
No output schema declared.
No examples provided.
get_firm_correspondent_tasks Firm Correspondent Tasks ~186
Resolve a trademark law firm and return what its lawyers should focus on: overdue/next-window action-required deadlines plus recent Office Actions from both case-file events and prosecution documents, including ROA-filed and §2(d) indicators. Use this for questions like "what correspondent tasks should this firm focus on over the next 30 days?" or "what recent OAs does this law firm have?".
| Name | Type | Req | Description |
|---|---|---|---|
| deadline_days | integer | – | How many days ahead to include action-required deadlines. Overdue items still in grace are also included. |
| firm_name | string | yes | Law firm name or normalized key, e.g. "Imani Law" or "imanilawllp". |
| limit | integer | – | Maximum deadlines/recent OAs/task previews to return. |
| recent_oa_days | integer | – | How many days back to include recent Office Actions. |
No output schema declared.
No examples provided.
get_firm_deadlines Firm Deadlines ~191
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days_ahead | integer | – | How far forward to look. Defaults to 365 days. |
| days_back | integer | – | How far back to include overdue or recently resolved deadlines. Defaults to 60 days. |
| firm_name | string | yes | Law firm name to resolve and analyze. |
| include_informational_windows | boolean | – | Include informational review windows such as publication opposition windows. Defaults to false. |
| include_opposition_period | boolean | – | Deprecated alias for include_informational_windows. Defaults to false. |
| limit | integer | – | Maximum number of deadline rows to return. Defaults to 50. |
| status_filter | string | – | Deadline status filter. Defaults to active. |
| Name | Type | Req | Description |
|---|---|---|---|
| counts_by_status | object | yes | – |
| counts_by_type | object | yes | – |
| days_ahead | integer | yes | – |
| days_back | integer | yes | – |
| deadlines | array | yes | – |
| firm_detail_url | – | – | – |
| firm_name | string | yes | – |
| include_informational_windows | boolean | yes | – |
| include_opposition_period | boolean | yes | – |
| is_partial | boolean | yes | – |
| matched_mark_count | integer | yes | – |
| message | – | – | – |
| open_in_gleanmark | – | – | – |
| returned | integer | yes | – |
| status_filter | string | yes | – |
| title | string | yes | – |
| total | integer | yes | – |
No examples provided.
get_firm_oa_outcomes Firm Office Action Outcomes ~112
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".
| Name | Type | Req | Description |
|---|---|---|---|
| firm_name | string | yes | Law firm name or normalized key, e.g. "Imani Law" or "imanilawllp". |
| limit | integer | – | Maximum examples to return in each outcome bucket. |
No output schema declared.
No examples provided.
get_firm_top_correspondents Top Correspondents at a Firm ~96
Get the leading correspondents or attorneys inside one named law firm, ranked by filing volume with prosecution and TTAB activity counts. Use this when the user asks for top correspondents at a specific firm, such as "Who are the top correspondents at Fross Zelnick?"
| Name | Type | Req | Description |
|---|---|---|---|
| firm_name | string | yes | Law firm name or normalized firm key. |
| limit | integer | – | Maximum correspondents to return. |
| Name | Type | Req | Description |
|---|---|---|---|
| firm_detail_url | – | – | – |
| firm_name | string | yes | – |
| headline | string | yes | – |
| leader_detail_url | – | – | – |
| leader_name | – | – | – |
| leader_total_filings | integer | yes | – |
| presentation | object | yes | – |
| returned | integer | yes | – |
| summary | string | yes | – |
| total_correspondents | integer | yes | – |
No examples provided.
get_latest_office_action Latest Office Action for a Mark ~81
Get the latest office action for a trademark serial number, plus the latest recorded response if one exists, and the VERIFIED refusal grounds (with cited registration numbers) parsed from the OA text. The refusal_grounds field is the authoritative, parsed basis of the refusal (rather than the document title).
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number |
No output schema declared.
No examples provided.
get_mark_ai_summary AI Summary of a Mark ~55
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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number |
No output schema declared.
No examples provided.
get_mark_deadlines Deadlines for a Mark ~224
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days_ahead | integer | – | How far forward to look. Defaults to 365 days. |
| days_back | integer | – | How far back to include overdue or recently resolved deadlines. Defaults to 60 days. |
| include_informational_windows | boolean | – | Include informational review windows such as publication opposition windows. Defaults to false. |
| include_opposition_period | boolean | – | Deprecated alias for include_informational_windows. Defaults to false. |
| limit | integer | – | Maximum number of deadline rows to return. Defaults to 50. |
| serial_number | string | – | USPTO serial number for the specific mark. |
| status_filter | string | – | Deadline status filter. Defaults to active. |
| subject_name | string | – | Specific mark text or serial-number-like query. Use when the user names the mark instead of giving a serial. |
| Name | Type | Req | Description |
|---|---|---|---|
| counts_by_status | object | yes | – |
| counts_by_type | object | yes | – |
| days_ahead | integer | yes | – |
| days_back | integer | yes | – |
| deadlines | array | yes | – |
| include_informational_windows | boolean | yes | – |
| include_opposition_period | boolean | yes | – |
| is_partial | boolean | yes | – |
| mark_name | – | – | – |
| message | – | – | – |
| open_in_gleanmark | – | – | – |
| owner_name | – | – | – |
| returned | integer | yes | – |
| serial_number | – | – | – |
| status_filter | string | yes | – |
| title | string | yes | – |
| total | integer | yes | – |
No examples provided.
get_mark_international_profile International Filings for a Mark ~153
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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number |
No output schema declared.
No examples provided.
get_mark_owner_landscape Owner Landscape for a Mark ~163
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of owners to return. |
| mark_text | string | yes | Trademark term to analyze across owners, such as COMET or GLOW. |
| match_mode | string | – | How to match the mark text: contains, exact, or starts_with. |
| nice_classes | array | – | Optional Nice classes to narrow the landscape. |
| status_filter | string | – | Optional status filter. Default is live. |
| Name | Type | Req | Description |
|---|---|---|---|
| headline | string | yes | – |
| leader_detail_url | – | – | – |
| leader_matching_mark_count | integer | yes | – |
| leader_name | – | – | – |
| leader_total_portfolio_mark_count | integer | yes | – |
| mark_text | string | yes | – |
| match_mode | string | yes | – |
| nice_classes | array | yes | – |
| owners | array | – | – |
| returned | integer | yes | – |
| status_filter | string | yes | – |
| summary | string | yes | – |
| title | string | yes | – |
| total_matching_live_marks | integer | yes | – |
| total_matching_marks | integer | yes | – |
| total_matching_owners | integer | yes | – |
No examples provided.
get_mark_prosecution_summary Prosecution Summary for a Mark ~56
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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number |
No output schema declared.
No examples provided.
get_nice_classes Look Up Nice Classes ~77
Get information about Nice Classification classes used for trademark registration. Lookup specific class numbers or search for classes by keyword.
| Name | Type | Req | Description |
|---|---|---|---|
| class_numbers | array | – | Specific class numbers to look up (1-45) |
| search_term | string | – | Search term to find relevant classes (e.g., "software", "clothing", "restaurant") |
| Name | Type | Req | Description |
|---|---|---|---|
| classes | array | yes | – |
| open_in_gleanmark | string | – | – |
No examples provided.
get_owner_ai_summary AI Summary of an Owner ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| normalized_owner | string | yes | Normalized owner name (lowercase, no punctuation, e.g., "appleinc", "homeboxofficeinc"). Use search_by_owner first to find the correct normalized name. |
No output schema declared.
No examples provided.
get_owner_deadlines Deadlines for an Owner ~186
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days_ahead | integer | – | How far forward to look. Defaults to 365 days. |
| days_back | integer | – | How far back to include overdue or recently resolved deadlines. Defaults to 60 days. |
| include_informational_windows | boolean | – | Include informational review windows such as publication opposition windows. Defaults to false. |
| include_opposition_period | boolean | – | Deprecated alias for include_informational_windows. Defaults to false. |
| limit | integer | – | Maximum number of deadline rows to return. Defaults to 50. |
| owner_name | string | yes | Owner name to resolve and analyze. |
| status_filter | string | – | Deadline status filter. Defaults to active. |
| Name | Type | Req | Description |
|---|---|---|---|
| counts_by_status | object | yes | – |
| counts_by_type | object | yes | – |
| days_ahead | integer | yes | – |
| days_back | integer | yes | – |
| deadlines | array | yes | – |
| include_informational_windows | boolean | yes | – |
| include_opposition_period | boolean | yes | – |
| is_partial | boolean | yes | – |
| matched_mark_count | integer | yes | – |
| message | – | – | – |
| open_in_gleanmark | – | – | – |
| owner_detail_url | – | – | – |
| owner_name | string | yes | – |
| returned | integer | yes | – |
| status_filter | string | yes | – |
| title | string | yes | – |
| total | integer | yes | – |
No examples provided.
get_owner_filing_trends Owner Filing Trends ~107
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.
| Name | Type | Req | Description |
|---|---|---|---|
| end_year | integer | – | End year (default: current year) |
| owner_name | string | yes | Owner name as shown in USPTO records (e.g., "NIKE, INC."). Use search_by_owner first to find the exact name. |
| start_year | integer | – | Start year (default: 2000) |
No output schema declared.
No examples provided.
get_owner_goods_keywords Owner Goods & Services Keywords ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max keywords to return |
| owner_name | string | yes | Owner name as shown in USPTO records (e.g., "NIKE, INC."). Use search_by_owner first to find the exact name. |
No output schema declared.
No examples provided.
get_owner_related_parties Likely Related Parties for an Owner ~161
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).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum related parties to return |
| owner_name | string | yes | Owner name as recorded at the USPTO (e.g., "Netflix, Inc."). Normalized internally to the owner key. |
No output schema declared.
No examples provided.
get_owner_ttab_enforcement TTAB Enforcement History for an Owner ~339
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.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Inclusive filing-date start in YYYY-MM-DD format. |
| date_to | string | – | Inclusive filing-date end in YYYY-MM-DD format. |
| include_extensions | boolean | – | Include Extensions of Time to Oppose, reported separately from substantive cases. |
| include_owner_marks | boolean | – | Include the enforcing owner's asserted marks. Leave false for class/type/color target lists to keep the result compact. |
| limit | integer | – | – |
| owner_name | string | yes | Owner name, including a likely typo such as "Niked" for NIKE, Inc. |
| proceeding_types | array | – | – |
| role | string | – | Use plaintiff for proceedings the owner initiated. |
| target_claims_color | boolean | – | When true, require a USPTO color claim on each qualifying target mark. |
| target_class_match | string | – | any = at least one selected class; all = every selected class; only = exactly the selected class set and no others. |
| target_classes | array | – | Nice classes required on the qualifying challenged/target marks. |
| target_color_families | array | – | Optional normalized color families that qualifying target marks must claim. |
| target_mark_types | array | – | – |
No output schema declared.
No examples provided.
get_owner_ttab_stats TTAB Statistics for an Owner ~97
Get a compact TTAB history for one owner with substantive inter partes, opposition, cancellation, extension, appeal, and role breakdowns. Do not equate total records with initiated oppositions. Use get_owner_ttab_enforcement for date ranges or challenged-mark/class analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| owner_name | string | yes | Owner name to search for |
| year | integer | – | Filter to a specific year |
No output schema declared.
No examples provided.
get_prosecution_document Get a Prosecution Document ~250
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.
| Name | Type | Req | Description |
|---|---|---|---|
| document_code | string | – | Document code such as NFIN, FREF, ROA, or RFR. |
| document_date | string | – | Exact document date in YYYY-MM-DD. |
| document_id | string | – | Stable GleanMark document UUID; the exact selector. Omit every selector to get the list of documents for this serial and pick one from it. |
| max_chars | integer | – | – |
| serial_number | string | yes | Eight-digit USPTO serial number. |
| text_query | string | – | Optional word or phrase; returns up to five excerpts centered on matches. |
| uspto_document_id | string | – | USPTO document identifier from list_prosecution_documents. |
No output schema declared.
No examples provided.
get_prosecution_timeline Prosecution Timeline ~57
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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number |
No output schema declared.
No examples provided.
get_reference_lookup Reference Data Lookup ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| after_code | string | – | Cursor from next_after_code for the next page when browsing a reference table without code/query filters. |
| code | string | – | Exact code to look up when known. |
| limit | integer | – | Maximum entries to return. |
| query | string | – | Free-text search across code descriptions and labels. |
| reference_type | string | yes | Which small lookup/reference table to search. |
No output schema declared.
No examples provided.
get_similar_marks Find Similar Marks ~133
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_dead | boolean | – | Include dead/abandoned trademarks in results |
| limit | integer | – | Maximum number of similar marks to return |
| mark_text | string | yes | Trademark name to find similar marks for |
| nice_classes | array | – | Filter by Nice Classification classes (similar marks in same classes are higher risk) |
| Name | Type | Req | Description |
|---|---|---|---|
| open_in_gleanmark | string | – | – |
| query_mark | string | yes | – |
| risk_summary | string | yes | – |
| similar_marks | array | yes | – |
No examples provided.
get_top_filers Top Trademark Filers ~569
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`).
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | yes | Inclusive end date in YYYY-MM-DD format. |
| filer_profile | string | – | 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) — use 'l… |
| filer_type | string | – | Whether to rank owners, law firms, or individual correspondents. |
| limit | integer | – | Maximum number of ranked filers to return. Up to 100 in a single call. |
| min_filings | integer | – | 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… |
| nice_classes | array | – | Optional Nice classes to filter by. Use integers like 42 or 9. |
| offset | integer | – | 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 | string | – | 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… |
| start_date | string | yes | Inclusive start date in YYYY-MM-DD format. |
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | yes | – |
| filer_type | string | yes | – |
| headline | string | yes | – |
| leader_detail_url | – | – | – |
| leader_filing_count | integer | yes | – |
| leader_name | – | – | – |
| nice_classes | array | yes | – |
| presentation | object | yes | – |
| returned | integer | yes | – |
| start_date | string | yes | – |
| summary | string | yes | – |
| title | string | yes | – |
| total_matching_filers | integer | yes | – |
| total_matching_filings | integer | yes | – |
No examples provided.
get_trademark_analytics Trademark Analytics ~97
Get aggregate statistics about USPTO trademark filings, registrations, and TTAB proceedings.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | End date for custom period (YYYY-MM-DD) |
| group_by | string | – | – |
| metric | string | yes | Type of analytics to query |
| nice_class | integer | – | – |
| start_date | string | – | Start date for custom period (YYYY-MM-DD) |
| time_period | string | – | – |
No output schema declared.
No examples provided.
get_ttab_document Get a TTAB Document ~147
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.
| Name | Type | Req | Description |
|---|---|---|---|
| entry_number | integer | yes | TTABVUE entry number returned by get_ttab_proceeding_details. |
| max_chars | integer | – | – |
| proceeding_number | string | yes | Seven- or eight-digit TTAB proceeding number. |
| text_query | string | – | Optional word or phrase; returns up to five excerpts centered on matches. |
No output schema declared.
No examples provided.
get_ttab_proceeding_details TTAB Proceeding Details ~99
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.
| Name | Type | Req | Description |
|---|---|---|---|
| proceeding_number | string | yes | TTAB proceeding number (e.g., "91284756") |
No output schema declared.
No examples provided.
get_ttab_top_opposition_filers Get TTAB Top Opposition Filers ~265
Rank the parties that filed the most TTAB oppositions (or cancellations) across the whole Board in a date range — the market-wide "who opposes the most" question. Use this for questions like "which party filed the most oppositions in April 2026?". Do NOT substitute get_owner_ttab_stats (one owner) or get_ttab_proceeding_details (one proceeding); this is the only tool that ranks filers market-wide. Pass the exact calendar range the user implied.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | yes | End of the filing-date window, YYYY-MM-DD. Inclusive. For "April 2026" use 2026-04-30. |
| limit | integer | – | How many ranked parties to return. |
| party_role | string | – | Rank the party that FILED (plaintiff/opposer) or the party that was targeted (defendant). "Filed the most oppositions" means plaintiff. |
| proceeding_type | string | – | Which proceeding type to rank. Oppositions challenge a pending application; cancellations attack a registration. |
| start_date | string | yes | Start of the filing-date window, YYYY-MM-DD. Inclusive. For "April 2026" use 2026-04-01. |
No output schema declared.
No examples provided.
is_mark_famous Check Whether a Mark Is Famous ~260
Check whether a trademark is FAMOUS — and, critically, famous FOR A SPECIFIC MARKET (you pass the applicant's Nice class as a PROXY for that market; fame is market-determined, there is no per-class fame doctrine). Fame is market-specific (Joseph Phelps Vineyards v. Fairmont): a mark famous for electronics is not automatically famous for fresh fruit. Returns is_famous, famous_in_class, the fame tier (broad/dilution-tier household name vs market-specific), the famous market footprint (expressed as Nice classes), portfolio size, and the corporate family's TTAB-as-plaintiff enforcement history. Use for "is X a famous trademark?", "is X famous for <goods>?", gauging a senior mark's §2(d) strength, or §43(c) dilution eligibility. It is a circumstantial signal, not statutory fame proof.
| Name | Type | Req | Description |
|---|---|---|---|
| class | string | – | 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. |
| mark | string | yes | The mark wording to check (e.g. "MONSTER", "DELTA", "APPLE"). |
No output schema declared.
No examples provided.
list_prosecution_documents List Prosecution Documents ~86
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum documents to return (default 50). |
| serial_number | string | yes | USPTO serial number |
No output schema declared.
No examples provided.
lookup_trademark Look Up Trademark by Serial Number ~78
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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number (exactly 8 digits) |
| Name | Type | Req | Description |
|---|---|---|---|
| found | boolean | yes | – |
| open_in_gleanmark | – | – | – |
| serial_number | string | yes | – |
| trademark | – | yes | – |
No examples provided.
phonetic_search Search Marks That Sound Alike ~173
Find trademarks whose WHOLE mark sounds similar to the given mark (Metaphone + trigram, whole-mark similarity threshold). LIMITS: it compares entire marks, so multi-word marks that merely CONTAIN a sound-alike word are invisible to it — "KWIK REWARDS" will NOT surface for a QUICK query even though KWIK sounds like QUICK. Thin or empty results are NEVER evidence that no sound-alike marks exist and NEVER support an availability/clearance conclusion: answer availability questions with run_knockout_search, the actual clearance engine.
| Name | Type | Req | Description |
|---|---|---|---|
| include_dead | boolean | – | – |
| limit | integer | – | – |
| mark_text | string | yes | Trademark name to find sound-alike matches for |
| nice_classes | array | – | Filter by Nice classes |
| similarity_threshold | number | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| open_in_gleanmark | string | – | – |
| query_mark | string | yes | – |
| results | array | yes | – |
| search_method | string | yes | – |
| total_found | integer | yes | – |
No examples provided.
recommend_nice_classes Recommend Nice Classes ~76
Recommend Nice trademark classes based on a business description. Returns the most relevant classes with confidence scores and explanations.
| Name | Type | Req | Description |
|---|---|---|---|
| business_description | string | yes | Detailed description of the business, products, or services (minimum 50 characters). Pass the full user description, do not summarize. |
| industry | string | – | Optional industry category for context |
No output schema declared.
No examples provided.
research_office_action Research an Office Action ~89
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.
| Name | Type | Req | Description |
|---|---|---|---|
| serial_number | string | yes | USPTO serial number of the trademark with the Office Action |
No output schema declared.
No examples provided.
resolve_trademark_subject Resolve an Ambiguous Name ~106
Resolve an owner, law firm, correspondent, mark, TTAB proceeding, client, or portfolio to the best trademark entity match. Resolving clients and portfolios requires authentication.
| Name | Type | Req | Description |
|---|---|---|---|
| entity | string | yes | What kind of trademark subject to resolve. |
| limit | integer | – | Maximum number of candidate matches to return. |
| subject_name | string | yes | Raw owner, firm, correspondent, mark text/serial number, TTAB proceeding query, client name, or portfolio name to resolve. |
No output schema declared.
No examples provided.
What is the GleanMark Trademark Search MCP server?
GleanMark Trademark Search is an MCP server listed in the public MCP registry as com.gleanmark/trademark-search. Search 13.7M+ USPTO trademarks. Clearance, phonetic matching, TTAB stats, analytics. This page covers its hosted endpoint (https://gleanmark.com/mcp).
Is the GleanMark Trademark Search MCP server safe to use?
GleanMark Trademark Search scores 85 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the GleanMark Trademark Search MCP server expose?
GleanMark Trademark Search exposes 64 tools: analyze_prosecution_history, analyze_ttab_proceeding, check_brand_availability, check_domain_availability, compare_marks, and 59 more. Their descriptions and schemas cost roughly 10,938 tokens of context every time the server is loaded.
Does the GleanMark Trademark Search MCP server require authentication?
No. We connected to GleanMark Trademark Search without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the GleanMark Trademark Search MCP server still maintained?
GleanMark Trademark Search is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.