← Back to search
github-doomscrollr/mcp

DOOMSCROLLR/mcp

MCP server for DOOMSCROLLR — let AI agents build owned-audience websites, storefronts, newsletters, affiliate feeds, tickets, and subscriber capture in ~45 seconds.

EXECUTIVE VERDICT

Executive verdict

Production trust decision: Block for production
Reason: unauthenticated behavior not proven + failing live status + score below evaluation threshold
Next action: revalidate, add safeguards, export policy
Status
Failing
Score
55.2
Transport
streamable-http
Tools
0

Current trust snapshot

Snapshot ID
trustsnap_f8aeae87f9349d56
Use this ID to compare server page, report, policy, MCP, homepage, ranking, and shortlist surfaces.
Snapshot generated
May 13, 2026 05:57:22 PM UTC
All page, report, policy, and MCP surfaces use this same server-detail snapshot shape.
Last validated
May 13, 2026 09:57:07 AM UTC
Age: 8.0h • freshness band: Verified in last 24h • display score: 55.23
Production trust decision
Block for production
unauthenticated behavior not proven + failing live status + score below evaluation threshold
Readiness class
Needs remediation
Current validation evidence shows operational or discovery gaps that should be fixed first.
SERVER OWNER FUNNEL

Own this MCP?

Claim ownership, prove control with a GitHub, DNS, or HTTP token challenge, revalidate now, publish a badge, and configure monitoring.

1. Claim
unclaimed
Start owner claim with GitHub, DNS, or HTTP challenge instructions.
2. Revalidate
POST /v1/servers/github-doomscrollr/mcp/revalidate
Verified owners get priority queueing after proof succeeds.
3. Badge
Verified by MCP Verify badge
Verified by MCP Verify - score 55.2 - last checked May 13, 2026
4. Monitor
Continuous Verify plan is self-serve: choose a tier, configure watches, add authenticated validation, trigger revalidation, and use the badge.
Badge embed
[![Verified by MCP Verify](https://verify.sentinelsignal.io/badge/github-doomscrollr/mcp.svg)](https://verify.sentinelsignal.io/servers/github-doomscrollr/mcp)

MCP TrustOps

TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.

Freshness band
Verified in last 24h
Policy SLA: 168.0h • confidence-weighted score: 39.4 • stale score suppressed:
Policy exports
Formats: json, rego, yaml, github_action, gateway_config, client_report
Runtime routing
/v1/route
Returns allowed tools, blocked tools, approval requirement, and reason.
Authenticated validation
Premium publisher feature: paid authenticated runs verify scopes, write-action safeguards, and authorized tool execution.
Active trust badges
Freshly Validated OAuth Verified Write-Safe No Critical Risk
Semantic benchmarks
available
Templates cover GitHub, database, healthcare, web search, and CRM least-privilege jobs.
Supply chain
metadata signal
Deep scan checks are marked separately from public metadata signals.
Compliance metadata
Terms, privacy, SOC 2, HIPAA, GDPR, retention, deletion, and audit-log fields are tracked as enterprise metadata.
Alert subscription types
Status changes Score drops or recovers Freshness SLA breach Validation schema drift OAuth or auth behavior changes Tool surface changes New or changed write tool Supply-chain signal changes Legal or compliance metadata changes

Production readiness class

Production readiness class
Needs remediation
Current validation evidence shows operational or discovery gaps that should be fixed first.
Critical alerts
1
Production verdicts degrade quickly when critical alerts are active.

Evidence confidence

Confidence score
71.2
Based on 5 recent validations, 26 captured checks, and validation age of 8.0 hours.
Live checks captured
26
More direct checks increase trust in the current verdict.
Validation age
8.0h
Lower age means fresher evidence.

Recommended for

No recommendation profile is available yet.

Client compatibility verdicts

Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.

Client compatibility: ChatGPT
Partially client-compatible
Initialize must be reachable.; tools/list must succeed.; Transport compliance should be in good shape.
Confidence: medium (71.25)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
  • initializeError
  • tools_listError
  • transport_compliance_probeError
  • step_up_auth_probeOK
  • connector_replay_probeMissing — Frozen tool snapshots must survive refresh.
  • request_association_probeMissing — Roots, sampling, and elicitation should stay request-scoped.
Client compatibility: Claude
Not client-compatible
Initialize must succeed or cleanly request auth.; tools/list must succeed.; Transport behavior should match Claude-compatible HTTP expectations.; A useful Claude integration needs at least one exposed tool.
Confidence: medium (71.25)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
  • initializeError
  • tools_listError
  • transport_compliance_probeError
Write-action publishing
Publishing allowed
Current write surface is bounded enough for cautious review with production policy controls.
Confidence: medium (71.25)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history
Disagreements: none
  • action_safety_probeOK
Snapshot churn risk
Low
No material tool-surface churn detected in the latest comparison.
Confidence: medium (71.25)
Evidence provenance
Winner: history
Supporting sources: history, live_validation
Disagreements: none
  • tool_snapshot_probeMissing
  • connector_replay_probeMissing

Why compatibility is limited by client

ChatGPT custom connector
Partial
Remediation checklist
  • No explicit blockers recorded.
Claude remote MCP
Blocked
Remediation checklist
  • No explicit blockers recorded.
Write-safe publishing
Ready
Remediation checklist
  • No explicit blockers recorded.

Verdict traces

Production verdict
Needs remediation
Current validation evidence shows operational or discovery gaps that should be fixed first.
Confidence: medium (71.25)
Winning source: live_validation
Triggering alerts
  • server_failing • critical • Latest validation is failing
Client verdict trace table
VerdictStatusChecksWinning sourceConflicts
openai_connectors Partially client-compatible initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe live_validation none
claude_desktop Not client-compatible initialize, tools_list, transport_compliance_probe live_validation none
unsafe_for_write_actions Publishing allowed action_safety_probe live_validation none
snapshot_churn_risk Low tool_snapshot_probe, connector_replay_probe history none

Publishability policy profiles

ChatGPT custom connector compatibility
Compatible with review
Initialize must be reachable.; tools/list must succeed.; Transport compliance should be in good shape. Compatibility is not a production approval; company knowledge and Messages API gates remain separate.
  • Search Fetch Only: No
  • Write Actions Present: No
  • Oauth Configured: Yes
  • Admin Refresh Required: No
  • Safe For Company Knowledge: No
  • Safe For Messages Api Remote Mcp: No
Claude remote MCP compatibility
Compatible with review
Initialize must succeed or cleanly request auth.; tools/list must succeed.; Transport behavior should match Claude-compatible HTTP expectations.; A useful Claude integration needs at least one exposed tool. Compatibility is not a production approval; company knowledge and Messages API gates remain separate.
  • Search Fetch Only: No
  • Write Actions Present: No
  • Oauth Configured: Yes
  • Admin Refresh Required: No
  • Safe For Company Knowledge: No
  • Safe For Messages Api Remote Mcp: No

Compatibility fixtures

ChatGPT custom connector fixture
Degraded
Initialize must be reachable.; tools/list must succeed.; Transport compliance should be in good shape.
  • remote_http_endpoint: Passes
  • oauth_discovery: Passes
  • frozen_tool_snapshot_refresh: Passes
  • request_association: Passes
Anthropic remote MCP fixture
Degraded
Initialize must succeed or cleanly request auth.; tools/list must succeed.; Transport behavior should match Claude-compatible HTTP expectations.; A useful Claude integration needs at least one exposed tool.
  • remote_transport: Passes
  • tool_discovery: Likely to fail
  • auth_connect: Likely to fail
  • safe_write_review: Passes

Authenticated validation sessions

Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.

Latest profile
remote_mcp
Authenticated session used
Public score isolation
Preview endpoint
/v1/verify
CI preview endpoint
/v1/ci/preview

Public server reputation

Validation success 7d
0.0
Validation success 30d
0.0
Mean time to recover
n/a
Breaking diffs 30d
0
Registry drift frequency 30d
0
Snapshot changes 30d
0

Incident & change feed

TimestampEventDetails
May 13, 2026 09:57:07 AM UTC Latest validation: failing Score 55.2 with status failing.
May 13, 2026 09:57:07 AM UTC Score changed Score delta +0.3 versus the previous run.
May 13, 2026 01:56:07 AM UTC Score changed Score delta +0.1 versus the previous run.
May 12, 2026 05:54:32 PM UTC Score changed Score delta +0.1 versus the previous run.

Capabilities

Use-case taxonomy
development web automation

Security posture

Tools analyzed
0
High-risk tools
0
Destructive tools
0
Exec tools
0
Egress tools
0
Secret tools
0
Bulk-access tools
0
Risk distribution
none

Tool capability & risk inventory

No tool inventory available from the latest validation run.

Write-action governance

Governance status
OK
Safe to publish
Auth boundary
oauth_or_auth_required
Blast radius
Low
High-risk tools
0
Confirmation signals
none
Safeguard count
0

Status detail: No unsafe write-action governance gaps detected on the latest validation.

ToolRiskFlagsSafeguards
No high-risk tools were detected on the latest run.

Action-controls diff

Need at least two validation runs before diffing action controls.

Why this score?

Access & Protocol
27.5/44
Connectivity, auth, and transport expectations for common clients.
Interface Quality
18.1/56
How well the tool/resource interface communicates and behaves under automation.
Security Posture
26/36
How safely the exposed tool surface handles destructive actions, egress, execution, secrets, and risky inputs.
Reliability & Trust
14.02/24
Operational stability, consistency, and trustworthiness over time.
Discovery & Governance
18.25/28
How well the server is documented, listed, and governed in public registries.
Adoption & Market
4.38/8
Adoption clues and public evidence that the server is intended for external use.

Algorithmic score breakdown

Auth Operability
3/4
Measures whether auth discovery and protected access behave predictably for clients.
Error Contract Quality
1.2/4
Grades machine-readable error structure, status alignment, and remediation hints.
Rate-Limit Semantics
2/4
Checks whether quota/throttle responses are deterministic and automation-friendly.
Schema Completeness
0/4
Completeness of tool descriptions, parameter docs, examples, and schema shape.
Backward Compatibility
4/4
Stability score across tool schema/name drift relative to prior validations.
SLO Health
2.4/4
Availability, latency, and burst-failure profile across recent validation history.
Security Hygiene
3/4
HTTPS posture, endpoint hygiene, and response-surface hardening checks.
Task Success
1.7/4
Can an agent reliably initialize, enumerate tools, and execute core MCP flows?
Trust Confidence
0.5/4
Confidence-adjusted reliability score that penalizes low evidence volume.
Abuse/Noise Resilience
3/4
How well the server preserves core behavior in the presence of noisy traffic patterns.
Prompt Contract
2/4
Quality of prompt metadata, argument shape, and prompt discoverability for clients.
Resource Contract
3/4
How completely resources and resource templates describe URIs, types, and usage shape.
Discovery Metadata
2/4
Homepage, docs, icon, repository, support, and license coverage for directory consumers.
Registry Consistency
3/4
Agreement between stored registry metadata, live server-card data, and current validation output.
Installability
2/4
How cleanly a real client can connect, initialize, enumerate tools, and proceed through auth.
Session Semantics
0/4
Determinism and state behavior across repeated MCP calls, including sticky-session surprises.
Tool Surface Design
0/4
Naming clarity, schema ergonomics, and parameter complexity across the tool surface.
Result Shape Stability
0/4
Stability of declared output schemas across validations, with penalties for drift or missing shapes.
OAuth Interop
4/4
Depth and client compatibility of OAuth/OIDC metadata beyond the minimal protected-resource check.
Recovery Semantics
0.9/4
Whether failures include actionable machine-readable next steps such as retry or upgrade guidance.
Maintenance Signal
2.8/4
Versioning, update recency, and historical validation cadence that indicate active stewardship.
Adoption Signal
2/4
Directory presence and distribution clues that suggest the server is intended for external use.
Freshness Confidence
2.5/4
Confidence that recent validations are current enough and dense enough to trust operationally.
Transport Fidelity
3.5/4
Whether declared transport metadata matches the observed endpoint behavior and response formats.
Spec Recency
2/4
How close the server’s claimed MCP protocol version is to the latest known public revision.
Session Resume
3/4
Whether Streamable HTTP session identifiers and resumed requests behave cleanly for real clients.
Step-Up Auth
4/4
Whether OAuth metadata and WWW-Authenticate challenges support granular, incremental consent instead of broad upfront scopes.
Transport Compliance
0/4
Checks session headers, protocol-version enforcement, session teardown, and expired-session behavior.
Utility Coverage
3/4
Signals support for completions, pagination, and task-oriented utility surfaces that larger clients increasingly expect.
Advanced Capability Coverage
3/4
Coverage of newer MCP surfaces like roots, sampling, elicitation, structured output, and related metadata.
Connector Publishability
2.4/4
How ready the server looks for client catalogs and managed connector programs.
Tool Snapshot Churn
0/4
Stability of the tool surface across recent validations, including add/remove and output-shape drift.
Connector Replay
3/4
Whether a previously published frozen connector snapshot would remain backward compatible after the latest tool refresh.
Request Association
3/4
Whether roots, sampling, and elicitation appear tied to active client requests instead of arriving unsolicited on idle sessions.
Interactive Flow Safety
4/4
Whether prompts and docs steer users toward safe auth flows instead of pasting secrets directly.
Action Safety
3/4
Risk-weighted view of destructive, exec, egress, and confirmation semantics across the tool surface.
Official Registry Presence
3/4
Whether the server appears directly or indirectly in the official MCP registry.
Provenance Divergence
4/4
How closely official registry metadata, the live server card, and public repo/package signals agree with each other.
Safety Transparency
3/4
Clarity of docs, auth disclosure, support links, and other trust signals visible to integrators.
Tool Capability Clarity
0/4
How clearly the tool surface communicates whether each action reads, writes, deletes, executes, or exports data.
Destructive Operation Safety
3/4
Penalizes delete/revoke/destroy style tools unless auth and safeguards reduce blast radius.
Egress / SSRF Resilience
3/4
Assesses arbitrary URL fetch, crawl, webhook, and remote-request exposure on the tool surface.
Execution / Sandbox Safety
4/4
Evaluates shell, code, script, and command-execution exposure and whether that surface appears contained.
Data Exfiltration Resilience
3/4
Assesses export, dump, backup, and bulk-read behavior against the surrounding auth and safeguard signals.
Least Privilege Scope
3/4
Rewards scoped auth metadata and penalizes broad or missing scopes around privileged tools.
Secret Handling Hygiene
3/4
Assesses secret-bearing tools, token leakage risk, and whether the public surface avoids obvious secret exposure.
Supply Chain Signal
0.5/4
Public metadata signal for repository, changelog, license, versioning, and recency that supports supply-chain trust.
Input Sanitization Safety
0/4
Penalizes risky freeform string inputs when schemas do not constrain URLs, code, paths, queries, or templates.
Tool Namespace Clarity
0/4
Measures naming uniqueness and ambiguity across the tool namespace to reduce collision and confusion risk.

Compatibility profiles

OpenAI Connectors
66.7
partial
Initialize must be reachable.; tools/list must succeed.; Transport compliance should be in good shape.
Connector URL: https://mcp.doomscrollr.com
# Complete OAuth in the client when prompted.
# Server: github-doomscrollr/mcp
Claude Desktop
33.3
blocked
Initialize must succeed or cleanly request auth.; tools/list must succeed.; Transport behavior should match Claude-compatible HTTP expectations.; A useful Claude integration needs at least one exposed tool.
{
  "mcpServers": {
    "mcp": {
      "command": "npx",
      "args": ["mcp-remote", "https://mcp.doomscrollr.com"]
    }
  }
}
Smithery
40.0
blocked
Tool discovery must succeed.; Initialize should work before execution.; Machine-readable failure semantics should be present.
smithery mcp add "https://mcp.doomscrollr.com"
Generic Streamable HTTP
50.0
blocked
Initialize must succeed.; tools/list must succeed.; Session behavior should be predictable.
curl -sS https://mcp.doomscrollr.com -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'

Actionable remediation

SeverityRemediationWhy it mattersRecommended action
Critical Ensure tools/list succeeds consistently Tools discovery is the minimum viable contract for most MCP clients and directories. Make tools/list succeed unauthenticated when possible, or document the auth flow in the server card.
Playbook
  • Make `tools/list` deterministic across repeated calls.
  • Document or relax auth requirements for discovery routes.
  • Check that tool names, descriptions, and schemas remain stable across deploys.
Critical Make initialize deterministic and client-friendly If initialize fails or requires undocumented auth, many MCP clients cannot connect. Allow initialize to succeed consistently, or return a deterministic auth-required response with clear metadata.
Playbook
  • Allow `initialize` to succeed unauthenticated when possible.
  • If auth is required, return a deterministic auth-required response and matching metadata.
  • Retest against `https://mcp.doomscrollr.com` from a clean client session.
Critical Respond to latest validation is failing Core MCP flows did not validate successfully on the latest run. Fix the failing checks first, then revalidate to confirm the recovery path.
Playbook
  • Fix the failing checks first.
  • Review the latest incident feed and validation diff for the first regression.
  • Revalidate once the remediation lands.
High Align session and protocol behavior with Streamable HTTP expectations Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.
Playbook
  • Return `Mcp-Session-Id` and `Mcp-Protocol-Version` headers consistently on streamable HTTP responses.
  • Honor `DELETE` session teardown and return `404` when a deleted session is reused.
  • Reject invalid protocol-version headers with `400 Bad Request`.
High Associate roots, sampling, and elicitation with active client requests Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
High Keep connector refreshes backward compatible Managed connector clients freeze tool snapshots, so removed tools, new required args, and breaking output changes can break published integrations after refresh. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Adopt a current MCP protocol revision Older protocol revisions reduce compatibility with newer clients and registry programs. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Close connector-publishing gaps Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Raise Interface Quality score How well the tool/resource interface communicates and behaves under automation. Improve schemas, error contracts, and recovery messages so agents can reason about the surface automatically.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Reduce tool-surface churn Frequent add/remove or output-shape drift makes published connectors and cached tool snapshots brittle. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Repair prompts/list or stop advertising prompts Prompt metadata should either work live or be removed from the advertised capability set. Only advertise prompts if prompts/list works and prompt arguments are documented.
Playbook
  • Only advertise prompts that are actually accessible.
  • Add prompt descriptions and argument docs.
  • Run a live `prompts/list` check after any prompt changes.
Medium Repair resources/list or stop advertising resources Resource metadata should either work live or be removed from the advertised capability set. Only advertise resources if resources/list works and resources expose stable URIs/types.
Playbook
  • Only advertise resources with stable URIs and read semantics.
  • Add MIME/type hints where possible.
  • Run a live `resources/list` and `resources/read` check after updates.
Medium Support resumable HTTP sessions cleanly Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Low Expose modern utility surfaces like completions, pagination, or tasks Utility coverage improves interoperability with larger clients and long-lived agent workflows. Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.
Playbook
  • Advertise `completions`, pagination cursors, and `tasks` only when they are actually supported.
  • Return `nextCursor` on large list operations when pagination is available.
  • Document task support and whether it requires step-up auth.
Low Publish newer MCP capability signals Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Low Publish or reconcile the server in the official MCP registry Official registry presence improves discovery confidence and cross-source consistency. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.

Point loss breakdown

ComponentCurrentPoints missing
Transport Compliance 0/4 -4.0
Tool Surface Design 0/4 -4.0
Tool Snapshot Churn 0/4 -4.0
Tool Namespace Clarity 0/4 -4.0
Tool Capability Clarity 0/4 -4.0
Session Semantics 0/4 -4.0
Schema Completeness 0/4 -4.0
Result Shape Stability 0/4 -4.0
Input Sanitization Safety 0/4 -4.0
Trust Confidence 0.5/4 -3.5
Dependency Supply Chain Signal 0.5/4 -3.5
Recovery Semantics 0.9/4 -3.1

Validation diff

Score delta
0.35
Summary changed
no
Tool delta
0
Prompt delta
0
Auth mode changed
no
Write surface expanded
no
Protocol regressed
no
Registry drift changed
no

Regressed checks: none

Improved checks: none

ComponentPreviousLatestDelta
freshness_confidence_score2.02.50.5
maintenance_signal_score2.552.750.2
slo_health_score2.462.35-0.11
trust_confidence_score0.40.50.1

Tool snapshot diff & changelog

Need at least two validation runs before building a tool changelog.

Connector replay

Status
Missing
Backward compatible
Would break after refresh
Added tools
none
Removed tools
none
Additive output changes
none
Required-argument replay breaks
ToolAdded required argsRemoved required args
No required-argument replay breaks detected.
Output-schema replay breaks
ToolRemoved propertiesAdded properties
No output-schema replay breaks detected.

Transport compliance drilldown

Probe status
Error
Transport
streamable-http
Session header
no
Protocol header
no
Bad protocol response
404
DELETE teardown
n/a
Expired session retry
n/a
Last-Event-ID visible
no

Issues: missing_protocol_header, bad_protocol_not_rejected

Request association

Status
Missing
Advertised capabilities
none
Observed idle methods
none
Violating methods
none
Probe HTTP status
n/a
Issues
none

Utility coverage

Probe status
Warning
Completions
advertised
Completion probe target: { "type": "resource", "uri": "ui://doomscrollr/widgets/pinterest-v1.html" }
Pagination
not detected
No nextCursor evidence.
Tasks
Missing
Advertised: no

Benchmark tasks

Benchmark taskStatusEvidence
Discover tools Likely to fail
  • initializeError
  • tools_listError
Read-only fetch flow Likely to fail
  • resource_readMissing
  • read_only_tool_surfaceMissing
OAuth-required connect Passes
  • oauth_protected_resourceOK
  • step_up_auth_probeOK
Safe write flow with confirmation Passes
  • action_safety_probeOK

Registry & provenance divergence

Probe status
OK
Direct official match
no
Drift fields
none
FieldRegistryLive server card
Titlen/adoomscrollr
Versionn/a1.0.24
Homepagen/an/a

Active alerts

Aliases & registry graph

IdentifierSourceCanonicalScore
github-doomscrollr/mcp github_topic_registry yes 55.23

Alias consolidation

Canonical identifier
github-doomscrollr/mcp
Duplicate aliases
0
Registry sources
github_topic_registry
Source disagreements
FieldWhat differsObserved values
No source disagreements detected.

Install snippets

Openai Connectors
Connector URL: https://mcp.doomscrollr.com
# Complete OAuth in the client when prompted.
# Server: github-doomscrollr/mcp
Claude Desktop
{
  "mcpServers": {
    "mcp": {
      "command": "npx",
      "args": ["mcp-remote", "https://mcp.doomscrollr.com"]
    }
  }
}
Smithery
smithery mcp add "https://mcp.doomscrollr.com"
Generic Http
curl -sS https://mcp.doomscrollr.com -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'

Agent access & tool surface

Live server tools
No live tool surface captured yet.
Observed from the latest live validation against https://mcp.doomscrollr.com. This is the target server surface, not Verify's own inspection tools.
Live capability counts
0 tools • 0 prompts • 0 resources
Counts come from the latest tools/list, prompts/list, and resources/list checks.
Inspect with Verify
search fetch search_servers recommend_servers get_server_report compare_servers
Use Verify itself to search, recommend, compare, and fetch the full report for github-doomscrollr/mcp.
Direct machine links

Claims & monitoring

Server ownership

No verified maintainer claim recorded.

Watch subscriptions
0
Teams: none

Alert routing

Active watches
0
Generic webhooks
0
Slack routes
0
Teams routes
0
Email routes
0
WatchTeamChannelsMinimum severity
No active watch destinations.

Maintainer analytics

Validation Run Count
5
Average Latency Ms
1720.97
Healthy Run Ratio Recent
0.0
Registry Presence Count
1
Active Alert Count
1
Watcher Count
0
Verified Claim
False
Taxonomy Tags
development, web, automation
Score Trend
55.23, 54.88, 54.73, 54.62, 51.86
Remediation Count
16
High Risk Tool Count
0
Destructive Tool Count
0
Exec Tool Count
0

Maintainer response quality

Score
33.33
Verified claim
Support contact
Changelog present
Incident notes present
Tool changes documented
Annotation history
Annotation count
0

Maintainer annotations

No maintainer annotations have been recorded yet.

Maintainer rebuttals & expected behavior

No maintainer rebuttals or expected-behavior overrides are recorded yet.

Latest validation evidence

Latest summary
Failing
Validation profile
remote_mcp
Started
May 13, 2026 09:57:05 AM UTC
Latency
1880.9 ms

Failures

Checks

CheckStatusLatencyEvidence
action_safety_probe OK n/a No high-risk write, destructive, or exec tools detected.
advanced_capabilities_probe Warning n/a Only 3 capability signal(s): completions, resource links, resources.
connector_publishability_probe Error n/a Publishability blockers: initialize, tools list, protocol version, transport compliance, +2 more.
connector_replay_probe Missing n/a No connector replay evidence recorded.
determinism_probe Missing n/a tools list unavailable
initialize Error 177.6 ms Client error '404 Not Found' for url 'https://mcp.doomscrollr.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
interactive_flow_probe OK n/a Check completed
oauth_authorization_server OK 182.8 ms authorization_endpoint, code_challenge_methods_supported, grant_types_supported, issuer
oauth_protected_resource OK 181.1 ms 1 authorization server(s)
official_registry_probe Warning n/a Check completed
openid_configuration OK 211.3 ms authorization_endpoint, code_challenge_methods_supported, grant_types_supported, issuer
probe_noise_resilience OK 42.1 ms Fetched https://mcp.doomscrollr.com/robots.txt
prompt_get Missing n/a not advertised
prompts_list Missing 179.0 ms Client error '404 Not Found' for url 'https://mcp.doomscrollr.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
protocol_version_probe Missing n/a No protocol version was advertised.
provenance_divergence_probe OK n/a Check completed
request_association_probe Missing n/a No request-association capabilities were advertised.
resource_read Missing n/a no resource uri
resources_list Error 173.4 ms Client error '404 Not Found' for url 'https://mcp.doomscrollr.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
server_card OK 201.8 ms 0 prompt(s) exposed
session_resume_probe Missing n/a no session id
step_up_auth_probe OK n/a Scopes=mcp.
tool_snapshot_probe Missing n/a no tools
tools_list Error 175.8 ms Client error '404 Not Found' for url 'https://mcp.doomscrollr.com' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
transport_compliance_probe Error 140.0 ms Issues: missing protocol header, bad protocol not rejected (bad protocol=404).
utility_coverage_probe Warning 144.2 ms Completions advertised; no pagination evidence; tasks missing.

Raw evidence view

Show raw JSON evidence
{
  "checks": {
    "action_safety_probe": {
      "details": {
        "auth_present": true,
        "confirmation_signals": [],
        "safeguard_count": 0,
        "summary": {
          "bulk_access_tools": 0,
          "capability_distribution": {},
          "destructive_tools": 0,
          "egress_tools": 0,
          "exec_tools": 0,
          "high_risk_tools": 0,
          "risk_distribution": {
            "critical": 0,
            "high": 0,
            "low": 0,
            "medium": 0
          },
          "secret_tools": 0,
          "tool_count": 0
        }
      },
      "latency_ms": null,
      "status": "ok"
    },
    "advanced_capabilities_probe": {
      "details": {
        "capabilities": {
          "completions": true,
          "elicitation": false,
          "prompts": false,
          "resource_links": true,
          "resources": true,
          "roots": false,
          "sampling": false,
          "structured_outputs": false
        },
        "enabled": [
          "completions",
          "resource_links",
          "resources"
        ],
        "enabled_count": 3,
        "initialize_capability_keys": []
      },
      "latency_ms": null,
      "status": "warning"
    },
    "connector_publishability_probe": {
      "details": {
        "blockers": [
          "initialize",
          "tools_list",
          "protocol_version",
          "transport_compliance",
          "tool_surface",
          "auth_flow"
        ],
        "criteria": {
          "action_safety": true,
          "auth_flow": false,
          "connector_replay": true,
          "initialize": false,
          "protocol_version": false,
          "remote_transport": true,
          "request_association": true,
          "server_card": true,
          "session_resume": true,
          "step_up_auth": true,
          "tool_surface": false,
          "tools_list": false,
          "transport_compliance": false
        },
        "high_risk_tools": 0,
        "tool_count": 0,
        "transport": "streamable-http"
      },
      "latency_ms": null,
      "status": "error"
    },
    "connector_replay_probe": {
      "details": {
        "reason": "no_tools"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "determinism_probe": {
      "details": {
        "reason": "tools_list_unavailable"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "initialize": {
      "details": {
        "error": "Client error '404 Not Found' for url 'https://mcp.doomscrollr.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
        "headers": {
          "content-type": "text/html; charset=utf-8"
        },
        "http_status": 404,
        "payload": {},
        "url": "https://mcp.doomscrollr.com"
      },
      "latency_ms": 177.59,
      "status": "error"
    },
    "interactive_flow_probe": {
      "details": {
        "oauth_supported": true,
        "prompt_available": false,
        "risk_hits": [],
        "safe_hits": [
          "oauth",
          "browser"
        ]
      },
      "latency_ms": null,
      "status": "ok"
    },
    "oauth_authorization_server": {
      "details": {
        "headers": {
          "content-type": "application/json; charset=utf-8"
        },
        "http_status": 200,
        "payload": {
          "authorization_endpoint": "https://mcp.doomscrollr.com/oauth/authorize",
          "code_challenge_methods_supported": [
            "S256",
            "plain"
          ],
          "grant_types_supported": [
            "authorization_code",
            "refresh_token"
          ],
          "issuer": "https://mcp.doomscrollr.com",
          "registration_endpoint": "https://mcp.doomscrollr.com/oauth/register",
          "response_types_supported": [
            "code"
          ],
          "scopes_supported": [
            "mcp"
          ],
          "service_documentation": "https://mcp.doomscrollr.com",
          "token_endpoint": "https://mcp.doomscrollr.com/oauth/token",
          "token_endpoint_auth_methods_supported": [
            "none"
          ]
        },
        "url": "https://mcp.doomscrollr.com/.well-known/oauth-authorization-server"
      },
      "latency_ms": 182.77,
      "status": "ok"
    },
    "oauth_protected_resource": {
      "details": {
        "headers": {
          "content-type": "application/json; charset=utf-8"
        },
        "http_status": 200,
        "payload": {
          "authorization_servers": [
            "https://mcp.doomscrollr.com"
          ],
          "bearer_methods_supported": [
            "header"
          ],
          "resource": "https://mcp.doomscrollr.com/mcp",
          "resource_documentation": "https://mcp.doomscrollr.com"
        },
        "url": "https://mcp.doomscrollr.com/.well-known/oauth-protected-resource"
      },
      "latency_ms": 181.09,
      "status": "ok"
    },
    "official_registry_probe": {
      "details": {
        "direct_match": false,
        "official_identifiers": [
          "io.github.neverinfamous/sqlite-mcp-server",
          "io.github.M-China-Official/mcd-mcp",
          "io.github.instagitai/instagit",
          "ai.smithery/Aman-Amith-Shastry-scientific_computation_mcp",
          "dev.codepathfinder/pathfinder",
          "io.github.chris-schra/mcp-funnel",
          "io.github.Vitexus/abraflexi",
          "io.github.kyrylopr/lenspr",
          "io.github.humanjesse/textarttools-mcp",
          "ai.smithery/arjunkmrm-ts-test-2"
        ],
        "official_peer_count": 10,
        "registry_source": "github_topic_registry"
      },
      "latency_ms": null,
      "status": "warning"
    },
    "openid_configuration": {
      "details": {
        "headers": {
          "content-type": "application/json; charset=utf-8"
        },
        "http_status": 200,
        "payload": {
          "authorization_endpoint": "https://mcp.doomscrollr.com/oauth/authorize",
          "code_challenge_methods_supported": [
            "S256",
            "plain"
          ],
          "grant_types_supported": [
            "authorization_code",
            "refresh_token"
          ],
          "issuer": "https://mcp.doomscrollr.com",
          "registration_endpoint": "https://mcp.doomscrollr.com/oauth/register",
          "response_types_supported": [
            "code"
          ],
          "scopes_supported": [
            "mcp"
          ],
          "service_documentation": "https://mcp.doomscrollr.com",
          "token_endpoint": "https://mcp.doomscrollr.com/oauth/token",
          "token_endpoint_auth_methods_supported": [
            "none"
          ]
        },
        "url": "https://mcp.doomscrollr.com/.well-known/openid-configuration"
      },
      "latency_ms": 211.31,
      "status": "ok"
    },
    "probe_noise_resilience": {
      "details": {
        "headers": {
          "content-type": "text/plain"
        },
        "http_status": 200,
        "url": "https://mcp.doomscrollr.com/robots.txt"
      },
      "latency_ms": 42.12,
      "status": "ok"
    },
    "prompt_get": {
      "details": {
        "reason": "not_advertised"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "prompts_list": {
      "details": {
        "error": "Client error '404 Not Found' for url 'https://mcp.doomscrollr.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
        "headers": {
          "content-type": "text/html; charset=utf-8"
        },
        "http_status": 404,
        "payload": {},
        "reason": "not_supported",
        "url": "https://mcp.doomscrollr.com"
      },
      "latency_ms": 178.98,
      "status": "missing"
    },
    "protocol_version_probe": {
      "details": {
        "latest_known_version": "2025-11-25",
        "reason": "no_protocol_version",
        "validator_protocol_version": "2025-03-26"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "provenance_divergence_probe": {
      "details": {
        "direct_official_match": false,
        "drift_fields": [],
        "metadata_document_count": 2,
        "registry_homepage": null,
        "registry_repository": null,
        "registry_title": null,
        "registry_version": null,
        "server_card_homepage": null,
        "server_card_repository": null,
        "server_card_title": "doomscrollr",
        "server_card_version": "1.0.24"
      },
      "latency_ms": null,
      "status": "ok"
    },
    "request_association_probe": {
      "details": {
        "reason": "no_request_association_capabilities_advertised"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "resource_read": {
      "details": {
        "reason": "no_resource_uri"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "resources_list": {
      "details": {
        "error": "Client error '404 Not Found' for url 'https://mcp.doomscrollr.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
        "headers": {
          "content-type": "text/html; charset=utf-8"
        },
        "http_status": 404,
        "payload": {},
        "url": "https://mcp.doomscrollr.com"
      },
      "latency_ms": 173.37,
      "status": "error"
    },
    "server_card": {
      "details": {
        "headers": {
          "content-type": "application/json; charset=utf-8"
        },
        "http_status": 200,
        "payload": {
          "authentication": {
            "required": true,
            "schemes": [
              "oauth2",
              "bearer"
            ]
          },
          "icon": "https://doomscrollr.com/share.png",
          "logo": "https://doomscrollr.com/share.png",
          "metadata": {
            "description": "Build owned-audience websites: pages, posts, products, subscribers, capture, RSS/Pinterest, ShopMy/Shopify imports, tickets, memberships, and analytics from any MCP client.",
            "docs": "https://mcp.doomscrollr.com",
            "homepage": "https://mcp.doomscrollr.com",
            "icon": "https://doomscrollr.com/share.png",
            "iconUrl": "https://doomscrollr.com/share.png",
            "logo": "https://doomscrollr.com/share.png",
            "logoUrl": "https://doomscrollr.com/share.png",
            "repository": "https://github.com/DOOMSCROLLR/mcp",
            "title": "DOOMSCROLLR",
            "vendor": "DOOMSCROLLR"
          },
          "prompts": [],
          "resources": [
            {
              "description": "Pinterest search results card with imageable pins ready to draft.",
              "mimeType": "text/html;profile=mcp-app",
              "name": "doomscrollr-pinterest-widget",
              "uri": "ui://doomscrollr/widgets/pinterest-v1.html"
            },
            {
              "description": "Product / Shopify import card with title, price, image, and CTA.",
              "mimeType": "text/html;profile=mcp-app",
              "name": "doomscrollr-product-widget",
              "uri": "ui://doomscrollr/widgets/product-v1.html"
            },
            {
              "description": "Style preset preview card showing applied brand styling.",
              "mimeType": "text/html;profile=mcp-app",
              "name": "doomscrollr-style-widget",
              "uri": "ui://doomscrollr/widgets/style-v1.html"
            },
            {
              "description": "Top-liked posts analytics card for the last N days.",
              "mimeType": "text/html;profile=mcp-app",
              "name": "doomscrollr-analytics-widget",
              "uri": "ui://doomscrollr/widgets/analytics-v1.html"
            }
          ],
          "serverInfo": {
            "name": "doomscrollr",
            "version": "1.0.24"
          },
          "tools": [
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Add Subscriber"
              },
              "description": "Add an audience member to your DOOMSCROLLR. Captures email or email_md5, profile/contact fields, tags, and UTM attribution.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "bio": {
                    "description": "Audience bio / biography",
                    "type": "string"
                  },
                  "city": {
                    "description": "City",
                    "type": "string"
                  },
                  "country": {
                    "description": "Country",
                    "type": "string"
                  },
                  "email": {
                    "description": "Subscriber email address. Optional if email_md5 is supplied.",
                    "format": "email",
                    "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                    "type": "string"
                  },
                  "email_md5": {
                    "description": "MD5 hash of the lowercase trimmed email when raw email is unavailable",
                    "pattern": "^[a-f0-9]{32}$",
                    "type": "string"
                  },
                  "first_name": {
                    "description": "First name",
                    "type": "string"
                  },
                  "followers": {
                    "description": "Follower count",
                    "maximum": 9007199254740991,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "gender": {
                    "description": "Gender marker, if provided",
                    "type": "string"
                  },
                  "last_name": {
                    "description": "Last name",
                    "type": "string"
                  },
                  "phone": {
                    "description": "Phone number",
                    "type": "string"
                  },
                  "source": {
                    "description": "Acquisition source (e.g., email_signup, website, api, embed)",
                    "type": "string"
                  },
                  "state": {
                    "description": "State/region",
                    "type": "string"
                  },
                  "tags": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      }
                    ],
                    "description": "Comma-separated tags or an array of tags"
                  },
                  "username": {
                    "description": "Social/account username",
                    "type": "string"
                  },
                  "utm_campaign": {
                    "description": "UTM campaign",
                    "type": "string"
                  },
                  "utm_content": {
                    "description": "UTM content",
                    "type": "string"
                  },
                  "utm_medium": {
                    "description": "UTM medium",
                    "type": "string"
                  },
                  "utm_source": {
                    "description": "UTM source",
                    "type": "string"
                  },
                  "utm_term": {
                    "description": "UTM term",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_add_subscriber"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Apply Style Preset"
              },
              "description": "Apply a recognizable visual direction to DOOMSCROLLR settings. Use this for prompts like 'Update the styling of my DOOMSCROLLR to look like Skims.' Currently supports skims, brutalist, editorial, and minimal presets using existing editable settings.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "cta_bar_text": {
                    "description": "Optional CTA bar text",
                    "maxLength": 500,
                    "type": "string"
                  },
                  "cta_bar_url": {
                    "description": "Optional CTA destination",
                    "format": "uri",
                    "type": "string"
                  },
                  "preset": {
                    "description": "Style direction to apply",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "preset"
                ],
                "type": "object"
              },
              "name": "doomscrollr_apply_style_preset"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Ecommerce"
              },
              "description": "Use this when the user asks to build an ecommerce site/store. Creates an owned storefront on DOOMSCROLLR with optional products and buyer/audience graph next steps.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links for Linktree/Komi/contact-page flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_build_ecommerce"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Komi"
              },
              "description": "Use this when the user asks to build a Komi. Creates the owned DOOMSCROLLR equivalent: a creator links/contact page on the user's own site with first-party audience capture.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links to include",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "required": [
                  "links"
                ],
                "type": "object"
              },
              "name": "doomscrollr_build_komi"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Linktree"
              },
              "description": "Use this when the user asks to build a Linktree. Creates the owned DOOMSCROLLR equivalent: an owned contact/link page on the user's own site with navigation and audience-capture next steps.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links to include",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "required": [
                  "links"
                ],
                "type": "object"
              },
              "name": "doomscrollr_build_linktree"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Membership"
              },
              "description": "Use this when the user asks to build an OnlyFans, Patreon, paid membership, or subscription site. Creates the owned membership equivalent on DOOMSCROLLR.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links for Linktree/Komi/contact-page flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_build_membership"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Newsletter"
              },
              "description": "Use this when the user asks to build a newsletter. Creates an owned newsletter website with first-party subscriber capture.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links for Linktree/Komi/contact-page flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_build_newsletter"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Shopify"
              },
              "description": "Use this when the user asks to build a Shopify store. Creates the owned DOOMSCROLLR storefront equivalent with optional products, customer-data capture, and commerce next steps.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links for Linktree/Komi/contact-page flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_build_shopify"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Social Feed"
              },
              "description": "Use this when the user asks to build their own Instagram, Tumblr, Myspace, or visual social feed. Creates or seeds an owned visual feed on DOOMSCROLLR.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links for Linktree/Komi/contact-page flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_build_social_feed"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Substack"
              },
              "description": "Use this when the user asks to build a Substack. Creates the owned newsletter/publishing equivalent on DOOMSCROLLR with subscriber capture and optional RSS next steps.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links for Linktree/Komi/contact-page flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_build_substack"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Build Website"
              },
              "description": "Use this when the user asks to build a website, Wix, Squarespace, or WordPress site. Creates owned pages/navigation/styling on DOOMSCROLLR.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add generated pages to navigation",
                    "type": "boolean"
                  },
                  "cover_photo_url": {
                    "description": "Cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "feed_url": {
                    "description": "RSS feed URL for Substack/newsletter flows",
                    "format": "uri",
                    "type": "string"
                  },
                  "intro": {
                    "description": "Short positioning or intro copy",
                    "maxLength": 2000,
                    "type": "string"
                  },
                  "limit": {
                    "description": "Number of seed posts to create for social-feed flows",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "links": {
                    "description": "Links for Linktree/Komi/contact-page flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "pages": {
                    "description": "Pages for website flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "content": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "content"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "price": {
                    "description": "Membership/subscription price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "products": {
                    "description": "Products for Shopify/ecommerce flows",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "cover_photo_url": {
                          "format": "uri",
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "price": {
                          "minimum": 0,
                          "type": "number"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "enum": [
                            "physical",
                            "digital",
                            "ticket",
                            "subscription"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "price"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "source_query": {
                    "description": "Pinterest/search query for social-feed flows",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "style_preset": {
                    "description": "Optional visual direction",
                    "enum": [
                      "skims",
                      "brutalist",
                      "editorial",
                      "minimal"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "Title/name for the owned-audience website or page",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_build_website"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Bulk Delete Posts"
              },
              "description": "Bulk delete up to 100 posts by id. Irreversible; use doomscrollr_list_posts first.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "ids": {
                    "description": "Post ids to delete",
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 100,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "ids"
                ],
                "type": "object"
              },
              "name": "doomscrollr_bulk_delete_posts"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Bulk Delete Products"
              },
              "description": "Bulk delete up to 100 products by id. Irreversible; linked posts are preserved but unlinked from deleted products.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "ids": {
                    "description": "Product ids to delete",
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 100,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "ids"
                ],
                "type": "object"
              },
              "name": "doomscrollr_bulk_delete_products"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Bulk Delete Subscribers"
              },
              "description": "Bulk delete up to 500 audience members by id. Irreversible; use doomscrollr_list_subscribers first.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "ids": {
                    "description": "Subscriber ids to delete",
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 500,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "ids"
                ],
                "type": "object"
              },
              "name": "doomscrollr_bulk_delete_subscribers"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Bulk Update Posts"
              },
              "description": "Bulk update up to 100 posts by id. Supports status/scheduling, feed flags, tag replace/append/remove, and shoppable buy-button state.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "description": {
                    "description": "Shared replacement description for all selected posts",
                    "type": "string"
                  },
                  "hide_main_feed": {
                    "description": "Hide/show all selected posts on main feed",
                    "type": "boolean"
                  },
                  "ids": {
                    "description": "Post ids from doomscrollr_list_posts",
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 100,
                    "minItems": 1,
                    "type": "array"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime to schedule all selected posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shoppable": {
                    "description": "Set true to show the buy button on all selected posts, false to hide it.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Set all selected posts to this status",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "subscription_only": {
                    "description": "Make all selected posts subscriber-only or public",
                    "type": "boolean"
                  },
                  "tag_mode": {
                    "description": "How to apply tags; default replace",
                    "enum": [
                      "replace",
                      "append",
                      "remove"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags",
                    "type": "string"
                  },
                  "title": {
                    "description": "Shared replacement title for all selected posts",
                    "type": "string"
                  }
                },
                "required": [
                  "ids"
                ],
                "type": "object"
              },
              "name": "doomscrollr_bulk_update_posts"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Bulk Update Products"
              },
              "description": "Bulk update up to 100 products by id. Supports simple maintenance fields: price, inventory, shipping, and cover image.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "cover_photo_url": {
                    "description": "Shared replacement cover image URL",
                    "format": "uri",
                    "type": "string"
                  },
                  "ids": {
                    "description": "Product ids from doomscrollr_list_products",
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 100,
                    "minItems": 1,
                    "type": "array"
                  },
                  "inventory_count": {
                    "description": "Shared replacement inventory count",
                    "maximum": 9007199254740991,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "price": {
                    "description": "Shared replacement price",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shipping_cost": {
                    "description": "Shared replacement shipping cost",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shipping_required": {
                    "description": "Set shipping required",
                    "type": "boolean"
                  }
                },
                "required": [
                  "ids"
                ],
                "type": "object"
              },
              "name": "doomscrollr_bulk_update_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Bulk Update Subscribers"
              },
              "description": "Bulk update up to 500 audience members by id. Supports bounced/unsubscribed/spam flags and tag replace/append/remove.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "bounced": {
                    "description": "Set bounced flag",
                    "type": "boolean"
                  },
                  "ids": {
                    "description": "Subscriber ids from doomscrollr_list_subscribers",
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 500,
                    "minItems": 1,
                    "type": "array"
                  },
                  "spam": {
                    "description": "Set spam flag",
                    "type": "boolean"
                  },
                  "tag_mode": {
                    "description": "How to apply tags; default replace",
                    "enum": [
                      "replace",
                      "append",
                      "remove"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags",
                    "type": "string"
                  },
                  "unsubscribed": {
                    "description": "Set unsubscribed flag",
                    "type": "boolean"
                  }
                },
                "required": [
                  "ids"
                ],
                "type": "object"
              },
              "name": "doomscrollr_bulk_update_subscribers"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Buy Domain"
              },
              "description": "Purchase a domain through DOOMSCROLLR. Creates a Stripe payment intent and returns a checkout URL the user opens in a browser. After payment, the domain auto-registers via OpenSRS and connects to the user's DOOMSCROLLR (including Cloudflare setup) in about 60 seconds.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "domain": {
                    "description": "Full domain to purchase, e.g. 'fridasfriends.com'",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "domain"
                ],
                "type": "object"
              },
              "name": "doomscrollr_buy_domain"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Connect Domain"
              },
              "description": "Connect a custom domain to your DOOMSCROLLR. Returns DNS records to configure. For purchased domains, guides user to the dashboard.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "domain": {
                    "description": "Full domain to connect (e.g., 'mybrand.com')",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "domain"
                ],
                "type": "object"
              },
              "name": "doomscrollr_connect_domain"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Connect Instagram"
              },
              "description": "Set up auto-cross-posting from an Instagram Business or Creator account to DOOMSCROLLR. Returns a Zapier setup URL the user MUST open in a browser to finish OAuth \u2014 this tool does not complete the connection on its own. After the user authorizes in Zapier, every new Instagram post will become a post in this DOOMSCROLLR. Tell the user to open the returned `setup_url` to finish.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_connect_instagram"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Connect Pinterest"
              },
              "description": "Auto-post a public Pinterest board to this DOOMSCROLLR. Pass the board URL (like 'https://www.pinterest.com/user/my-board/'). Pins get imported within 15 minutes and new pins auto-post going forward. No OAuth or API keys needed \u2014 just needs the board to be public.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "board_url": {
                    "description": "Public Pinterest board URL, e.g. 'https://www.pinterest.com/fridasfriends/english-cocker-spaniels/'",
                    "type": "string"
                  }
                },
                "required": [
                  "board_url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_connect_pinterest"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Connect Rss"
              },
              "description": "Connect native RSS polling. Works with Substack, Medium, WordPress, YouTube channels, podcast feeds, or any public RSS/Atom source. New items auto-post within about 15 minutes \u2014 no Zapier required.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "feed_url": {
                    "description": "RSS or Atom feed URL",
                    "format": "uri",
                    "maxLength": 500,
                    "type": "string"
                  }
                },
                "required": [
                  "feed_url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_connect_rss"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Create Contact Page"
              },
              "description": "Create a LinkTree-style contact/links page and link to it in navigation. Use this for prompts like 'Create a LinkTree like Contact page and link to it in my navigation.'",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Defaults true",
                    "type": "boolean"
                  },
                  "intro": {
                    "description": "Short intro text",
                    "maxLength": 1000,
                    "type": "string"
                  },
                  "links": {
                    "description": "Links to place on the contact page",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "label": {
                          "description": "Visible link label",
                          "type": "string"
                        },
                        "url": {
                          "description": "Destination URL, e.g. https://instagram.com/brand or mailto:hello@example.com",
                          "type": "string"
                        }
                      },
                      "required": [
                        "label",
                        "url"
                      ],
                      "type": "object"
                    },
                    "maxItems": 25,
                    "minItems": 1,
                    "type": "array"
                  },
                  "navigation_label": {
                    "description": "Navigation label, default Contact",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "title": {
                    "description": "Page title, default Contact",
                    "maxLength": 255,
                    "type": "string"
                  }
                },
                "required": [
                  "links"
                ],
                "type": "object"
              },
              "name": "doomscrollr_create_contact_page"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Create Page"
              },
              "description": "Create or update a standalone DOOMSCROLLR page and optionally add it to navigation.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_to_navigation": {
                    "description": "Whether to add/update a nav link for this page",
                    "type": "boolean"
                  },
                  "content": {
                    "description": "Page body as simple HTML or plain text",
                    "maxLength": 50000,
                    "minLength": 1,
                    "type": "string"
                  },
                  "navigation_label": {
                    "description": "Navigation label; defaults to title",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "title": {
                    "description": "Page title",
                    "maxLength": 255,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "title",
                  "content"
                ],
                "type": "object"
              },
              "name": "doomscrollr_create_page"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Create Product"
              },
              "description": "Create a product for sale on your DOOMSCROLLR \u2014 physical goods, digital downloads, event tickets, or subscriptions.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "cover_photo_url": {
                    "description": "Cover image/photo URL supplied by the user or ChatGPT, e.g. for 'Create a $50 product from this photo and name it Tie Dye Pants'",
                    "format": "uri",
                    "type": "string"
                  },
                  "description": {
                    "description": "Product description",
                    "type": "string"
                  },
                  "inventory_count": {
                    "description": "Stock quantity for non-variant physical products",
                    "maximum": 9007199254740991,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "price": {
                    "description": "Price in dollars (e.g., 29.99)",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shipping_cost": {
                    "description": "Shipping cost in dollars",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shipping_required": {
                    "description": "Whether shipping is required; physical products usually true",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "Product name",
                    "type": "string"
                  },
                  "type": {
                    "description": "Product type",
                    "enum": [
                      "physical",
                      "digital",
                      "ticket",
                      "subscription"
                    ],
                    "type": "string"
                  },
                  "url": {
                    "description": "External URL (for digital products)",
                    "format": "uri",
                    "type": "string"
                  },
                  "variant_options": {
                    "description": "Variant option definitions for physical products, e.g. Color and Size",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "description": "Option name, e.g. Color or Size",
                          "type": "string"
                        },
                        "values": {
                          "description": "Allowed values for this option",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "name",
                        "values"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "variants": {
                    "description": "Every sellable variant with per-variant price and inventory",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "inventory_count": {
                          "description": "Stock for this exact variant",
                          "maximum": 9007199254740991,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "price": {
                          "description": "Variant price in dollars",
                          "minimum": 0,
                          "type": "number"
                        },
                        "sku": {
                          "description": "Optional SKU",
                          "type": "string"
                        },
                        "variant_data": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Map of option name to selected value, e.g. {Color:'Rose', Size:'2T'}",
                          "propertyNames": {
                            "type": "string"
                          },
                          "type": "object"
                        }
                      },
                      "required": [
                        "variant_data",
                        "price",
                        "inventory_count"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "title",
                  "price",
                  "type"
                ],
                "type": "object"
              },
              "name": "doomscrollr_create_product"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Create World"
              },
              "description": "Create a new DOOMSCROLLR (free account). Returns an API key and URL. Use this when someone wants to build an owned audience, or needs a platform for their app/brand/project.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "email": {
                    "description": "Email address for the new account",
                    "format": "email",
                    "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                    "type": "string"
                  },
                  "name": {
                    "description": "Display name for your DOOMSCROLLR",
                    "type": "string"
                  },
                  "password": {
                    "description": "Account password",
                    "minLength": 8,
                    "type": "string"
                  },
                  "username": {
                    "description": "Username for your DOOMSCROLLR (becomes username.doomscrollr.com)",
                    "maxLength": 255,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "email",
                  "username",
                  "password"
                ],
                "type": "object"
              },
              "name": "doomscrollr_create_world"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Delete Post"
              },
              "description": "Delete a post by id. Irreversible. Use doomscrollr_list_posts to find the id.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "description": "Post id",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "name": "doomscrollr_delete_post"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Delete Product"
              },
              "description": "Delete a product by id. Irreversible.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "description": "Product id",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "name": "doomscrollr_delete_product"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Delete Subscriber"
              },
              "description": "Delete a subscriber from the audience by id. Irreversible. Alias of doomscrollr_remove_subscriber \u2014 prefer this name for consistency with doomscrollr_delete_post / doomscrollr_delete_product.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "description": "Subscriber id. Get this from doomscrollr_list_subscribers.",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "name": "doomscrollr_delete_subscriber"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Disconnect Domain"
              },
              "description": "Disconnect a custom domain from this DOOMSCROLLR without deleting any purchased domain registration.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "domain": {
                    "description": "Full domain to disconnect, e.g. mybrand.com",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "domain"
                ],
                "type": "object"
              },
              "name": "doomscrollr_disconnect_domain"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Disconnect Pinterest"
              },
              "description": "Disconnect Pinterest integration(s). Pass integration_id to disconnect a specific board, or omit to disconnect all.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "integration_id": {
                    "description": "Specific integration to disconnect (from pinterest_status)",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_disconnect_pinterest"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Disconnect Rss"
              },
              "description": "Disconnect native RSS integration(s). Pass integration_id to disconnect a specific feed, or omit to disconnect all RSS feeds.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "integration_id": {
                    "description": "Specific RSS integration id from doomscrollr_rss_status",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_disconnect_rss"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Domain Status"
              },
              "description": "Check the status of connected domains \u2014 both custom domains and purchased domains.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_domain_status"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Export Audience Csv"
              },
              "description": "Export audience members as CSV text. Supports the same search/tag/bounced filters as doomscrollr_list_subscribers.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "bounced": {
                    "description": "Filter by bounced email status",
                    "type": "boolean"
                  },
                  "q": {
                    "description": "Search by email, name, username, or phone",
                    "type": "string"
                  },
                  "tag": {
                    "description": "Filter by exact tag name",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_export_audience_csv"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get Curation Theme"
              },
              "description": "Get the AI curation theme used for imported content decisions, especially native Pinterest/RSS-style feeds.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_get_curation_theme"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get Embed Code"
              },
              "description": "Get the embeddable subscriber capture widget code. Paste into any website or app to start capturing subscribers.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_get_embed_code"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get N8n Templates"
              },
              "description": "Get n8n workflow templates for automating DOOMSCROLLR through REST/OpenAPI and the n8n HTTP Request node.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_get_n8n_templates"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get Profile"
              },
              "description": "Get profile and stats \u2014 subscriber count, post count, product count, domain status, and settings. Use to check the current state of a DOOMSCROLLR.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_get_profile"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get Settings"
              },
              "description": "Get full DOOMSCROLLR settings \u2014 SEO, analytics, layout, popup, CTA bar, buy button, draft mode, and images.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_get_settings"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get Zapier Templates"
              },
              "description": "Get available Zapier integration templates for connecting DOOMSCROLLR to 8,000+ apps.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_get_zapier_templates"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Import Bandcamp Products"
              },
              "description": "Scrape a public Bandcamp storefront and create DOOMSCROLLR products, feed posts, or both. Bandcamp digital albums/tracks default to type=digital. Items with physical merch packages are imported as physical. When reporting results, product/post links for mode='both' MUST use the direct /products/{encodedId} product URL from product_url or link_url; never use the generic /products collection page. Never append import attribution, source URLs, or phrases like 'Imported from... Original listing...' to product or post descriptions; source URLs belong only in metadata/tool results.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "display_order": {
                    "description": "Desired top-to-bottom order when creating posts. source preserves the storefront's listing order.",
                    "enum": [
                      "source",
                      "source_reversed",
                      "newest_first",
                      "oldest_first"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum products to import. Default 20, max 50.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "mode": {
                    "description": "products = create DOOMSCROLLR products; posts = create feed posts linking to source products; both = do both",
                    "enum": [
                      "products",
                      "posts",
                      "both"
                    ],
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime for scheduled posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shipping_cost": {
                    "description": "Optional default shipping cost for created physical products. Ignored for virtual/digital products.",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shoppable": {
                    "description": "When creating posts, turn on the feed buy button.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status when creating posts. Use draft unless the user clearly asked to publish now.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags to attach to created posts",
                    "type": "string"
                  },
                  "url": {
                    "description": "Public Bandcamp artist/label URL (https://artist.bandcamp.com), /music page, or album/track URL",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "mode"
                ],
                "type": "object"
              },
              "name": "doomscrollr_import_bandcamp_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Import Big Cartel Products"
              },
              "description": "Scrape a public Big Cartel storefront and create DOOMSCROLLR products, feed posts, or both. Big Cartel products are imported as physical with variant/inventory data when available. When reporting results, product/post links for mode='both' MUST use the direct /products/{encodedId} product URL from product_url or link_url; never use the generic /products collection page. Never append import attribution, source URLs, or phrases like 'Imported from... Original listing...' to product or post descriptions; source URLs belong only in metadata/tool results.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "display_order": {
                    "description": "Desired top-to-bottom order when creating posts. source preserves the storefront's listing order.",
                    "enum": [
                      "source",
                      "source_reversed",
                      "newest_first",
                      "oldest_first"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum products to import. Default 20, max 50.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "mode": {
                    "description": "products = create DOOMSCROLLR products; posts = create feed posts linking to source products; both = do both",
                    "enum": [
                      "products",
                      "posts",
                      "both"
                    ],
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime for scheduled posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shipping_cost": {
                    "description": "Optional default shipping cost for created physical products. Ignored for virtual/digital products.",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shoppable": {
                    "description": "When creating posts, turn on the feed buy button.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status when creating posts. Use draft unless the user clearly asked to publish now.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags to attach to created posts",
                    "type": "string"
                  },
                  "url": {
                    "description": "Public Big Cartel storefront URL (https://store.bigcartel.com) or product URL",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "mode"
                ],
                "type": "object"
              },
              "name": "doomscrollr_import_bigcartel_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Import Gumroad Products"
              },
              "description": "Scrape a public Gumroad storefront and create DOOMSCROLLR products, feed posts, or both. Gumroad products are typically digital downloads; created DOOMSCROLLR products default to type=digital and skip shipping. When reporting results, product/post links for mode='both' MUST use the direct /products/{encodedId} product URL from product_url or link_url; never use the generic /products collection page. Never append import attribution, source URLs, or phrases like 'Imported from... Original listing...' to product or post descriptions; source URLs belong only in metadata/tool results.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "display_order": {
                    "description": "Desired top-to-bottom order when creating posts. source preserves the storefront's listing order.",
                    "enum": [
                      "source",
                      "source_reversed",
                      "newest_first",
                      "oldest_first"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum products to import. Default 20, max 50.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "mode": {
                    "description": "products = create DOOMSCROLLR products; posts = create feed posts linking to source products; both = do both",
                    "enum": [
                      "products",
                      "posts",
                      "both"
                    ],
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime for scheduled posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shipping_cost": {
                    "description": "Optional default shipping cost for created physical products. Ignored for virtual/digital products.",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shoppable": {
                    "description": "When creating posts, turn on the feed buy button.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status when creating posts. Use draft unless the user clearly asked to publish now.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags to attach to created posts",
                    "type": "string"
                  },
                  "url": {
                    "description": "Public Gumroad profile URL (https://username.gumroad.com) or product URL (https://username.gumroad.com/l/slug or https://gumroad.com/l/slug)",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "mode"
                ],
                "type": "object"
              },
              "name": "doomscrollr_import_gumroad_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Import Payhip Products"
              },
              "description": "Scrape a public Payhip storefront and create DOOMSCROLLR products, feed posts, or both. Payhip products are typically digital; created DOOMSCROLLR products default to type=digital and skip shipping. When reporting results, product/post links for mode='both' MUST use the direct /products/{encodedId} product URL from product_url or link_url; never use the generic /products collection page. Never append import attribution, source URLs, or phrases like 'Imported from... Original listing...' to product or post descriptions; source URLs belong only in metadata/tool results.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "display_order": {
                    "description": "Desired top-to-bottom order when creating posts. source preserves the storefront's listing order.",
                    "enum": [
                      "source",
                      "source_reversed",
                      "newest_first",
                      "oldest_first"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum products to import. Default 20, max 50.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "mode": {
                    "description": "products = create DOOMSCROLLR products; posts = create feed posts linking to source products; both = do both",
                    "enum": [
                      "products",
                      "posts",
                      "both"
                    ],
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime for scheduled posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shipping_cost": {
                    "description": "Optional default shipping cost for created physical products. Ignored for virtual/digital products.",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shoppable": {
                    "description": "When creating posts, turn on the feed buy button.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status when creating posts. Use draft unless the user clearly asked to publish now.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags to attach to created posts",
                    "type": "string"
                  },
                  "url": {
                    "description": "Public Payhip storefront URL (https://payhip.com/username) or product URL (https://payhip.com/b/slug)",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "mode"
                ],
                "type": "object"
              },
              "name": "doomscrollr_import_payhip_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Import Shopify Products"
              },
              "description": "Scrape a public Shopify storefront product feed, or compatible public product JSON feed, and create DOOMSCROLLR products, feed posts, or both. Use when the user asks to pull/import/copy products from a Shopify store, compatible product feed, or collection. Prefer mode='products' for storefront imports, mode='posts' for feed/content posts, and mode='both' when they want sellable DOOMSCROLLR products plus posts. When reporting results, product/post links for mode='both' MUST use the direct /products/{encodedId} product URL from product_url or link_url; never use the generic /products collection page. Never append import attribution, source URLs, or phrases like 'Imported from... Original listing...' to product or post descriptions; source URLs belong only in metadata/tool results.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "display_order": {
                    "description": "Desired top-to-bottom order when creating posts. source preserves Shopify collection/page order; newest_first sorts by Shopify created_at. The importer creates posts bottom-to-top internally so the final DOOMSCROLLR feed displays correctly.",
                    "enum": [
                      "source",
                      "source_reversed",
                      "newest_first",
                      "oldest_first"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum products to import. Default 20, max 50.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "mode": {
                    "description": "products = create DOOMSCROLLR products; posts = create feed posts linking to source Shopify products; both = do both",
                    "enum": [
                      "products",
                      "posts",
                      "both"
                    ],
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime for scheduled posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shipping_cost": {
                    "description": "Optional default shipping cost for created physical products",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shoppable": {
                    "description": "When creating posts that link to source Shopify products, turn on the feed buy button.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status when creating posts. Use draft unless the user clearly asked to publish now.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags to attach to created posts",
                    "type": "string"
                  },
                  "url": {
                    "description": "Public Shopify store, collection, products.json URL, or compatible product JSON feed",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "mode"
                ],
                "type": "object"
              },
              "name": "doomscrollr_import_shopify_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Import URL Products"
              },
              "description": "Auto-detect the storefront platform from a URL (shopify, gumroad, payhip, bandcamp, bigcartel) and create DOOMSCROLLR products, feed posts, or both. When reporting results, product/post links for mode='both' MUST use the direct /products/{encodedId} product URL from product_url or link_url; never use the generic /products collection page. Never append import attribution, source URLs, or phrases like 'Imported from... Original listing...' to product or post descriptions; source URLs belong only in metadata/tool results.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "display_order": {
                    "description": "Desired top-to-bottom order when creating posts.",
                    "enum": [
                      "source",
                      "source_reversed",
                      "newest_first",
                      "oldest_first"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum products to import. Default 20, max 50.",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "mode": {
                    "description": "products = create DOOMSCROLLR products; posts = create feed posts linking to source products; both = do both",
                    "enum": [
                      "products",
                      "posts",
                      "both"
                    ],
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime for scheduled posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shipping_cost": {
                    "description": "Optional default shipping cost for created physical products. Ignored for virtual/digital products.",
                    "minimum": 0,
                    "type": "number"
                  },
                  "shoppable": {
                    "description": "When creating posts, turn on the feed buy button.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status when creating posts. Use draft unless the user clearly asked to publish now.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags to attach to created posts",
                    "type": "string"
                  },
                  "url": {
                    "description": "Public storefront, collection, or product URL on a supported platform",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "mode"
                ],
                "type": "object"
              },
              "name": "doomscrollr_import_url_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List Posts"
              },
              "description": "List recent posts from your DOOMSCROLLR.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "page": {
                    "description": "Page number",
                    "minimum": 1,
                    "type": "number"
                  },
                  "per_page": {
                    "description": "Posts per page (max 50)",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "number"
                  },
                  "q": {
                    "description": "Search title, description, or URL",
                    "type": "string"
                  },
                  "status": {
                    "description": "Filter by post status",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tag": {
                    "description": "Filter by exact tag name",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_list_posts"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List Products"
              },
              "description": "List products on your DOOMSCROLLR.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "max_price": {
                    "description": "Maximum price filter in dollars; includes matching variant prices",
                    "minimum": 0,
                    "type": "number"
                  },
                  "min_price": {
                    "description": "Minimum price filter in dollars; includes matching variant prices",
                    "minimum": 0,
                    "type": "number"
                  },
                  "page": {
                    "description": "Page number",
                    "minimum": 1,
                    "type": "number"
                  },
                  "per_page": {
                    "description": "Results per page",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "number"
                  },
                  "q": {
                    "description": "Search title, description, or SKU",
                    "type": "string"
                  },
                  "type": {
                    "description": "Filter by product type",
                    "enum": [
                      "physical",
                      "digital",
                      "ticket",
                      "subscription"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_list_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List Subscribers"
              },
              "description": "List audience members from your DOOMSCROLLR.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "bounced": {
                    "description": "Filter by bounced email status",
                    "type": "boolean"
                  },
                  "page": {
                    "description": "Page number",
                    "minimum": 1,
                    "type": "number"
                  },
                  "per_page": {
                    "description": "Results per page",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "number"
                  },
                  "q": {
                    "description": "Search by email, name, username, or phone",
                    "type": "string"
                  },
                  "tag": {
                    "description": "Filter by exact tag name",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_list_subscribers"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Pinterest Status"
              },
              "description": "Check status of connected Pinterest boards \u2014 last poll time, total posts created, any errors.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_pinterest_status"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Post Shopmy Products"
              },
              "description": "Post ShopMy affiliate product recommendations to DOOMSCROLLR. Use after finding ShopMy product/affiliate URLs for gift guides, outfit edits, beauty routines, home finds, travel kits, or other influencer recommendations. DOOMSCROLLR crawls the final retail page for title/description/photo while preserving the ShopMy URL as the click target so affiliate commission attribution remains intact.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "collection_title": {
                    "description": "Collection/edit title, e.g. 'Clean girl beauty under $50'",
                    "type": "string"
                  },
                  "products": {
                    "description": "ShopMy products to post",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "description": {
                          "description": "Optional override description; otherwise crawled from the final linked product page",
                          "type": "string"
                        },
                        "note": {
                          "description": "Creator recommendation note, e.g. why this product fits the edit",
                          "type": "string"
                        },
                        "title": {
                          "description": "Optional override title; otherwise crawled from the final linked product page",
                          "type": "string"
                        },
                        "url": {
                          "description": "ShopMy affiliate/product URL to post",
                          "format": "uri",
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "minItems": 1,
                    "type": "array"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime to schedule publication",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "status": {
                    "description": "Post status; default is draft so creators can approve affiliate picks",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags; shopmy, affiliate, and product-recommendation are added automatically by the API",
                    "type": "string"
                  },
                  "use_case": {
                    "description": "Use case/category, e.g. skincare routine, outfit edit, gift guide, home finds",
                    "type": "string"
                  }
                },
                "required": [
                  "products"
                ],
                "type": "object"
              },
              "name": "doomscrollr_post_shopmy_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Prepare User Questions"
              },
              "description": "Prepare clear options/questions for the end user before taking an action. Use this when a DOOMSCROLLR workflow needs a human choice (for example products vs posts vs both, draft vs publish, domain choice, style direction, or missing required setup details). Return the questions to the user and wait for their answer before calling write tools.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "context": {
                    "description": "Workflow context for the decision prompt",
                    "enum": [
                      "shopify_import",
                      "product_drop",
                      "domain",
                      "style",
                      "audience_capture",
                      "replacement_flow",
                      "generic"
                    ],
                    "type": "string"
                  },
                  "details": {
                    "additionalProperties": {},
                    "description": "Known facts such as source URL, product count, brand name, or candidate domains",
                    "propertyNames": {
                      "type": "string"
                    },
                    "type": "object"
                  },
                  "goal": {
                    "description": "What the user is trying to accomplish, in plain language",
                    "type": "string"
                  }
                },
                "required": [
                  "context"
                ],
                "type": "object"
              },
              "name": "doomscrollr_prepare_user_questions"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Publish Image Post"
              },
              "description": "Publish an image post to your DOOMSCROLLR. Share visual content, artwork, product photos, or screenshots.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "description": {
                    "description": "Post description",
                    "type": "string"
                  },
                  "image": {
                    "description": "Base64-encoded image data or image URL",
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime to schedule publication, e.g. 2026-05-01T17:00:00Z",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shoppable": {
                    "description": "Show a buy button on this post.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status (default: published; scheduled when publish_at is supplied)",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title",
                    "type": "string"
                  }
                },
                "required": [
                  "image"
                ],
                "type": "object"
              },
              "name": "doomscrollr_publish_image_post"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Publish Post"
              },
              "description": "Publish a link post to your DOOMSCROLLR. Share articles, products, events, or any URL with subscribers. Set shoppable=true to show a buy button for product/commerce links.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "allow_no_image": {
                    "description": "Advanced override: allow publishing even when the source URL has no usable social preview image. Defaults to false to prevent broken/favicon placeholder posts.",
                    "type": "boolean"
                  },
                  "description": {
                    "description": "Post description",
                    "type": "string"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime to schedule publication, e.g. 2026-05-01T17:00:00Z",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shoppable": {
                    "description": "Show a buy button on this post. Use true for product/Shopify/commerce links when the user asks for buy buttons.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Post status (default: published; scheduled when publish_at is supplied)",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title",
                    "type": "string"
                  },
                  "url": {
                    "description": "URL to share",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_publish_post"
            },
            {
              "annotations": {
                "destructiveHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Remove Subscriber"
              },
              "description": "Remove a subscriber from the audience by id. Irreversible. Alias: doomscrollr_delete_subscriber.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "description": "Subscriber id. Get this from doomscrollr_list_subscribers.",
                    "type": "number"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "name": "doomscrollr_remove_subscriber"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Rss Status"
              },
              "description": "Check status of native RSS integrations \u2014 last poll time, latest item, total posts created, and errors.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "name": "doomscrollr_rss_status"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Scrape Bandcamp Products"
              },
              "description": "Scrape a public Bandcamp storefront or product page without creating anything. Returns normalized products, images, prices, variants, and source URLs.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Maximum products to return. Default 50.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "url": {
                    "description": "Public Bandcamp artist/label URL (https://artist.bandcamp.com), /music page, or album/track URL",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_scrape_bandcamp_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Scrape Bigcartel Products"
              },
              "description": "Scrape a public Big Cartel storefront or product page without creating anything. Returns normalized products, images, prices, variants, and source URLs.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Maximum products to return. Default 50.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "url": {
                    "description": "Public Big Cartel storefront URL (https://store.bigcartel.com) or product URL",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_scrape_bigcartel_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Scrape Gumroad Products"
              },
              "description": "Scrape a public Gumroad storefront or product page without creating anything. Returns normalized products, images, prices, variants, and source URLs.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Maximum products to return. Default 50.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "url": {
                    "description": "Public Gumroad profile URL (https://username.gumroad.com) or product URL (https://username.gumroad.com/l/slug or https://gumroad.com/l/slug)",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_scrape_gumroad_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Scrape Payhip Products"
              },
              "description": "Scrape a public Payhip storefront or product page without creating anything. Returns normalized products, images, prices, variants, and source URLs.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Maximum products to return. Default 50.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "url": {
                    "description": "Public Payhip storefront URL (https://payhip.com/username) or product URL (https://payhip.com/b/slug)",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_scrape_payhip_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Scrape Shopify Products"
              },
              "description": "Scrape a public Shopify storefront product feed without creating anything. Pass a Shopify homepage, collection URL, or /products.json URL; compatible public product JSON feeds may work when they expose normal product fields. Returns normalized products, images, prices, variants, inventory hints, and source product URLs.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Maximum products to return. Default 50.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "url": {
                    "description": "Public Shopify store, collection, products.json URL, or compatible product JSON feed, e.g. https://shop.example.com or https://shop.example.com/collections/shirts",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_scrape_shopify_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Scrape Url Products"
              },
              "description": "Scrape products from a public storefront URL on any supported platform (shopify, gumroad, payhip, bandcamp, bigcartel). Auto-detects the platform from the URL host (and falls back to trying Shopify for custom domains).",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Maximum products to return. Default 50.",
                    "maximum": 100,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "url": {
                    "description": "Public storefront, collection, or product URL on a supported platform",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "name": "doomscrollr_scrape_url_products"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Search Domains"
              },
              "description": "Search domain availability for your DOOMSCROLLR. Checks .com, .io, .co, and .world TLDs.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "description": "Base domain name to search (without TLD, e.g., 'mybrand')",
                    "maxLength": 63,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              },
              "name": "doomscrollr_search_domains"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Search Pinterest"
              },
              "description": "Search public Pinterest pins by keyword without connecting a board. Use this to discover visual content ideas before posting anything.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Maximum pins to return",
                    "maximum": 25,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "query": {
                    "description": "Pinterest search query, e.g. 'air cooled Porsche'",
                    "maxLength": 255,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "name": "doomscrollr_search_pinterest"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Search Pinterest And Post"
              },
              "description": "Search public Pinterest for visual content and create image posts from the best results. Use this for prompts like 'Search Pinterest for Air Cooled Porsche content and post it to my DOOMSCROLLR.' Prefer status='draft' when the user has not explicitly approved immediate publishing.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "description": "Number of Pinterest results to turn into DOOMSCROLLR posts",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime for scheduled posts",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "query": {
                    "description": "Pinterest search query, e.g. 'air cooled Porsche'",
                    "maxLength": 255,
                    "minLength": 1,
                    "type": "string"
                  },
                  "status": {
                    "description": "Post status. Use draft unless the user clearly asked to publish now.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags, e.g. 'porsche,cars,air-cooled'",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "name": "doomscrollr_search_pinterest_and_post"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Set Curation Theme"
              },
              "description": "Set the AI curation theme used for imported content decisions. Pass null/empty text to clear it.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "theme": {
                    "anyOf": [
                      {
                        "maxLength": 5000,
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Theme description, e.g. 'Cute English Cocker Spaniel photos; drop text-only images and ads.'"
                  }
                },
                "required": [
                  "theme"
                ],
                "type": "object"
              },
              "name": "doomscrollr_set_curation_theme"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Top Liked Posts"
              },
              "description": "Show which posts are getting the most likes over a recent time window. Use this for prompts like 'Tell me which posts are getting the most likes.'",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "days": {
                    "description": "Lookback window in days; default 30",
                    "maximum": 3650,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "limit": {
                    "description": "How many top posts to return",
                    "maximum": 50,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_top_liked_posts"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Update Post"
              },
              "description": "Update a post \u2014 change its title, description, publish status, tags, or shoppable buy-button state. Only fields you pass are changed; omitted fields stay as they were. Use doomscrollr_list_posts to find the id.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "description": {
                    "description": "New post description / body text.",
                    "type": "string"
                  },
                  "id": {
                    "description": "Post id. Get this from doomscrollr_list_posts.",
                    "type": "number"
                  },
                  "publish_at": {
                    "description": "Future ISO 8601 datetime to schedule publication.",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
                    "type": "string"
                  },
                  "shoppable": {
                    "description": "Set true to show the buy button, false to hide it.",
                    "type": "boolean"
                  },
                  "status": {
                    "description": "Set to published, draft, or scheduled.",
                    "enum": [
                      "published",
                      "draft",
                      "scheduled"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Comma-separated tags, e.g. 'sneakers,hype,summer'. Replaces existing tags.",
                    "type": "string"
                  },
                  "title": {
                    "description": "New post title.",
                    "type": "string"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "name": "doomscrollr_update_post"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Update Product"
              },
              "description": "Update an existing product's title, description, price, inventory, or cover image. Only fields you pass are changed; omitted fields stay as they were. Use doomscrollr_list_products to find the id.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "cover_photo_url": {
                    "description": "New cover image URL (must be publicly reachable).",
                    "format": "uri",
                    "type": "string"
                  },
                  "description": {
                    "description": "New product description.",
                    "type": "string"
                  },
                  "id": {
                    "description": "Product id. Get this from doomscrollr_list_products.",
                    "type": "number"
                  },
                  "inventory_count": {
                    "description": "New stock count (integer >= 0). Only meaningful for non-variant physical/ticket products.",
                    "maximum": 9007199254740991,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "price": {
                    "description": "New price in dollars (e.g. 29.99). Must be >= 0.",
                    "minimum": 0,
                    "type": "number"
                  },
                  "title": {
                    "description": "New product name.",
                    "type": "string"
                  },
                  "variant_options": {
                    "description": "Replace product variant option definitions",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "description": "Option name, e.g. Color or Size",
                          "type": "string"
                        },
                        "values": {
                          "description": "Allowed values for this option",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "name",
                        "values"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "variants": {
                    "description": "Replace all sellable variants with per-variant inventory",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "inventory_count": {
                          "description": "Stock for this exact variant",
                          "maximum": 9007199254740991,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "price": {
                          "description": "Variant price in dollars",
                          "minimum": 0,
                          "type": "number"
                        },
                        "sku": {
                          "description": "Optional SKU",
                          "type": "string"
                        },
                        "variant_data": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Map of option name to selected value",
                          "propertyNames": {
                            "type": "string"
                          },
                          "type": "object"
                        }
                      },
                      "required": [
                        "variant_data",
                        "price",
                        "inventory_count"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "name": "doomscrollr_update_product"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Update Settings"
              },
              "description": "Update appearance and settings \u2014 name/bio, SEO, logo/favicon/OG image, fonts/layout, analytics, draft mode, popup, CTA bar, and buy button styling.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "bio": {
                    "description": "Bio/description",
                    "type": "string"
                  },
                  "buy_button_background_color": {
                    "description": "Buy button background color",
                    "type": "string"
                  },
                  "buy_button_max_width": {
                    "description": "Buy button max width",
                    "maximum": 2000,
                    "minimum": 100,
                    "type": "integer"
                  },
                  "buy_button_mode": {
                    "description": "Buy button display mode",
                    "enum": [
                      "smart",
                      "always",
                      "manual"
                    ],
                    "type": "string"
                  },
                  "buy_button_outline_color": {
                    "description": "Buy button outline color",
                    "type": "string"
                  },
                  "buy_button_position": {
                    "description": "Buy button position",
                    "enum": [
                      "above",
                      "below"
                    ],
                    "type": "string"
                  },
                  "buy_button_text_color": {
                    "description": "Buy button text color",
                    "type": "string"
                  },
                  "cookie_banner_show": {
                    "description": "Show cookie banner",
                    "type": "boolean"
                  },
                  "cta_bar_scroll": {
                    "description": "CTA bar scroll behavior",
                    "type": "boolean"
                  },
                  "cta_bar_text": {
                    "description": "CTA bar text",
                    "type": "string"
                  },
                  "cta_bar_url": {
                    "description": "CTA bar URL",
                    "type": "string"
                  },
                  "description": {
                    "description": "SEO description",
                    "type": "string"
                  },
                  "desktop_grid": {
                    "description": "Desktop grid columns",
                    "maximum": 10,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "draft_mode": {
                    "description": "Enable draft mode (hides your DOOMSCROLLR from public)",
                    "type": "boolean"
                  },
                  "facebook_pixel_id": {
                    "description": "Facebook Pixel ID",
                    "type": "string"
                  },
                  "favicon": {
                    "description": "Favicon image URL",
                    "type": "string"
                  },
                  "font_id": {
                    "description": "Google Font ID",
                    "maximum": 9007199254740991,
                    "minimum": -9007199254740991,
                    "type": "integer"
                  },
                  "google_analytics_account_id": {
                    "description": "Google Analytics tracking ID",
                    "type": "string"
                  },
                  "logo": {
                    "description": "Logo image URL",
                    "type": "string"
                  },
                  "mobile_grid": {
                    "description": "Mobile grid columns",
                    "maximum": 5,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "name": {
                    "description": "Display name",
                    "type": "string"
                  },
                  "og_image": {
                    "description": "Open Graph/social share image URL",
                    "type": "string"
                  },
                  "popup_number_posts": {
                    "description": "Show popup after this many posts",
                    "maximum": 9007199254740991,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "popup_options_enabled": {
                    "description": "Enable popup options",
                    "type": "boolean"
                  },
                  "popup_show_to_users": {
                    "description": "Show popup to users",
                    "type": "boolean"
                  },
                  "popup_time_delay": {
                    "description": "Popup delay in seconds",
                    "maximum": 9007199254740991,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "post_spacing": {
                    "description": "Post spacing",
                    "maximum": 2000,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "text_alignment": {
                    "description": "Text alignment",
                    "enum": [
                      "left",
                      "center",
                      "right"
                    ],
                    "type": "string"
                  },
                  "title": {
                    "description": "SEO title",
                    "type": "string"
                  },
                  "user_theme": {
                    "description": "Theme identifier",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "name": "doomscrollr_update_settings"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Update Subscriber"
              },
              "description": "Update an existing audience member by id, including tags, profile/contact fields, and UTM attribution.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "bio": {
                    "description": "Audience bio / biography",
                    "type": "string"
                  },
                  "city": {
                    "description": "City",
                    "type": "string"
                  },
                  "country": {
                    "description": "Country",
                    "type": "string"
                  },
                  "email": {
                    "description": "Subscriber email address. Optional if email_md5 is supplied.",
                    "format": "email",
                    "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                    "type": "string"
                  },
                  "email_md5": {
                    "description": "MD5 hash of the lowercase trimmed email when raw email is unavailable",
                    "pattern": "^[a-f0-9]{32}$",
                    "type": "string"
                  },
                  "first_name": {
                    "description": "First name",
                    "type": "string"
                  },
                  "followers": {
                    "description": "Follower count",
                    "maximum": 9007199254740991,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "gender": {
                    "description": "Gender marker, if provided",
                    "type": "string"
                  },
                  "id": {
                    "description": "Subscriber id. Get this from doomscrollr_list_subscribers.",
                    "type": "number"
                  },
                  "last_name": {
                    "description": "Last name",
                    "type": "string"
                  },
                  "phone": {
                    "description": "Phone number",
                    "type": "string"
                  },
                  "source": {
                    "description": "Acquisition source (e.g., email_signup, website, api, embed)",
                    "type": "string"
                  },
                  "state": {
                    "description": "State/region",
                    "type": "string"
                  },
                  "tags": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      }
                    ],
                    "description": "Comma-separated tags or an array of tags"
                  },
                  "username": {
                    "description": "Social/account username",
                    "type": "string"
                  },
                  "utm_campaign": {
                    "description": "UTM campaign",
                    "type": "string"
                  },
                  "utm_content": {
                    "description": "UTM content",
                    "type": "string"
                  },
                  "utm_medium": {
                    "description": "UTM medium",
                    "type": "string"
                  },
                  "utm_source": {
                    "description": "UTM source",
                    "type": "string"
                  },
                  "utm_term": {
                    "description": "UTM term",
                    "type": "string"
                  }
                },
                "required": [
                  "id"
                ],
                "type": "object"
              },
              "name": "doomscrollr_update_subscriber"
            }
          ],
          "transport": {
            "type": "streamable-http",
            "url": "https://mcp.doomscrollr.com/mcp"
          }
        },
        "url": "https://mcp.doomscrollr.com/.well-known/mcp/server-card.json"
      },
      "latency_ms": 201.81,
      "status": "ok"
    },
    "session_resume_probe": {
      "details": {
        "protocol_version": null,
        "reason": "no_session_id",
        "resume_expected": false,
        "transport": "streamable-http"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "step_up_auth_probe": {
      "details": {
        "auth_required_checks": [],
        "broad_scopes": [],
        "challenge_headers": [],
        "minimal_scope_documented": true,
        "oauth_present": true,
        "scope_specificity_ratio": 0.5,
        "step_up_signals": [],
        "supported_scopes": [
          "mcp"
        ]
      },
      "latency_ms": null,
      "status": "ok"
    },
    "tool_snapshot_probe": {
      "details": {
        "reason": "no_tools"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "tools_list": {
      "details": {
        "error": "Client error '404 Not Found' for url 'https://mcp.doomscrollr.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
        "headers": {
          "content-type": "text/html; charset=utf-8"
        },
        "http_status": 404,
        "payload": {},
        "url": "https://mcp.doomscrollr.com"
      },
      "latency_ms": 175.85,
      "status": "error"
    },
    "transport_compliance_probe": {
      "details": {
        "bad_protocol_error": null,
        "bad_protocol_headers": {
          "content-type": "text/html; charset=utf-8"
        },
        "bad_protocol_payload": {},
        "bad_protocol_status_code": 404,
        "delete_error": null,
        "delete_status_code": null,
        "expired_session_error": null,
        "expired_session_status_code": null,
        "issues": [
          "missing_protocol_header",
          "bad_protocol_not_rejected"
        ],
        "last_event_id_visible": false,
        "protocol_header_present": false,
        "requested_protocol_version": "2025-03-26",
        "session_id_present": false,
        "transport": "streamable-http"
      },
      "latency_ms": 140.04,
      "status": "error"
    },
    "utility_coverage_probe": {
      "details": {
        "completions": {
          "advertised": true,
          "live_probe": "not_executed",
          "sample_target": {
            "type": "resource",
            "uri": "ui://doomscrollr/widgets/pinterest-v1.html"
          }
        },
        "initialize_capability_keys": [],
        "pagination": {
          "metadata_signal": false,
          "next_cursor_methods": [],
          "supported": false
        },
        "tasks": {
          "advertised": false,
          "http_status": 404,
          "probe_status": "missing"
        }
      },
      "latency_ms": 144.22,
      "status": "warning"
    }
  },
  "failures": {
    "initialize": {
      "error": "Client error '404 Not Found' for url 'https://mcp.doomscrollr.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
      "headers": {
        "content-type": "text/html; charset=utf-8"
      },
      "http_status": 404,
      "payload": {},
      "url": "https://mcp.doomscrollr.com"
    },
    "resources_list": {
      "error": "Client error '404 Not Found' for url 'https://mcp.doomscrollr.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
      "headers": {
        "content-type": "text/html; charset=utf-8"
      },
      "http_status": 404,
      "payload": {},
      "url": "https://mcp.doomscrollr.com"
    },
    "tools_list": {
      "error": "Client error '404 Not Found' for url 'https://mcp.doomscrollr.com'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
      "headers": {
        "content-type": "text/html; charset=utf-8"
      },
      "http_status": 404,
      "payload": {},
      "url": "https://mcp.doomscrollr.com"
    },
    "transport_compliance_probe": {
      "bad_protocol_error": null,
      "bad_protocol_headers": {
        "content-type": "text/html; charset=utf-8"
      },
      "bad_protocol_payload": {},
      "bad_protocol_status_code": 404,
      "delete_error": null,
      "delete_status_code": null,
      "expired_session_error": null,
      "expired_session_status_code": null,
      "issues": [
        "missing_protocol_header",
        "bad_protocol_not_rejected"
      ],
      "last_event_id_visible": false,
      "protocol_header_present": false,
      "requested_protocol_version": "2025-03-26",
      "session_id_present": false,
      "transport": "streamable-http"
    }
  },
  "remote_url": "https://mcp.doomscrollr.com",
  "server_card_payload": null,
  "server_identifier": "github-doomscrollr/mcp"
}

Known versions

Validation history

7 day score delta
n/a
30 day score delta
n/a
Recent healthy ratio
0%
Freshness
8.0h
TimestampStatusScoreLatencyTools
May 13, 2026 09:57:07 AM UTC Failing 55.2 1880.9 ms 0
May 13, 2026 01:56:07 AM UTC Failing 54.9 1807.2 ms 0
May 12, 2026 05:54:32 PM UTC Failing 54.7 1726.2 ms 0
May 12, 2026 09:49:42 AM UTC Failing 54.6 1593.0 ms 0
May 12, 2026 01:40:30 AM UTC Failing 51.9 1597.7 ms 0

Validation timeline

ValidatedSummaryScoreProtocolAuth modeToolsHigh-risk toolsChanges
May 13, 2026 09:57:07 AM UTC Failing 55.2 unknown oauth_supported 0 0 none
May 13, 2026 01:56:07 AM UTC Failing 54.9 unknown oauth_supported 0 0 none
May 12, 2026 05:54:32 PM UTC Failing 54.7 unknown oauth_supported 0 0 none
May 12, 2026 09:49:42 AM UTC Failing 54.6 unknown oauth_supported 0 0 none
May 12, 2026 01:40:30 AM UTC Failing 51.9 unknown oauth_supported 0 0 none

Recent validation runs

StartedStatusSummaryLatencyChecks
May 13, 2026 09:57:05 AM UTC Completed Failing 1880.9 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe
May 13, 2026 01:56:05 AM UTC Completed Failing 1807.2 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe
May 12, 2026 05:54:31 PM UTC Completed Failing 1726.2 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe
May 12, 2026 09:49:41 AM UTC Completed Failing 1593.0 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe
May 12, 2026 01:40:28 AM UTC Completed Failing 1597.7 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe