Your agent, your desktop
Everything a person can do here, an agent can do for them: browse the gallery for inspiration, create and refine wallpapers from your own notes, fit them to every monitor, publish links, plan where your icons go, and run those jobs on a schedule. One endpoint, one token, no install.
Connect in a minute
- Create a token under Account → Agent access. It is shown once; it is a password for your account here and nowhere else.
- Add the MCP server to your agent. The endpoint is
https://freewallpapermaker.com/mcp— Streamable HTTP, bearer auth, protocol 2025-06-18 (and the two before it).One command in a terminal.
claude mcp add --transport http wallpaper-maker https://freewallpapermaker.com/mcp --header "Authorization: Bearer YOUR_TOKEN"
- Check it before you open your agent. The token goes only to this site — the same two calls an agent makes first.
- Say hello. “What can you do with my wallpapers?” The
server introduces its tools; your agent takes it from there. Generations
and briefs cost credits, so a good agent tells you the balance first;
edit_objectsanddescribe_wallpaperare free.
What to ask
A new wallpaper from my notes
“Make me a desktop wallpaper for my thesis: the chapter deadlines on the left, three bays for drafts, sources and figures, calm paper colours. Show me three gallery examples first.”
list_examples → create_wallpaper (your notes verbatim) → save_design → a Workshop link to download the PNG.
Refresh what is on it
“My on-call rota changed. Update only the rota table on my “Ops desk” wallpaper and keep everything else.”
get_design → edit_wallpaper with a narrow scope and allowTextEdits → save as a new revision.
A set for all my monitors
“Fit my “Studio week” design to my two monitors (3440×1440 and a 4K at 2×) and put the file bays on the main one.”
plan_wallpaper_set → one saved design per screen → edit_wallpaper per screen.
Sort my desktop
“Look at what is on my desktop and sort the icons into the bays of my current wallpaper. Show me the plan first.”
plan_icons → your approval → the desktop-tidy skill moves the icons (with undo).
Share it
“Publish my “Garden week” design as a CC0 link with my chosen display name.”
publish_wallpaper (after your rights confirmation) → list_releases for the status → the /w/ link.
Change it without spending a credit
“On my “Ops desk” wallpaper, rename the second bay to “Incidents”, make it four columns wide, and move the shortcuts table to the top right.”
describe_wallpaper → edit_objects (set_bay, resize, move) → update_design. Deterministic, free, and exactly what the mouse would do.
Start from the gallery
“Find me a dark wallpaper for a developer with keyboard shortcuts on it, and make a version with my Vim keys instead.”
search_gallery (tag: shortcuts, sort: credits) → create_wallpaper with exampleId "share:<id>" and your keys as verbatim notes.
Steal a look
“Take the look of the “Neon archipelago” example and apply it to my shortcuts wallpaper without changing the text.”
edit_wallpaper with referenceExampleId and scope background/design.
The PNG itself is painted in your browser, never on a server. When a design is ready, the agent hands you a Workshop link; one click downloads the wallpaper with its screen map inside. An agent with computer use can open that link, download and set the wallpaper on its own — with your permission.
Routines
Schedule these in your agent platform (Claude’s scheduled tasks, a cron job, a computer-use routine); the site never runs anything by itself. Each run should show its proposal and wait for a yes before spending credits, publishing, installing a wallpaper or moving icons — unless you have told the routine it may apply that step on its own.
- Friday tidy. List the desktop,
plan_iconsagainst the current wallpaper, show the plan, apply with the desktop-tidy skill, keep an undo record. - Weekly refresh. Re-import a changed page or ask what
changed,
edit_wallpaperonly the stale text, save a new revision, download and set the new PNG. - Monthly variation.
design_briefthe current favourite, create a fresh take from one of its variation ideas with the same notes, keep both in the library. - Project kickoff. When a new repository or folder
appears, create a wallpaper from its README (
import_source) with bays for its stages, fitted to every monitor.
A layout that ages well: bays for Active projects, Notes, Waiting and Archive, with a next-step.txt beside each project. Ask your agent: “Each Friday, propose an icon tidy-up using this map. Suggest categories for new .txt notes; ask before moving files into folders.” Set the schedule in your agent, not here, and refresh the wallpaper when its reference text changes.
The weekly-refresh, tidy-my-icons, multi-monitor-set and new-wallpaper-from-my-notes prompts are built into the server, so a client that lists MCP prompts can start
any of these with one pick.
The tools
| Tool | Does | Costs |
|---|---|---|
account | who is connected, plan, credits | free |
list_examples,get_example | browse the built-in examples; fetch a full example document | free |
search_gallery,list_commons,get_shared | search the public gallery by words, tag and order; browse it; open any active shared wallpaper by id | free |
gallery_tags,screen_presets | the tag vocabulary with counts; named screens with sizes and scale factors | free |
describe_wallpaper,edit_objects | what is on a wallpaper, object by object; deterministic edits — words, move, resize, reorder, add, remove, restyle, free placement — with no AI | free |
import_source | a public URL → reference panels and text | free |
create_wallpaper | a new wallpaper from a prompt, notes, a gallery wallpaper or example as the reference, and your screen size | 1 credit |
edit_wallpaper | change a design with a scoped prompt, optionally borrowing a wallpaper’s look | 1 credit |
generation_status,list_generations | finish a generation that outlived the connection; recent generations | free |
adapt_wallpaper,plan_wallpaper_set | refit to another screen; a matched set for several monitors | free |
save_design,update_design,get_design,list_designs,archive_design | the library, with revisions | free · Creator |
design_brief | a reusable prompt, title, tags and variation ideas for a design | 1 credit |
publish_wallpaper,list_releases,withdraw_release | share to the gallery (any account, three at a time for free) or by private link (Creator); status; withdrawal | free |
sponsor_desk | put credits behind a gallery wallpaper to move it up | credits, spent |
plan_icons | which icon goes in which bay, with slot coordinates | free |
links | where a person opens, downloads or checks something | free |
A creation can take a couple of minutes, longer than one HTTP response is
allowed to. Tools that generate take a requestId you supply;
if the call returns pending or times out, use generation_status with its follow-up arguments until it finishes. Stop polling on completion.
What you can build on
- Tool names and arguments are stable. New tools and optional arguments are added without notice; a rename or removal is announced in the changelog at least 60 days ahead, with the old name kept working meanwhile.
- The document is schema version 1 and every tool that returns a wallpaper returns that shape. Check the current schema before writing a file; do not assume support for future versions.
- Protocol: MCP 2025-06-18, 2025-03-26 and 2024-11-05
over Streamable HTTP with plain JSON responses (no server-sent events,
no sessions), so it works through any proxy and from any function-hosted
client. Send
MCP-Protocol-Versionafterinitialize; an unsupported value is refused with the list we speak. - Every tool lists annotations — read-only, destructive, idempotent — and validates its arguments by name before anything runs, so a wrong call costs nothing and says what to fix.
- Long jobs are resumable. Creation and edit calls take
your
requestId; pending responses include follow-up arguments forgeneration_status. Poll those without starting another paid call. - OAuth is coming for clients that require it (Claude Desktop's custom connectors, ChatGPT). Bearer tokens will keep working alongside it.
Skills for the parts that touch your computer
The server proposes; a local skill acts. Agent skills has two: wallpaper-maker (how to use these tools well, routines, the rules) and desktop-tidy (reads the screen map, converts coordinates, moves icons with undo on macOS).
Without a connection: the download bundle
An agent that is not connected can still set things up from a download. Choose Download → Wallpaper + agent setup in the Workshop, give the unzipped folder to your computer-use agent, and say:
Read START-HERE.md in this wallpaper bundle. Check my screen and your available tools. Preview the wallpaper and icon moves, save a way to undo them, and ask before applying. Keep file names and paths unchanged. Don’t run script shortcuts. Explain anything you can’t do.
macOS: the bundled tool supports Finder icon placement; turn off Stacks and automatic sorting. Windows/Linux: use a compatible local tool or arrange icons by hand; bundled placement support is not verified there.
Script shortcuts are icons to arrange, nothing more. Setting up a wallpaper never runs them.
HTTP API
The MCP tools wrap this API; use it directly from scripts. Same token:
Authorization: Bearer <token>
Public schema, collection and unlisted-wallpaper reads need no token. Cookie-authenticated mutations require same-origin requests. AI calls require a signed-in account and available credits; saving to the cloud library needs Creator membership. Free accounts can share three unlisted links lasting 30 days. Creator membership adds lasting links and gallery eligibility after backing (10 credits by default). Trial credits may back eligible wallpapers, including the owner’s, but free-account links remain ineligible for the gallery. Backing spends credits and does not transfer them to creators. The server generates descriptions and tags. The plain-text reference at /llms.txt is the maintained contract.
Formats: schemas and a complete example
- Wallpaper example JSON Schema → save as
schema/wallpaper-example.schema.json. - Collection JSON Schema → save as
schema/collection.schema.json. - Complete wallpaper JSON → save as
wallpapers/<id>.json, using its ID. - Matching one-file catalog → save as
catalog.json. Its checksum matches the exact example response, including its final newline. - Renderer, proposal and brief schemas, supported capabilities and complete built-in web designs.
Use /api/collection-schema for all four collection resources in one response. If you reserialize the example, recompute its byte count and hash. These files come from the app's current validators; runtime checks remain authoritative. The example's license is pending, not permission to publish it.
Wallpaper file schema
Text, layout and graphics inside design
Reusable composition
Repository structure and catalog.json
Load a repository or individual wallpaper
Agent create, edit and validate workflow
Create and update through the API
POST /api/proposals
{doc, context, prompt, scope, mode?, selection?, reference?,
exampleId?, allowTextEdits?, requestId}
→ 202 {pending:true,requestId}, or 200 {doc,baseHash,summary,...}
GET /api/proposals?requestId=...
→ 202 while pending; 200 with the completed design
POST /api/design-brief {doc, includeVisibleText?:false, requestId}
→ {brief, baseHash, requestId, promptVersion, provider, credits}
(there is no render endpoint: wallpapers are rendered in the
browser only — open the design in the Workshop to download a PNG) Proposals cost one credit. Use mode:"edit" (default) with
scope selection, background, layout or design. For a new wallpaper use mode:"create", scope:"design" with an optional built-in exampleId or share:ID gallery
reference; this mode does not accept a separate reference. Supply a valid starting
doc for screen setup in either mode. New-wallpaper notes are limited to 24,000
characters in total.
New compact wallpaper JSON plus private context is limited to 160,000
UTF-8 bytes; AI requests also count the prompt and reference toward that
limit. Do not trim user content silently. The prompt is 1–4,000
characters. Context is {prompt:"",sources:[]} or a validated
private source context. Use a unique requestId of 10–100 letters, digits, underscores
or hyphens; reuse it only for an identical retry. Review the returned design,
warnings and summary before applying; reject a stale baseHash. Do not treat
a timeout as permission to start a second paid request.
A design brief costs one credit and suggests a recreation prompt, title, description, tags and variations. It cannot recover the original prompt. Visible text is excluded unless explicitly enabled. It neither edits nor publishes the wallpaper. Never confuse the returned brief with the complete portable design.
Use POST /api/import {url} for free, bounded
text-to-panel import. Use {url,kind:"design"} to import a layout.
The configured AI provider is returned by the API; do not assume a particular
provider or model.
History and saved designs
GET /api/me
GET /api/generations
GET /api/generations/{id}
GET /api/designs
POST /api/designs {doc,context}
GET /api/designs/{id}?revision=...
PUT /api/designs/{id} {doc,context,expectedRevision}
DELETE /api/designs/{id} (archive)
PATCH /api/designs/{id} (restore) Reads are owner-scoped. Existing owner access survives membership expiry; creating or updating saved designs requires Creator membership. Preserve expectedRevision and handle a 409 conflict by reading the new head and asking how to reconcile changes.
Install a wallpaper and arrange icons
- Download Wallpaper + agent setup, unzip it and read
START-HERE.md. The bundle includes the PNG, exact map, visible design and a portablefwm-desktop-planv1 plan. - Use the desktop-tidy skill to inspect local capabilities and the actual screen setup. The website does not control the computer.
- Preview installation and icon moves, capture an undo record, then apply only the changes the user approves.
The bundled macOS adapter targets Finder icon placement; Stacks and automatic sorting must be off. Windows and Linux require compatible local integrations; bundled placement on those platforms is not verified. Do not infer capabilities from the OS name alone.
Read fwm-screen-map from the final PNG's iTXt metadata. Match documentHash,
schemaVersion, displayProfile and coordinateSpace. Zones provide full icon footprints,
capacities and slot centers; keepClear marks text and reservations. Capacity
can be zero. Free slots marked geometry-only have no measured background readability
score.
Map coordinates are wallpaper pixels. Use the adapter's explicit
conversion to the matching logical screen coordinates; do not guess a
scale or stretch/crop the PNG. Re-export for a different screen shape. Use
the adapted PNG's own map, not the original published map. GET /api/share/{id}/map describes the original only.
Script shortcuts are icons to position, not commands to execute. Moving icons does not authorize renaming files, moving them into folders or installing software. An external agent may propose periodic tidying and refreshed reference text on a user-approved schedule. See workflow ideas and script shortcuts.