Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Fine Structure

REMOTE · FINESTRUCTURE.AI

Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email.

Available components

0 this week 82 Trust /100

Last scanned (4 hours ago)

Scores higher than 85% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Developer Tools

Recent critical change

Authorization (15 Aug 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

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 Security63
Transport & Reachability100
Schema Quality & AI Usability86
  • 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
  • Tool/resource definitions use about 9974 tokens (~100/item across 99 items; 99 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage95
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 85% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 100 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

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.

  • 3 Nov 26 0
    • Tool “schedule_agent_task” rewrote its description, which is the text the model reads security
    • “schedule_agent_task” added an optional parameter “watch” cosmetic
  • 20 Oct 26 0
    • New tool “preview_saved_version” functional
    • New tool “set_agent_owner_relay” functional
  • 18 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
  • 15 Oct 26 0
    • Tool “list_apps” rewrote its description, which is the text the model reads security
  • 14 Oct 26 0
    • New tool “send_agent_message”, which the server declares destructive security
    • New tool “get_agent_conversation” functional
    • New tool “get_agent_task” functional
    • New tool “list_agent_conversations” functional
  • 5 Oct 26 −1
    • New tool “get_app_metadata” functional
    • New tool “set_app_metadata” functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 0
    • Tool “get_app_security_context” rewrote its description, which is the text the model reads security
    • Schema quality: 7782 → 9012 ▼ functional
    • New tool “create_platform_request” functional
    • New tool “get_platform_request” functional
    • New tool “invoke_function” functional
    • New tool “list_platform_requests” functional
    • New tool “reply_platform_request” functional
    • New tool “set_function_policy” functional
    • New tool “update_platform_request” functional
Diagnostics

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 5 Nov 2026 · Probed https://finestructure.ai/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=finestructure.ai CN=WE1,O=Google Trust Services,C=US 21 Oct 2026 19 Jan 2027 ECDSA 256 ECDSA-SHA256 3e471295b4a4af500e5677685d7aa1bf
SANs: finestructure.ai, *.finestructure.ai
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of finestructure.ai. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 1814, 3799 8, 8 Verified
finestructure.ai. 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
Header Value
strict-transport-security max-age=31536000; includeSubDomains
x-content-type-options nosniff
x-frame-options SAMEORIGIN
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(self), geolocation=()

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://finestructure.ai/api/mcp Verified 200
http (plaintext) http://finestructure.ai/api/mcp HTTPS enforced 301 https://finestructure.ai/api/mcp
MCP tools · 99 exposed · ~9,146 tokens

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 →

Tool Tokens
add_custom_domain ~74

Attach or replace the app custom domain through the same Fine Structure Studio custom-domain flow. Returns exact DNS verification and routing records for the user to configure at their DNS provider.

NameTypeReqDescription
app_idstringyesThe app ID
domainstringyesCustom domain to connect, for example example.com or app.example.com

No output schema declared.

No examples provided.

add_file_change ~119

Stage one file upsert or delete inside a change set. Does not modify the live app until apply_change_set. Paths follow the Fine Structure app file API, documented at https://finestructure.ai/api/mcp/docs.

NameTypeReqDescription
app_idstringyesThe app ID
change_set_idstringyesChange set ID
contentstring–Complete file contents for upsert
file_typestring–Optional file type override
operationstring––
pathstringyesVirtual file path

No output schema declared.

No examples provided.

agency_create_claim_link ~130

Agency mode only. Create a client claim link for an existing app owned by the agent. The client must log in with the invited email before ownership transfers.

NameTypeReqDescription
app_idstringyesExisting app ID owned by the agent
claim_expires_in_daysinteger–Claim link lifetime, 1-90 days
client_emailstringyesClient email allowed to claim ownership
client_full_namestring–Optional client display name
keep_agent_collaboratorboolean–Invite agent as editor after claim
notestring–Optional internal note

No output schema declared.

No examples provided.

agency_create_client ~84

Agency mode only. Create or update a client record for an account-level agent. This does not create a verified Fine Structure user account and does not transfer ownership.

NameTypeReqDescription
client_emailstringyesClient email that will be allowed to claim projects
client_full_namestring–Optional client display name
notestring–Optional internal note for the agency

No output schema declared.

No examples provided.

agency_create_client_app ~176

Agency mode only. Create a new app owned by the agent, start generation, and create a claim link for the client. Ownership transfers only when the invited client logs in with the same email and accepts the claim link.

NameTypeReqDescription
claim_expires_in_daysinteger–Claim link lifetime, 1-90 days
client_emailstringyesClient email allowed to claim ownership
client_full_namestring–Optional client display name
descriptionstring–Optional short app description
keep_agent_collaboratorboolean–After claim, invite the agent back as an editor collaborator
namestringyesName for the app (1-100 chars)
notestring–Optional internal client/project note
promptstringyesDetailed description of the app to build

No output schema declared.

No examples provided.

agency_get_claim_status ~49

Agency mode only. Inspect one handoff status without exposing the raw claim token.

NameTypeReqDescription
handoff_idstringyesHandoff ID returned by agency_create_claim_link or agency_create_client_app

No output schema declared.

No examples provided.

agency_list_clients ~43

Agency mode only. List client records and app handoff status for the authenticated agent.

NameTypeReqDescription
include_handoffsboolean–Include claim links status without raw tokens

No output schema declared.

No examples provided.

apply_change_set ~69

Apply a staged change set to the app. Creates a Saved Version before applying. Blocks on validation errors unless force=true.

NameTypeReqDescription
app_idstringyesThe app ID
change_set_idstringyesChange set ID
forceboolean–Apply even if validation has errors

No output schema declared.

No examples provided.

attach_agent_whatsapp ~111

Connect a platform WhatsApp number to one of the account's agents, so the owner can message that number and reach that agent. Requires the owner to be verified first. Take phone_number_id from get_agent_whatsapp. A number already used by another account is still valid to connect: it answers only this owner's verified phone.

NameTypeReqDescription
agent_idstringyesThe agent that should answer on this number.
phone_number_idstringyesphone_number_id from get_agent_whatsapp claimable_numbers.

No output schema declared.

No examples provided.

check_domain_verification ~64

Check Fine Structure custom-domain verification and SSL status for the configured custom domain, then save the latest status.

NameTypeReqDescription
app_idstringyesThe app ID
domainstring–Optional configured custom domain. If omitted, uses the app's current custom domain.

No output schema declared.

No examples provided.

check_subdomain_available ~125

Check whether a platform subdomain can be claimed before calling set_app_subdomain. Returns available plus a status of available, invalid, reserved, taken, current, or empty, with the exact reason. Pass app_id (an app you own) to have that app's own current subdomain reported as 'current' instead of 'taken'.

NameTypeReqDescription
app_idstring–Optional ID of an app you own. When supplied, this app's own subdomain reports as 'current' instead of 'taken'.
subdomainstringyesSubdomain label to check

No output schema declared.

No examples provided.

compare_current_to_version ~59

Compare the current app files to a Saved Version and return compact per-file diffs.

NameTypeReqDescription
app_idstringyesThe app ID
max_diff_charsinteger––
snapshot_idstringyesSaved Version snapshot ID

No output schema declared.

No examples provided.

compare_saved_versions ~77

Compare two Saved Versions and return per-file additions, removals, modifications, and compact diffs.

NameTypeReqDescription
app_idstringyesThe app ID
base_snapshot_idstringyesOlder/base snapshot ID
max_diff_charsinteger––
target_snapshot_idstringyesNewer/target snapshot ID

No output schema declared.

No examples provided.

configure_domain_redirects ~87

Configure custom-domain redirect policy: primary domain, optional www/root redirect, and HTTPS enforcement.

NameTypeReqDescription
app_idstringyesThe app ID
force_httpsboolean–Redirect HTTP custom-domain requests to HTTPS
primary_domainstringyesCanonical primary domain, for example example.com
redirect_wwwboolean–Redirect the www/root counterpart to primary_domain

No output schema declared.

No examples provided.

configure_integration ~81

Store safe non-secret integration metadata for an app. Use set_secret for API keys/tokens.

NameTypeReqDescription
app_idstringyesThe app ID
configobjectyesSafe metadata only, such as workspace/team/name/email
is_activeboolean–Set false to disconnect this integration metadata
providerstringyesIntegration provider ID

No output schema declared.

No examples provided.

confirm_owner_phone_verification ~100

Confirm the 6-digit code the owner received on WhatsApp from start_owner_phone_verification. On success the owner is verified: agents can message them, and platform numbers become connectable.

NameTypeReqDescription
codestringyesThe 6-digit code from the WhatsApp message.
phonestringyesThe same phone number the code was sent to.
regionstring–Optional ISO region hint, matching the one used when sending.

No output schema declared.

No examples provided.

create_ab_test ~152

Create a native Fine Structure A/B test between existing app pages. Use update_app first if a variant page still needs to be generated. Creates a Saved Version before the change.

NameTypeReqDescription
app_idstringyesThe app ID
goal_event_filterobject–Optional goal filter, for example {'entity_name': 'Lead'}
goal_event_typestring–Optional conversion goal type: entity_create, any, form_submit
is_activeboolean–Whether to activate the test immediately
namestringyesExperiment name
page_namestringyesBase route page that triggers the experiment
variantsarrayyesAt least two variants. Traffic must total 100.

No output schema declared.

No examples provided.

create_agent ~233

Create an autonomous AI agent on the user's Fine Structure account: a standing worker, not a chat session. It gets the platform's default safe tool policy and its own email address, it can read and write the app database, and once the owner phone is verified (see get_agent_whatsapp) it can message its owner on WhatsApp and by email through the platform system channels. Pair it with schedule_agent_task for recurring work such as following up new leads on WhatsApp each morning, watching an app for runtime errors, or sending a weekly summary. Messaging anyone other than the verified owner requires a channel the owner connects in the Fine Structure Studio.

NameTypeReqDescription
app_idstring–Optional app to attach the agent to; account-level when omitted
descriptionstringyesWhat this agent is responsible for, one or two sentences
namestring–Agent display name (e.g. 'Lead Follow-up'). Auto-derived from role when omitted.
personastring–Optional working style and tone instructions for the agent
rolestringyesShort role label (e.g. 'sales assistant')

No output schema declared.

No examples provided.

create_app ~100

Create a new application from a natural language prompt. The AI generates a complete web app with pages, components, styling, and data models. Returns a job_id - poll get_job_status to track progress. When the job is done, the app is ready.

NameTypeReqDescription
descriptionstring–Optional short description
namestringyesName for the app (1-100 chars)
promptstringyesDetailed description of the app to build

No output schema declared.

No examples provided.

create_change_set ~54

Create a staged file change set. Add multiple file changes, validate them as one app state, then apply atomically.

NameTypeReqDescription
app_idstringyesThe app ID
labelstring–Optional short label

No output schema declared.

No examples provided.

create_entity_records ~96

Create/insert records in one app entity. Executes directly for the authenticated app owner and returns the created record ids.

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name
expected_countinteger–Optional safety check; the write aborts if the record count differs
reasonstring–Why these records should be created
recordsarrayyesRecords to create

No output schema declared.

No examples provided.

create_entity_schema ~86

Create an entity schema file in entities/<Entity>.json. Creates a Saved Version before writing.

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name
indexesarray––
metadataobject––
overwriteboolean––
relationshipsarray––
schemaobjectyesJSON schema object

No output schema declared.

No examples provided.

create_platform_request ~258

Open a request to the Fine Structure platform team: a bug, a feature request or a question about the platform itself (not about the user's app). Use it when something in the platform blocks you instead of working around it. Give a reproduction the team can run (invoke_function / curl / the exact tool call and result), what you expected, and how the team will know it is closed. Credential-looking values are redacted. Returns request_id and a Studio URL; the team's replies, status changes and deployments come back through get_platform_request / list_platform_requests. Limits: 20 per account per day, 32 KB.

NameTypeReqDescription
acceptancestring–How the team will know it is closed
app_idstring–Optional: the app where it showed up
attachmentsarray–Optional app file paths or log ids
bodystringyesFree text, markdown allowed: context, impact, what you tried
expectedstring–What should have happened
reproductionstring–Steps, invoke_function calls or curl commands that reproduce it
severitystring––
titlestringyesOne line, what is wrong or missing
typestringyes–

No output schema declared.

No examples provided.

delete_ab_test ~50

Delete a native A/B test from an app. Creates a Saved Version before the change.

NameTypeReqDescription
app_idstringyesThe app ID
test_idstringyesA/B test ID

No output schema declared.

No examples provided.

delete_entity_records ~118

Delete exact records by ID or exact-match filters. Executes directly for the authenticated app owner; pass expected_count as a safety check to abort on a mismatch.

NameTypeReqDescription
app_idstringyesThe app ID
entitystringyesEntity name
expected_countinteger–Required match count safety check, when known
filters––One exact-match selector or a list of exact-match selectors
reasonstring–Why these records should be deleted
record_idsarray–Exact record IDs to delete

No output schema declared.

No examples provided.

delete_secret ~36

Delete one app secret by key.

NameTypeReqDescription
app_idstringyesThe app ID
keystringyesSecret key name

No output schema declared.

No examples provided.

detach_agent_whatsapp ~55

Disconnect the owner's WhatsApp route from a platform number. Removes only this account's route; other accounts sharing the number keep theirs.

NameTypeReqDescription
phone_number_idstringyesThe number to disconnect, from get_agent_whatsapp.

No output schema declared.

No examples provided.

discard_change_set ~44

Discard a pending staged change set without changing app files.

NameTypeReqDescription
app_idstringyesThe app ID
change_set_idstringyesChange set ID

No output schema declared.

No examples provided.

get_ab_test_stats ~50

Get views, unique visitors, conversions, and conversion rates for an A/B test.

NameTypeReqDescription
app_idstringyesThe app ID
test_idstringyesA/B test ID

No output schema declared.

No examples provided.

get_agent_conversation ~96

Read visible messages, answers and result links in an owned agent's conversation. Returns the newest page in chronological order. For older history, pass next_before_id as before_id. For new replies, omit before_id.

NameTypeReqDescription
agent_idstringyesOwned agent ID from list_agents.
before_idstring––
conversation_idstringyesConversation ID returned by these tools.
limitinteger––

No output schema declared.

No examples provided.

get_agent_task ~97

Check a durable task returned by send_agent_message or list_agent_tasks. Includes the latest execution status and pending approvals, including before a run starts. Task scheduling state is separate from run outcome. Read the conversation for the actual answer; accepted/queued is not completed. Approvals must still be decided by the owner in Fine Structure.

NameTypeReqDescription
agent_idstringyesOwned agent ID from list_agents.
task_idstringyes–

No output schema declared.

No examples provided.

get_agent_whatsapp ~85

Read the WhatsApp state of the connected account: whether the owner's phone is verified, which platform numbers they can connect, and which conversations already route to which agent. Call this first whenever the user asks to talk to an agent on WhatsApp, and repeat its next_step to them.

NameTypeReqDescription
agent_idstring–Optional: report only this agent's WhatsApp state.

No output schema declared.

No examples provided.

get_app_analytics ~72

Traffic analytics for an app's published site over a chosen window: total views, unique visitors, daily series, top pages, top referrer domains and device split.

NameTypeReqDescription
app_idstringyesThe app ID
daysinteger–Window in days (1-90, default 7)

No output schema declared.

No examples provided.

get_app_detail ~54

Deep introspection of an app: entities, pages, settings, integrations, environment variables, and file structure. Use this to understand what an app contains before updating it.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

get_app_files ~33

Get the file tree for an app with paths and byte sizes.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

get_app_links ~56

Return editor, preview, published path, subdomain, and custom-domain links plus whether each works for anonymous visitors, app users, or Studio users based on publish and auth settings.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

get_app_metadata ~45

Read the saved public HTML-shell identity: name, description, language and image URLs/dimensions. Same settings as Studio SEO/GEO.

NameTypeReqDescription
app_idstringyes–

No output schema declared.

No examples provided.

get_app_security_audit ~40

Read recent server-side security audit events for an app.

NameTypeReqDescription
app_idstringyesThe app ID
limitinteger––

No output schema declared.

No examples provided.

get_app_security_context ~77

Return safe security context for one owned app: owner id/email, Studio collaborators, generated-app members, route policies, entity policies, function policies, and recent security audit entries. Does not return secrets and does not grant access to other apps.

NameTypeReqDescription
app_idstringyesThe app ID
audit_limitinteger––

No output schema declared.

No examples provided.

get_app_status ~34

Get app overview: files, published state, URL, active jobs.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

get_domain_ssl_status ~60

Return SSL/certificate status and pending certificate validation DNS records for the app custom domain.

NameTypeReqDescription
app_idstringyesThe app ID
domainstring–Optional configured custom domain. If omitted, uses the app's current custom domain.

No output schema declared.

No examples provided.

get_domain_verification ~60

Return the exact DNS records and instructions required to verify and route the app custom domain.

NameTypeReqDescription
app_idstringyesThe app ID
domainstring–Optional configured custom domain. If omitted, uses the app's current custom domain.

No output schema declared.

No examples provided.

get_entities ~45

Get all entity (data model) schemas for an app, with record counts. Each entity has fields, types, and relationships.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

get_errors ~53

Get recent runtime errors for an app (last 20). Useful for diagnosing issues before updating.

NameTypeReqDescription
app_idstringyesThe app ID
limitinteger–Max errors to return (default 20)

No output schema declared.

No examples provided.

get_job_status ~70

Poll the status of an async generation job. Use this after create_app or update_app to know when the job is done. Returns status ('running' or 'done'), progress events, and result summary when complete.

NameTypeReqDescription
job_idstringyesThe job_id returned by create_app or update_app

No output schema declared.

No examples provided.

get_pages ~32

Get all pages in an app with their file paths and sizes.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

get_platform_guide ~123

Return a machine-readable Fine Structure / FSe2 guide for AI agents. Call this at the start of an MCP session to learn app files, entities, safe edit workflows, validation, publishing, A/B testing, secrets, and platform rules.

NameTypeReqDescription
app_idstring–Optional app ID. If provided, the guide includes a safe app context summary.
sectionsarray–Optional subset of guide sections to return.
task_typestring–Optional task hint, for example edit_app, direct_file_edit, seed_data, or publish_app.

No output schema declared.

No examples provided.

get_platform_request ~85

One platform request with its full history: team replies, status changes (open | triaged | in_progress | needs_info | deployed | wont_fix) and what was deployed (commit, time). Pass since=<ISO timestamp> to get only the events after it.

NameTypeReqDescription
request_idstringyes–
sincestring–Optional ISO timestamp: only events after it

No output schema declared.

No examples provided.

get_preview_url ~31

Return editor preview and published/public URLs for an app.

NameTypeReqDescription
app_idstringyesThe app ID

No output schema declared.

No examples provided.

get_recommended_workflow ~103

Return the recommended MCP tool sequence for a task type. Use this before creating apps, editing files, seeding data, publishing, setting up A/B tests, restoring versions, or configuring secrets/integrations.

NameTypeReqDescription
app_idstring–Optional app ID. If provided, the workflow includes a safe app context summary.
goalstring–Optional short description of the user's goal.
task_typestring–The task type to plan.

No output schema declared.

No examples provided.

Install

How do I install the Fine Structure MCP server?

Fine Structure is a hosted endpoint at https://finestructure.ai/api/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 · finestructure.ai

# add to Claude Code
claude mcp add --transport http ai-finestructure-fine-structure 'https://finestructure.ai/api/mcp'
Common questions

What is the Fine Structure MCP server?

Fine Structure is an MCP server listed in the public MCP registry as ai.finestructure/fine-structure. Build and host full-stack apps from a prompt, with agents that reach you on WhatsApp and email. This page covers its hosted endpoint (https://finestructure.ai/api/mcp).

Is the Fine Structure MCP server safe to use?

Fine Structure scores 82 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 Fine Structure MCP server expose?

Fine Structure exposes 99 tools: create_app, agency_create_client, agency_list_clients, agency_create_client_app, agency_create_claim_link, and 94 more. Their descriptions and schemas cost roughly 9,146 tokens of context every time the server is loaded.

Does the Fine Structure MCP server require authentication?

No. We connected to Fine Structure without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Fine Structure MCP server still maintained?

Fine Structure is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.