
Duchamp
io.github.duchamp-appPublished by GitHub account duchamp-appv0.10.0Updated Oct 24, 2026
Competitor ad research for coding agents: long-running ads, keyframes and transcripts over MCP.
Overview
Duchamp is a remote MCP server for competitor ad research, letting coding agents search long-running ads, open keyframes and transcripts, and compare brands.
- What you can do
- Search and open observed ads, including long-running ones, with copy, keyframes, transcripts and landing pages, and find duplicate creatives or hook banks by niche or advertiser page. Break down and compare advertisers: brand anatomy, landing pages, paid partners, creative velocity and domain lookups. Manage a saved library: save ads, labels and links, create boards, update notes, tags and ratings, and export boards as JSON or CSV. Compose reference transfer briefs from ads, labels, pages or boards. Read your own Meta ad account performance: workspaces, insights, timeseries, creative and ad reports. Read and manage marketing projects.
- When to use it
- Useful when an agent needs competitor or market ad research: finding ads that have run 90+ days, mining hooks and offers, comparing advertisers, or turning saved ads into a brief. Also relevant for reviewing your own Meta ad performance alongside competitor research.
- Requirements
- Remote Streamable HTTP endpoint at duchamp.app/api/mcp with OAuth sign-in to a free Duchamp account; no API key. Saved library, team boards, Performance and marketing tools each need a separate per-app opt-in on the site. Performance requires connecting your own Meta ad account (read only). Network access required.
Installation
In SourceWeft
- Open Duchamp in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.duchamp-app%2Fduchamp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"duchamp": {
"type": "http",
"url": "https://duchamp.app/api/mcp"
}
}
}README
Duchamp — ad research for coding agents
Duchamp is an ad-research tool for Claude Code, Codex, and Cursor. It finds the ads curated advertisers have kept running for 90+ days, and you save, compare, and pull the research materials into your agent, on the web or over one remote MCP server: https://duchamp.app/api/mcp.
Call search_ads first, then get_ad or get_brand_anatomy. Creative files, ad copy, keyframes, and transcripts need the signed-in account. Lists and counts on the site are public. A reference prompt from compose_transfer_brief is a reference. It does not promise the same look or the same outcome. The original ad stays a link (duchamp_url). get_ad returns timestamped keyframes, the speech transcript, full body copy, the landing URL, and observed numbers, plus a stored AI analysis when one exists (format, hook, 15 emotional drivers, persona, creative targeting, product category, first product appearance — filled by a nightly batch, Foreplay-style). Treat the analysis as a reference and check it against the materials; search_ads can filter by its fields. Product facts passed to compose_transfer_brief are not stored. Saved items, boards, and watched advertiser pages are stored for the signed-in user. Those tools need a separate per-app opt-in on duchamp.app/saved/connect.
38 tools are registered: 26 ad-research tools, 6 Performance tools, 2 label tools, and 4 marketing workspace tools. The table below is that set.
Performance (your own Meta ad accounts, read only): connect an ad account on duchamp.app/performance, group accounts into workspaces (one per client or brand), then allow the app on duchamp.app/performance/connect. list_workspaces → get_performance_insights with a workspace_id or account_ids (group by ad name, copy, creative, landing page, headline, campaign, ad set, account, workspace or Audience Segment — New Audience, Engaged Audience, Existing Customer, sorted by the workspace's campaign-name rules or Duchamp's defaults; by a Meta breakdown at account level — country, age, gender, platform, placement, Meta customer segment; or compare rule groups) → get_performance_timeseries / get_performance_creative / get_performance_ad. Scores (hook, watch, click, convert, viral) are percentiles among every ad (or group) of the workspace in the same period — they are not an industry benchmark. Numbers use the ad set attribution setting and impression-time reporting unless you pick a window with attr_click (1d, 7d, 28d) and attr_view (none, 1d) — Meta no longer returns 7-day or 28-day view. Besides spend, ROAS, CPA, CTR and video rates there are website and Shop purchases, landing page views, add to cart, checkout, leads, drop-off rates and your custom conversions (cc_<id>_total, _value, _cost, _roas, listed by get_performance_metrics with a workspace_id).
Team boards (read only): list_boards with scope: "team" or "all" adds the team's boards (marked scope: "team"); pass board_scope: "team" to get_board, export_board and compose_transfer_brief, and use list_saved with scope: "team" for teammates' shared ads. This needs a separate team access per app on duchamp.app/saved/connect, and only teammates who turned on AI sharing appear — no notes, saved titles, link items or comments.
- Website: duchamp.app · English overview: duchamp.app/en
- Connect page: duchamp.app/mcp
- MCP endpoint:
https://duchamp.app/api/mcp(Streamable HTTP, OAuth 2.1 with a free Duchamp account, no API key) - For AI readers: llms.txt · llms-full.txt
What you get
Do not invent numbers, dates, prices, or reviews. Transcripts are raw speech-to-text and can mishear names. A person should check what the agent concludes.
Connect in one line
The script finds Claude Code and Codex, registers the server, and opens your browser to sign in with a free Duchamp account. There is no token to copy.
Manual setup
Claude Code
Then in a new session run /mcp, choose duchamp and press Authenticate.
Codex
Cursor — add to .cursor/mcp.json, then press Connect next to duchamp in Cursor's MCP settings:
Any other MCP client — add a remote server named Duchamp with transport Streamable HTTP and URL https://duchamp.app/api/mcp. The first connection opens a browser for OAuth.
Plugin install (skills + agent)
The plugin adds eleven skills (nine active, two paused) and a judge agent on top of the MCP server.
Claude Code:
Codex:
Then sign in once: Claude Code /mcp → duchamp → Authenticate; Codex codex mcp login duchamp.
ads-research: find working ads, open one ad with its materials, break down an advertiser, compare your page, and keep a saved library. This is the skill to use.- Research skill packs — workflows the agent runs end to end. Say "use the skill on …":
evergreen-hunt: ads that ran 90+ days in a niche, clustered by hook, with transcripts for the strongest.weekly-competitor-sweep: your watched advertisers' last 7 days as a Slack-ready Monday brief.creative-test-autopsy: what one advertiser is testing now vs what it keeps scaling.board-to-brief: a named board turned into a production brief with three angles grounded in the saved ads.hook-mining: a hook bank for a niche and format, ranked by how long the ads ran.domain-war-room: a competitor's domain turned into its ads, hooks, landing pages, paid partners and attack angles.angle-theft-detector: your winning creatives from Performance (your own Meta ad accounts) matched to lookalike ads from other advertisers, with how crowded each angle is.
connect-extension: install and connect the Duchamp Chrome extension (opens the Chrome Web Store page in your Chrome, you click Add and Connect), then confirm the first save from the Meta Ad Library.makeandlaunch-kit: paused. They call tools that are not registered. Do not call those tools. Useads-research.visual-judgeagent (Claude Code): a fresh-context reviewer. Themakeskill that used to call it is paused.
Everything runs on your own Claude Code or Codex subscription.
Tools
The ad research tools are not on a daily fetch meter. 38 tools are in the table.
Example prompts
First prompts (replace the [ ] parts):
- Brand snapshot — "Using the Duchamp MCP, look up [advertiser name or homepage] (find_advertisers_by_domain for a homepage, or facets.pages of search_ads for a name). Show the 6 newest live ads with search_ads (page_id, status active, sort recent, all true) and link each duchamp_url. Then 3 bullets: formats, offers, the most common angle."
- UGC script rewrite — "search_ads for live selfie-style video ads in [niche], pick the longest-running, pull its transcript with get_ad and rewrite it as a 30-second script for [your product]. Keep the structure, change the words."
- Offer scan — "search_ads for live ads in [niche] and list every offer (discounts, bundles, free shipping, guarantees, trials), ranked by how often they appear, with one ad for each of the top 3."
- Format mix check — "Count live ads in [niche] by medium (video, image, carousel) with search_ads, show the longest-running example of each and the under-used format."
- Ad copy swipe — "Find 10 image ads in [niche] that ran 90+ days with search_ads, pull their copy with get_ad and rewrite the best 5 for [your product]."
More:
- "Find long-running ads in my niche with search_ads. List the advertiser, days running, and duchamp_url. Do not invent impression counts or revenue."
- "Open this ad with get_ad, then get_brand_anatomy for the advertiser. Read the keyframes and transcript, then tell me the hook and the offer. Link duchamp_url."
- "Watch my page with watch_brand and is_mine true, watch a competitor, then compare_brands. At most four pages."
How it works
- Check the connection with
get_connection_status. If the saved library is not allowed for this app, open the link it returns before saving. - Search with
search_ads. - Open one ad with
get_ad, or one advertiser withget_brand_anatomy. - Compare with
compare_brands(at most four page ids) or save with the library tools after the saved-library opt-in. - Hand off with
compose_transfer_briefwhen the user asks. It is a reference prompt. It does not promise the same ad.
Limits & account
- Sign in with a free Duchamp account on the first connection (OAuth in your browser). No API key.
- The ad-research tools are not counted toward a daily limit.
- Pro is listed at $19/month or $190/year (5 competitor pages of your own collected daily, unlimited MCP). Once payments open, Free keeps search unlimited and opens 10 ads a day over MCP. Payments are not open yet, so everything is free with no limits for now. See duchamp.app/en/pricing.
- Items appear on their release date. Ids not listed on the site are not available.
Privacy
Duchamp stores your account, usage records, saved items, boards, and watched advertiser pages. If you connect an ad account to Performance, Duchamp stores that account's ad metadata and daily performance numbers (and an encrypted read-only access token) for your account only — never in the public library or a team — and deletes them when you turn the account off, disconnect, or remove the app in Facebook settings. Performance numbers go to an AI app only after you allow that app on the Performance connect page. Product facts passed to compose_transfer_brief are not stored. Your rendered files stay on your machine. Duchamp does not call a model on your requests. Speech transcripts are made once per video when it is collected. Duchamp does not reproduce the ad. Signed-in ad research can include creative URLs on Duchamp's mirror. Reference labels do not include creative files.
What Duchamp does not do:
- No generation of human faces, human likenesses, face swaps, deepfakes, or synthetic voices. Duchamp does not create synthetic media of real people.
- No voice cloning, no audio or music generation, no adult content, no AI companion or relationship features.
- Templates: no display or re-hosting of other people's posts or accounts. Templates carry no original wording, images, or account names.
- Ads research: signed-in callers get creative URLs on Duchamp's mirror. Inline images in tool results are low-resolution previews for the agent. When showing the user, link
duchamp_url. Reference labels still do not include creative files. Duchamp does not reproduce the ad. - No scheduling or publishing. Performance reads only ad accounts you connect yourself (Meta, read only, ads_read) for performance reports. No server-side content generation. No engagement automation, and no access to any account the user does not own.
- No aggregation or resale of personal data, and no performance guarantees.
Rights in the original posts stay with their rights holders. To ask for a template to be taken down, write to [email protected] with the original URL.
Links
- duchamp.app · English overview · Connect · Pricing
- llms.txt · llms-full.txt
- Company: Notique, Seoul · Contact: [email protected]
License
MIT. See LICENSE.
Source: README.md at commit e572508
Tools
0Version history
5- v0.10.0LatestOct 24, 2026
- v0.9.1Oct 20, 2026
- v0.9.0Oct 19, 2026
- v0.8.0Oct 17, 2026
- v0.4.0Oct 17, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts