notolens
Server Details
Monitor domains, trademarks and app stores for brand conflicts. Triage matches and track takedowns.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
TDQS
Score is being calculated.
Available Tools
21 toolsadd_assetAdd assetInspect
Add an asset to a monitor: an official domain to watch for conflicting registrations, a mark text for trademark office filings, or a brand keyword for app store listings. This is confirmed work: show the user the exact type, value, config and reference choice first and pass confirm true, because the first scan is scheduled as soon as the asset exists and archiving (dashboard-only) only stops future scans, it does not undo a scan that already completed. Required config per type: domain needs config.brand, trademark needs config.offices (subset of US, EM, WO; classes optional, Nice 1-45), app needs config.stores (subset of google_play, app_store). Domain assets also need an explicit reference choice (capture, upload or skip); trademark and app accept an optional upload staged with prepare_asset_upload. A capture always goes through preview_domain: pass its capture_token so the stored baseline is exactly the render the user approved, and the response includes that screenshot as image content; when the preview rendered nothing (captured false) pass skip instead, leaving reference_stored false. site_result carries the probe outcome recorded at preview time. For domain assets, the response's match_scope reports the matching scope: 'distinctive' names are matched across TLDs while 'generic' common terms are only watched on the asset's own suffix. next_scan_at reports when the first scan is due, or null while the monitor is paused. Errors name the cause: invalid input, plan limit reached, or a duplicate already watched by the monitor.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Asset type: domain, trademark or app. | |
| value | Yes | What to watch: the official domain for type domain (e.g. "acme.com"), the mark or brand text for trademark, the brand keyword for app. | |
| config | No | Type-specific options: brand (required for domain), offices (required for trademark: subset of US, EM, WO), classes (optional Nice classes 1-45, trademark only), stores (required for app: subset of google_play, app_store). | |
| confirm | Yes | Required. Set true only after the user has explicitly confirmed the exact asset: its type, value, config and reference choice, knowing the first scan is scheduled right away. | |
| reference | No | Visual baseline. Required for domain: capture stores the render approved in preview_domain via its capture_token, upload attaches an image staged with prepare_asset_upload, skip stores no baseline (use it when the preview rendered nothing, captured false). Optional for trademark and app; only upload applies there (mark image or app icon). | |
| monitor_id | Yes | Monitor id from list_monitors or create_monitor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | Yes | |
| site_result | Yes | |
| next_scan_at | Yes |
add_takedown_eventAdd takedown eventInspect
Append an entry to a takedown's timeline. comment records progress or correspondence ('registrar replied, ticket #123'); action logs a step the user performed from the match's possible next steps and requires that step's catalog code, the same codes get_match lists under actions. Steps only log on an open takedown; comments also work on closed ones. Entries are append-only: a mistaken one is retracted with retract_takedown_event, never edited.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | What happened, in plain text. For an action, describe what was done. | |
| code | No | Required on action: the catalog code of the step performed, e.g. report_registrar. Never set on comment. | |
| type | Yes | comment is a freeform note; action logs a performed step and needs code. | |
| takedown_id | Yes | Takedown id from list_takedowns. |
Output Schema
| Name | Required | Description |
|---|---|---|
| event | Yes |
create_monitorCreate monitorInspect
Create a monitor: the container that watches one brand's conflicting domain registrations, trademark filings and app listings. Name it after the brand. The monitor starts empty and dormant; add assets one at a time with add_asset and the first scan starts on its own. Plan limits apply and the error names the limit that was hit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The brand or company name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| monitor | Yes |
get_accountGet accountRead-onlyInspect
Get the account context for this connection: the signed-in user, the organization this token operates on, its subscription plan and limits, digest notification settings, and whether this connection holds the write scope (write_access). A good first call to confirm which account and organization the agent is connected to. A null plan means the organization has no paid subscription; send the user to billing_url to subscribe or upgrade. On a read-only connection, new_monitor_url and settings_url are the handoff links for setup and preferences.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | Yes | |
| user | Yes | |
| limits | Yes | |
| billing_url | Yes | |
| organization | Yes | |
| settings_url | Yes | |
| write_access | Yes | Whether this connection holds the mcp:write scope. When false, write tools fail; reconnect with the write permission approved. |
| notifications | Yes | The signed-in user's digest settings: daily or off, plus the send hour in the user's timezone. Null when the connection has no user. |
| new_monitor_url | Yes |
get_matchGet matchRead-onlyInspect
Get the full curated detail for one match: triage status, risk assessment, the source record (DNS, site, registration and network data for domains; register record for trademarks; store listing for apps), possible next steps in actions (enforcement guides with steps and contacts; options for the user to decide on, never advice, and nothing is sent or filed by notolens), and whether a screenshot capture exists (fetch it with get_match_screenshot). reappeared marks a domain that came back after an absence.
| Name | Required | Description | Default |
|---|---|---|---|
| match_id | Yes | Match id from list_matches. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| match | No | |
| message | No | |
| processing | No |
get_match_evidenceGet match evidenceRead-onlyInspect
Get a download link for the evidence PDF of one match: the same document the dashboard exports for enforcement work such as takedown requests and disputes, compiling the match details, the observed source record and captured images. It carries observed facts only: no risk score, assessment summary or possible next steps. download_url needs no sign-in and expires at expires_at (a few minutes); hand it to the user or fetch it before then, and call again for a fresh link.
| Name | Required | Description | Default |
|---|---|---|---|
| match_id | Yes | Match id from list_matches. |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | |
| expires_at | Yes | |
| download_url | Yes |
get_match_screenshotGet match screenshotRead-onlyInspect
Get the screenshot captured for a domain match, as image content: the top of the rendered page, the same view the risk assessment reads. Only domain matches with a reachable site have one. The full-page capture is on the match's dashboard_url.
| Name | Required | Description | Default |
|---|---|---|---|
| match_id | Yes | Match id from list_matches. |
get_takedownGet takedownRead-onlyInspect
Get the full detail for one takedown: status, which attempt it is out of the match's total, whether it can be reopened, the append-only timeline (lifecycle entries plus comments and logged steps; retracted entries stay listed, muted) and the match it tracks with its record and possible next steps. The mine flag on an event marks entries the signed-in user authored, which are the ones retract_takedown_event can mute.
| Name | Required | Description | Default |
|---|---|---|---|
| takedown_id | Yes | Takedown id from list_takedowns or a match's takedown field. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| match | No | |
| events | No | |
| takedown | No | |
| match_processing | No |
list_matchesList matchesRead-onlyInspect
List matches: conflicting domain registrations, trademark filings or app listings found by the monitors. Results are filtered to exactly one status (default inbox) and ordered by assessed risk, worst first. Combine status with min_risk/max_risk or verdict to answer questions like "watched matches with risk above 5". To triage the results, call update_matches with their ids or the same filters.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Match kind: domain, trademark or app. | |
| page | No | Page number, 1-based. Page size is 50. | |
| since | No | ISO 8601 date or datetime; only matches detected or with activity on/after this time. E.g. "2026-04-20" or a full timestamp for "this week". | |
| status | No | Triage bucket: inbox (needs review), watching (no action needed now, record refreshes on schedule), in_takedown (an open takedown is in progress; record refreshes on schedule), resolved, dismissed. Defaults to inbox. | |
| subject | No | Substring match on the subject (the conflicting domain, mark or app name). At least 3 characters. | |
| verdict | No | Verdict bucket derived from the assessed risk: violation, warning, clear or inconclusive (assessed but unscorable). | |
| max_risk | No | Only matches whose assessed risk is at most this value, on the 0-10 scale. | |
| min_risk | No | Only matches whose assessed risk is at least this value, on the 0-10 scale. Unscored matches are excluded. | |
| monitor_id | No | Restrict to one monitor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| total | Yes | |
| matches | Yes | |
| page_size | Yes |
list_monitorsList monitorsRead-onlyInspect
List the organization's brand monitors. Each monitor watches domains, trademark offices and app stores for conflicts with one brand. Only active assets are listed; archived ones are hidden, same as the dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| monitors | Yes |
list_scansList scansRead-onlyInspect
List monitoring scans: each scan is one kind-scoped check of a monitor's sources (domains, trademarks or apps). Shows when monitoring last checked, what it found, and any asset failures.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-based. Page size is 50. | |
| since | No | ISO 8601 date or datetime; only scans started on/after this time. | |
| monitor_id | No | Restrict to one monitor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| scans | Yes | |
| total | Yes | |
| page_size | Yes |
list_takedownsList takedownsRead-onlyInspect
List takedowns: self-guided enforcement attempts the user works against matches (notolens never submits anything itself). Filter to the open queue (the default) or the closed history; each item links back to its match, and get_takedown shows the full timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-based. Page size is 50. | |
| state | No | Which bucket to list: open attempts in progress (default) or closed ones. | |
| monitor_id | No | Restrict to one monitor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| open | Yes | |
| page | Yes | |
| total | Yes | |
| closed | Yes | |
| page_size | Yes | |
| takedowns | Yes |
prepare_asset_uploadPrepare asset uploadInspect
Stage an image upload for an asset reference: a mark image, an app icon or a domain screenshot the user supplies. Returns a signed URL; POST the raw image bytes to it (PNG, JPEG, WebP, GIF or AVIF, up to 8 MB), then pass upload_token back verbatim as reference.upload_token on add_asset. The link is bound to this organization and expires within a few minutes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| accept | Yes | |
| max_bytes | Yes | |
| expires_at | Yes | |
| upload_url | Yes | |
| upload_token | Yes |
preview_domainPreview domainInspect
Render a domain before adding it as an asset on a monitor with a capture reference. A preview exists only for a planned add_asset: it needs the monitor, passes the same checks add_asset would (valid domain, plan slot free, not already watched) and takes confirm once the user has asked for the add. Returns the screenshot as image content so it can be shown to the user, plus a capture_token bound to that domain with its expiry in expires_at (a few minutes). Show the image to the user and pass that token as reference.capture_token on add_asset only once they approve it; to retry, call preview_domain again. captured marks a usable capture: a favicon-only render has a token but no image, while a failed or blocked render returns the outcome with neither. Requires the mcp:write scope, since it only makes sense when setting up monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | A valid domain, e.g. "acme.com". | |
| confirm | Yes | Required. Set true only after the user has asked to add this domain to this monitor; a preview is the first step of add_asset, never a standalone lookup. | |
| monitor_id | Yes | Monitor id from list_monitors or create_monitor. The render is for a domain asset planned on this monitor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | |
| captured | Yes | |
| expires_at | Yes | |
| capture_token | Yes |
retract_takedown_eventRetract takedown eventDestructiveIdempotentInspect
Retract a comment or logged step on a takedown. The entry stays in the append-only timeline, muted. Only the author can retract it: the mine flag on the event says whether the signed-in user authored it. Lifecycle entries (started, succeeded, unsuccessful, dropped, reopened) are never retractable.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event id from the get_takedown timeline. | |
| takedown_id | Yes | Takedown id from list_takedowns. |
Output Schema
| Name | Required | Description |
|---|---|---|
| event | Yes |
send_feedbackSend feedbackInspect
Send a message to the notolens team: a question, product feedback, or a bug report about notolens itself (the service, the dashboard or these tools), not about a match. The message goes out as an email from the signed-in user, and replies arrive at the account email (reply_to). Send only what the user asked to send: show them the exact topic and text first and pass confirm true once they approve it. Include what the user did and what they expected, plus any dashboard_url the message is about; never include passwords, tokens or other secrets. Each user can send a few messages a day; past that the call fails with a limit error, so do not retry it. Works on read-only connections because it changes nothing in the account.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | question for how-to or account questions, feedback for suggestions and opinions, bug for something in notolens that behaves wrongly. | |
| confirm | Yes | Required. Set true only after the user has seen and approved the exact topic and message. | |
| message | Yes | The message exactly as the user approved it, 10 to 5000 characters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sent | Yes | |
| reply_to | Yes | The account email that replies from the notolens team go to. |
start_takedownStart takedownIdempotentInspect
Start a self-guided takedown on a match: opens an enforcement attempt the user works through manually, using the match's possible next steps as the guide; notolens never submits or sends anything itself. Requires an open match (inbox or watching); a closed match errors. Starting moves the match to in_takedown and arms recurring record refreshes so a subject that stays up keeps being probed; it stays in_takedown until the attempt closes or the match is resolved or dismissed. Safe to repeat: an already-open takedown is returned with created=false. Record work performed with add_takedown_event, close the attempt with update_takedown, and use get_match_evidence for the PDF to attach when filing.
| Name | Required | Description | Default |
|---|---|---|---|
| match_id | Yes | Match id from list_matches. |
Output Schema
| Name | Required | Description |
|---|---|---|
| created | Yes | |
| takedown | Yes |
summarize_matchesSummarize matchesRead-onlyInspect
Get match counts by triage status and kind, plus how many are new (undecided inbox matches first found by the latest completed scan of their kind) and how many scans are active (active_scans). A good first call to understand the current state.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Restrict to one match kind. | |
| monitor_id | No | Restrict to one monitor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| new | Yes | |
| total | Yes | |
| by_kind | Yes | |
| by_status | Yes | |
| active_scans | Yes |
update_matchesUpdate matchesDestructiveIdempotentInspect
Change the triage status of matches. This is the triage action behind requests like "dismiss everything in the inbox below risk 5" or "move all dismissed back to inbox". Select matches in exactly one of two ways: match_ids for explicit picks (ids come from list_matches), or filter with the same fields as list_matches plus a required status naming the bucket to move out of (in_takedown selects matches with an open takedown). Filter moves apply immediately to every match currently matching, capped at 500 per call; repeat for larger sets. Call list_matches with the same filters first to review the set. Dismissing or resolving cancels any open assessment and closes any open takedown. Matches in in_takedown are skipped by moves to inbox or watching: close the takedown with update_takedown instead. in_takedown is never a target; start_takedown moves a match there. watching and in_takedown arm recurring record checks, daily for domain and app matches and weekly for trademark, and every check writes a record and queues a reassessment: use watching only for subjects whose changing state would change the decision, not for undecided matches, which sit in inbox unchecked. dismissed is permanent for trademark and app matches, which never resurface; domain matches reappear automatically if the subject resurfaces, so confirm with the user before dismissing trademark or app matches.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Move every match currently matching these filters, same semantics as list_matches. Mutually exclusive with match_ids. | |
| status | Yes | Target triage status: inbox (undecided, no recurring checks), watching (recurring checks armed), resolved or dismissed. | |
| match_ids | No | Explicit match ids to move, up to 200. Mutually exclusive with filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| moved | Yes | |
| matched | Yes | |
| truncated | No |
update_monitorUpdate monitorIdempotentInspect
Pause or resume a monitor. Pausing stops scans and record refreshes but keeps the monitor and its matches; resuming restarts scanning within plan limits. Deleting a monitor is dashboard-only because it removes its matches too.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | New status: paused stops monitoring, active resumes it. | |
| monitor_id | Yes | Monitor id from list_monitors or create_monitor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| monitor | Yes |
update_takedownUpdate takedownIdempotentInspect
Change a takedown's status. Close an open attempt with succeeded (the subject is down; resolves the match), unsuccessful (tried and failed) or dropped (abandoned); both non-success closes return the match to inbox for fresh triage and stop its recurring checks. Pass open to reopen the latest closed attempt, moving the match back to in_takedown and re-arming its check; reopening fails when a newer attempt exists or the subject reappeared after it closed; start a fresh attempt with start_takedown then.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | New status: open reopens a closed attempt; succeeded, unsuccessful or dropped close an open one. | |
| takedown_id | Yes | Takedown id from list_takedowns. |
Output Schema
| Name | Required | Description |
|---|---|---|
| takedown | Yes |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
21 tool updates
- First observed
add_asset - First observed
add_takedown_event - First observed
create_monitor - First observed
get_account - First observed
get_match - First observed
get_match_evidence - First observed
get_match_screenshot - First observed
get_takedown - First observed
list_matches - First observed
list_monitors - First observed
list_scans - First observed
list_takedowns - First observed
prepare_asset_upload - First observed
preview_domain - First observed
retract_takedown_event - First observed
send_feedback - First observed
start_takedown - First observed
summarize_matches - First observed
update_matches - First observed
update_monitor - First observed
update_takedown
Publisher details
- Operator
- Sebastian Graef LLC
- Operator website
- https://notolens.com/
- Vendor relationship
- First-party
- Documentation
- https://notolens.com/ai
- Trust center
- Not applicable
- Restrictions
- Paid plan
Related MCP Connectors
Trademark filing monitor across 40+ countries - detect filings that resemble your brand.
Trademark search, monitoring and conflict research across 30+ registers, with provenance.
AI-visibility monitoring for your brand across ChatGPT, Claude, Perplexity & Gemini.
Domain & brand intelligence: company enrichment, tech stack detection, brand research.
Related MCP Servers
- AlicenseAqualityDmaintenanceManages brand monitoring projects, runs scans across 350+ LLMs, and analyzes results through natural language.1737 npm1MIT
- AlicenseAqualityCmaintenanceDomain intelligence for DNS, WHOIS/RDAP, SSL/TLS, subdomain discovery, availability, valuation, email security, and typosquatting and brand protection.11MIT
- AlicenseAqualityCmaintenanceTrack how your brand appears in AI-generated answers across ChatGPT, Perplexity, and other AI models. Analyze visibility, sentiment, citations, and domain rankings with 31 tools โ including analytics reports, chat inspection, query analysis, and full CRUD for brands, prompts, tags, and topics.1769 npm2MIT

LLM Pulse MCP Serverofficial
AlicenseAqualityBmaintenanceMonitors brand mentions, citations, sentiment, competitor share of voice, and GEO performance across AI search engines.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.