ads-crosspost
Posts second-hand items to Facebook Marketplace by replaying recorded browser flows in a headed Chromium, filling in the listing form, and stopping at a publish gate for user approval before anything goes live. Subject to Facebook's cap of 20 Marketplace listings per month for private sellers.
Posts second-hand items to Vinted by replaying recorded browser flows in a headed Chromium, filling in the listing form and stopping at a publish gate with a screenshot for user approval before publishing. Vinted is shipping-only, so items without shipping skip it.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
ads-crosspost
Post one second-hand item to Blocket, Tradera, Vinted and Facebook Marketplace from a single chat with Claude.
You describe the item and drop in photos. Claude interviews you for anything missing and writes the ad in Swedish and English. It then picks each site's category and fields from snapshots of the real forms. A small macOS tray app fills in each site's form in its own browser, shows you a screenshot, and publishes only after you say yes.
[!warning] Experimental This is a personal tool I built to scratch my own itch, published as-is. There is no signed or notarized build yet, so you build the app from source. Expect rough edges, and expect a flow to break whenever a site changes its form.
How it works
The LLM never clicks around the sites. It writes the text and chooses categories. Posting replays browser flows that I recorded by hand, one per site, with patchright (a Playwright fork) driving a headed Chromium.
Tray app (Electron). Runs a local MCP server on
127.0.0.1behind a bearer token, one browser profile per site, and a job queue.Hosts. Claude Desktop (chat and Cowork) and ChatGPT desktop connect through a small stdio shim that the tray app writes into their config. The shim starts the app if it isn't running.
Publish gate. Every post stops at
ready_to_publishwith a screenshot of the filled form. Nothing goes live until you approve it in the chat.Your data stays local. Items, photos, logins and settings live in
~/Library/Application Support/ads-crosspost/. The server listens on localhost only.
The longer story is in docs/ARCHITECTURE.md and docs/DESKTOP-APP.md.
Related MCP server: marketplace-lister-mcp
Before you use it
All four sites restrict automated use in their terms to some degree. This tool posts at human pace, one item at a time, in a real headed browser that you logged into yourself. That lowers the risk. It doesn't remove it: an account can still get flagged or limited. Use it on your own accounts, for your own things, and decide for yourself whether that risk is fine.
Some other limits:
Facebook caps private sellers at 20 Marketplace listings a month.
Blocket charges for ads in the Fordon category (cars, motorcycles, boats and so on), so this tool doesn't support vehicles. Fordonstillbehör (parts and accessories) is free and works.
Tradera supports fixed-price listings only. The auction flow isn't recorded.
Vinted is shipping-only, so items without shipping skip it.
Sites are in Swedish, and prices are in SEK.
Get started
docs/QUICKSTART.md takes you from a fresh clone to your first posted ad in about 15 minutes.
You need macOS (only tested on Apple silicon), Node 22.18 or newer, and pnpm.
Command line
The CLI predates the app and still works on items stored in the repo checkout:
pnpm run login blocket # log in by hand once per site
pnpm post <slug> --platform all --dry-run # fill the forms, screenshot, don't publish
pnpm post <slug> --platform all # publish
pnpm sold <slug> [--on vinted] # item sold: end every live listingItems live in items/<slug>/item.yaml (gitignored). The post-ad skill in .claude/skills/ writes them from Claude Code. pnpm import-data <checkout> moves a CLI checkout's items, logins and config into the app.
Development
pnpm install
pnpm test # unit tests
pnpm typecheck
pnpm app:dev # build and run the tray app
pnpm app:smoke # start the MCP server and shim under plain node, list tools
pnpm app:dist # unsigned arm64 .dmg in dist/Signed releases are covered in docs/RELEASING.md. The per-site form fields in src/platforms/*.fields.json are generated by pnpm discover <platform>. docs/FIELDS.md explains the format.
Roadmap
A signed and notarized macOS build, so you can install without building from source.
License
MIT.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
AI resale manager. Photograph an item, AI writes the listing, publish a sale page, manage pickups.
Turn photos of your items into scheduled eBay listings on your own eBay seller account.
Drafts eBay listings from your item photos: title, description, price and condition.
Find garage sales and publish seller-verified listings directly from AI assistants.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to search secondhand marketplaces (Facebook Marketplace, eBay, Depop, Poshmark) for used items with filters like price, condition, size, and color.5217 npm101MIT
- AlicenseAqualityCmaintenanceEnables posting second-hand items to Facebook Marketplace from local photo folders via Claude, featuring login, listing creation, pricing reference, and publishing tools.76MIT
- AlicenseAqualityBmaintenanceEnables turning photos and observed facts into a ready-to-publish Leboncoin ad, with comparable search, asking-price statistics, category lookup, local drafts, and browser form automation that stops one click short of publishing until approved.23MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching multiple second-hand marketplaces simultaneously from a local command line or AI assistant, providing unified results with pricing insights while respecting each source's terms and robots.txt.AGPL 3.0