Haloo Trademark Clearance

Full trademark search and clearance analysis.

Trademark intelligence2 toolsOAuth 2.1

Haloo is a deterministic, computational AI purpose-built for trademark retrieval. It processes the complete official trademark register for your selected jurisdiction and applies examiner-trained likelihood-of-confusion algorithms to retrieve every prior mark that could reasonably conflict with your mark — exact matches, phonetic similarities, spelling variants, partial and coordinated marks, translations, and more. The retrieval is intentionally broad, designed to surface every reasonable edge case and nuance. Claude then applies a final layer of legal reasoning and produces a full ranked retrieval report and clearance summary memo.

This connector searches official register data only. Common law, marketplace, domain, and social media use are not included.

Connector URL

https://connect.haloo.ai/trademark-search/mcp

Authentication

OAuth 2.1 (PKCE, Dynamic Client Registration) via Haloo. Claude discovers the authorization server from /.well-known/oauth-protected-resource/mcp; sign in with your Haloo account on first connect. Each search consumes one prepaid usage unit.

Tools

search_trademark

Start a clearance for one proposed mark in one jurisdiction. Reserves one usage unit and returns {status:"submitted", search_id, typical_wait_minutes, estimated_wait_minutes, poll_every_seconds, unit_status:"reserved"} — or a structured invalid_request / payment_required / error result (see Result statuses). Invalid input, including an unsupported jurisdiction, is rejected before anything is charged.

ParameterTypeNotes
mark requiredstringProposed trademark text, e.g. "Honey Money".
country requiredstringONE jurisdiction code from the supported list (US, CA, GB, EM = EUIPO, WO = WIPO, AU, …; aliases such as UK, EU, WIPO are translated). Unrecognized codes are rejected with unsupported_jurisdiction and no charge. One call clears one jurisdiction.
niceClasses requiredint[]Nice classification classes 1–45, e.g. [9, 42].
goodsServices optionalstringFree-text goods/services for relatedness, within the niceClasses scope.
compound optionalstringCompound form of the mark (e.g. "power lifter" for POWERLIFTER).
synonyms optionalstringComma-separated synonyms/antonyms to widen the search.

get_clearance_report

Poll the clearance (free; never charges a unit). While running returns {status:"in_progress", step, message, typical_wait_minutes, estimated_wait_minutes, poll_every_seconds, elapsed_seconds}; when done returns {status:"complete", subject, triage_band, total_found, memo_url, docx_url, ranking_url, ranking_json_url, download_links_expire_in, memo_included, unit_status, unit_note}. The memo body is not inlined by default — it is the file at memo_url; pass include_memo=true to also receive memo_markdown (~10–15k tokens). A clearance that ended in failure returns status:"failed"; an unknown id returns status:"not_found".

ParameterTypeNotes
search_id requiredstringThe id returned by search_trademark.
include_memo optionalbooleanDefault false. When true, a complete result also carries the full memo text inline as memo_markdown. Ignored unless status is complete.

Result statuses

ToolstatusMeaningNext step (retry_action)
search_trademarksubmittedClearance started; one unit reserved (charged only if it completes with results).poll get_clearance_report
invalid_requestInput must change (mark, jurisdiction, classes…). Nothing reserved.fix_input
payment_requiredNo usage units; billing_url to buy them. Nothing reserved.buy_units
errorTransient problem with this call (billing service, job start) or authentication.same_call / none
get_clearance_reportin_progressStill running.poll again at poll_every_seconds
completeReport ready; unit_status charged or refunded (refund_pending / unknown only if the billing service was unreachable at the end).—
failedTerminal. The clearance ended in failure; this search_id never completes. Unit refunded (or refund pending; unknown for pre-contract records). Carries subject.new_search (reserves a unit)
not_foundNo record for this search_id (never existed here, or expired from storage).none
errorTransient problem with this poll only; the clearance is unaffected.poll_again

Structured fields (every status except in_progress)

FieldValuesMeaning
reason_codesee belowMachine-readable cause.
retryabletrue / false / nullIs a fresh attempt (per retry_action) within a minute or two likely to succeed; null when the connector cannot say.
retry_actionsame_call · poll_again · new_search · fix_input · buy_units · noneThe next step.
unit_statusnot_charged · reserved · charged · refunded · refund_pending · unknownBilling state of the usage unit. reserved appears only on submitted; refund_pending: the release call failed and the hold expires automatically (~30 min); unknown: the connector has no information.
unit_notetextOne factual sentence about the unit, suitable to relay verbatim.
message / errortextHuman-readable, factual description. error duplicates message on every non-success status except payment_required (expected flow, not an error).

Reason codes

reason_codeStatusCause
invalid_mark · invalid_compound · invalid_synonym · invalid_nice_classesinvalid_requestInput failed validation.
multiple_jurisdictions · invalid_jurisdiction · unsupported_jurisdictioninvalid_requestSeveral codes, a malformed code, or a register the search does not serve.
payment_requiredpayment_requiredNo prepaid usage units.
auth_requirederrorThe connection's token is invalid or introspection was unavailable.
billing_unavailable · submit_failederrorTransient failure reserving the unit / starting the job.
register_unavailablefailedThe register service returned an error or was unreachable (may be temporary).
register_rejected_requestfailedThe register service rejected the request (HTTP 4xx other than 401/403/408/429).
register_auth_failedfailedThe connector could not authenticate to the register service (HTTP 401/403) — a Haloo-side issue; contact support.
provider_overloaded · provider_errorfailedThe AI analysis provider was overloaded / errored through automatic retries.
storage_unavailable · analysis_output_invalidfailedReport storage blip / AI output failed validation (usually transient).
processing_errorfailedUnexpected error; retryability unknown (retryable: null).
not_found · status_unavailable · status_stalenot_found / errorUnknown id / temporary status-read problem / no progress reported for an unusually long time.

Supported jurisdictions

194 registers, verified searchable against the live register service on 2026-09-15. Codes are ISO 3166-1 / WIPO ST.3 (e.g. EM = EUIPO, WO = WIPO, AP = ARIPO, OA = OAPI, BX = Benelux).

ADAEAFAGAIALAMAOAPARATAUAWAZBABBBDBGBHBMBNBOBQBRBSBTBWBXBYBZCACDCHCLCNCOCRCUCVCWCYCZDEDJDKDMDODZECEEEGEMESETFIFJFRGBGDGEGGGHGIGMGRGTGYHKHNHRHTHUIDIEILINIQIRISITJEJMJOJPKEKGKHKNKRKUKWKYKZLALBLCLILKLRLSLTLVLYMAMCMDMEMGMHMKMMMNMOMSMTMUMVMWMXMYMZNANCYNGNINONPNZOAOMPAPEPFPGPHPKPLPRPSPTPYQARORSRURWSASBSCSDSESGSISKSLSMSRSTSVSXSYSZTCTHTJTMTNTOTRTTTWTZUAUGUSUYUZVCVEVGVNVUWBWOWO6WOAWSXKXZYAYEZAZMZW

Accepted aliases (translated before the search): ARIPO → AP, EU → EM, KS → XK, OAPI → OA, SP → ES, UF → US, UK → GB, USA → US, WIPO → WO.

No national register: Belgium, the Netherlands and Luxembourg are covered by BX (Benelux); the 17 OAPI member states (e.g. Burkina Faso, Cameroon, Senegal, Côte d'Ivoire) by OA. Requests for those country codes are rejected with a suggested_country pointing to the regional register.

Extra registers enabled by configuration (accepted, not part of the verified sweep): none.

Usage notes