Model Context Protocol bridge (Streamable HTTP) for ads.txt, sellers.json, and supply-chain investigations.
Use this URL in your MCP client (remote / HTTP transport):
https://mcp.decryptads.com/mcp
Transport path is /mcp, not the site root. Backend: same REST API as api.decryptads.com/docs.
MCP is available only to DecryptAds accounts. Each user connects with their own API key (same tokens as the REST API).
svw_…); it is displayed only once.
Send the token on every MCP request as
Authorization: Bearer <key> or X-API-Key: <key>.
The bridge validates it, then forwards it to the API (rate limits and monthly quota apply per user).
Revoke the key in the app to disable MCP immediately.
See also: How to use the API.
Edit ~/.cursor/mcp.json or a project .cursor/mcp.json:
{
"mcpServers": {
"decryptads": {
"url": "https://mcp.decryptads.com/mcp",
"headers": {
"Authorization": "Bearer svw_YOUR_KEY_HERE"
}
}
}
}
Restart Cursor. Tools appear in the MCP panel after a successful connection.
Same url and headers block in claude_desktop_config.json under mcpServers. Restart the app fully.
claude mcp add --transport http decryptads https://mcp.decryptads.com/mcp \ --header "Authorization: Bearer svw_YOUR_KEY_HERE"
More clients and examples: Using DecryptAds with MCP (blog).
After you connect with a valid API key, your MCP client lists tools from the server
(tools/list). Names and descriptions match the deployed bridge.
Below is the current catalog (grouped); parameters are in each tool’s schema in the client.
investigate_hostnameget_declared_supply_summaryget_jurisdiction_flagged_partnersget_cppa_data_broker_registry_matchget_tcf_global_vendor_list_matchget_tranco_rankget_mfa_scoreget_cruxvalidate_schain_serializedvalidate_schain_jsonget_hostnames_for_file_sha256ingest_hostnamesget_crawl_historyget_crawl_log_entriesget_table_row_countsget_ad_system_detailget_top_ad_systems_rankingget_market_shareget_suspicious_direct_accountsget_network_clustersget_seller_transparency_scoresget_publishers_missing_ownerdomainget_duplicate_ads_txt_linesreverse_lookup_ownerdomainreverse_lookup_managerdomainget_orphaned_sellersvalidate_tag_certification_idsanalyze_file_commentscompare_latest_files_between_hostsdiff_file_snapshots_by_sha256diff_sellers_json_by_sha256get_seller_supply_profilelookup_seller_json_rowssearch_sellers_by_name_substringlist_sellers_for_registrable_domainlist_ads_txt_scanslist_app_ads_txt_scansget_ads_txt_lines_for_snapshotget_app_ads_txt_lines_for_snapshotlist_ads_txt_entries_for_publisher_accountlist_app_ads_txt_entries_for_publisher_accountsearch_store_apps_catalogget_store_app_catalog_detailget_store_apps_for_publisher_hostnameget_impressionlog_analysis_job — poll job status (upload files in the web app)
Large impression-log uploads are not exposed via MCP; use the web UI, then poll with
get_impressionlog_analysis_job.
example.com” → investigate_hostnameget_declared_supply_summaryvalidate_schain_jsonget_hostnames_for_file_sha256ingest_hostnamesMCP and REST share the same API keys and backend. For scripts without an AI assistant, call the REST API directly.