Atelier Photos MCP
An official MCP server for Atelier Photos that allows AI assistants to search, view, and license original photographs made by real photographers. It supports finding images by subject or feeling, displaying photographer details, and facilitating purchases via checkout or subscription credits for personal or commercial use.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://store.atelierphotos.app/api/mcpWhat you can do with it
- Search for photographs by subject, color, or feeling
- View photographer details and gallery information
- Purchase personal licenses for screen or print files
- Buy commercial licenses for business use
Source and maintenance
Protocol and capabilities
- Server
- atelier-store 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 10 advertised
- Resources
- 4 advertised
- Resource templates
- 0 advertised
- Prompts
- 3 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
10 advertised
search_images — Search the image catalogue
Find images for sale by description, mood, colour or subject — a plain description of the feeling or scene works as well as a keyword, so pass what the person actually said. Give target_width and target_height when the image is destined for a specific screen — results are then ranked by how close each frame is to that shape, and frames whose shape is badly wrong for it (a landscape frame for a phone) are left out. Images are sold as the photographer framed them, never cropped. Returns a preview of each image. Use get_image for one listing you already have the id of; use list_collections to browse rather than search.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 12,
"minimum": 1
},
"query": {
"type": "string",
"description": "Free text: subject, mood, colour, setting."
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page, unchanged, with the same query and filters. Cannot be combined with target_width/target_height."
},
"licence": {
"enum": [
"personal",
"commercial"
],
"type": "string",
"description": "\"commercial\" for only the images that can be licensed for business use. Every image has the personal license."
},
"orientation": {
"enum": [
"landscape",
"portrait",
"square"
],
"type": "string"
},
"target_width": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Destination width in pixels, e.g. 1290 for an iPhone. Give both or neither."
},
"collection_id": {
"type": "string",
"description": "Restrict to one collection from list_collections."
},
"target_height": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Destination height in pixels, e.g. 2796. Give both or neither."
},
"include_previews": {
"type": "boolean",
"description": "Set false for metadata only, which is much cheaper."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"results",
"next_cursor"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"listing_id",
"headline",
"title",
"description",
"keywords",
"orientation",
"aspect_ratio",
"pixels",
"collection",
"photographer",
"preview_url",
"price",
"licence"
],
"properties": {
"match": {
"enum": [
"keyword",
"semantic",
"semantic_weak"
],
"type": "string"
},
"owned": {
"type": "boolean"
},
"price": {
"type": "object",
"required": [
"credits",
"cents",
"currency",
"trial_credits_accepted",
"card_available",
"commercial"
],
"properties": {
"cents": {
"type": "number"
},
"credits": {
"type": "number"
},
"currency": {
"type": "string"
},
"commercial": {
"anyOf": [
{
"type": "object",
"required": [
"cents",
"currency"
],
"properties": {
"cents": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"card_available": {
"type": "boolean"
},
"trial_credits_accepted": {
"type": "boolean"
}
},
"additionalProperties": false
},
"title": {
"type": "string"
},
"pixels": {
"anyOf": [
{
"type": "object",
"required": [
"width",
"height"
],
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"licence": {
"type": "object",
"required": [
"code",
"version"
],
"properties": {
"code": {
"type": "string"
},
"version": {
"type": "number"
}
},
"additionalProperties": false
},
"headline": {
"type": [
"string",
"null"
]
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"shape_fit": {
"type": "object",
"required": [
"score",
"target"
],
"properties": {
"score": {
"type": "number"
},
"target": {
"type": "string"
}
},
"additionalProperties": false
},
"collection": {
"type": "object",
"required": [
"id",
"title"
],
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"listing_id": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"orientation": {
"type": "string"
},
"preview_url": {
"type": [
"string",
"null"
]
},
"aspect_ratio": {
"type": "string"
},
"photographer": {
"type": "string"
},
"owned_licences": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_image — Get one image
Everything known about a single listing: its description, keywords, price in credits and money, the license it sells under, and a preview. Use after search_images when the person wants a closer look at one option.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listing_id"
],
"properties": {
"listing_id": {
"type": "string"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listing_id",
"headline",
"title",
"description",
"keywords",
"orientation",
"aspect_ratio",
"pixels",
"collection",
"photographer",
"preview_url",
"price",
"licence",
"licence_summary"
],
"properties": {
"match": {
"enum": [
"keyword",
"semantic",
"semantic_weak"
],
"type": "string"
},
"owned": {
"type": "boolean"
},
"price": {
"type": "object",
"required": [
"credits",
"cents",
"currency",
"trial_credits_accepted",
"card_available",
"commercial"
],
"properties": {
"cents": {
"type": "number"
},
"credits": {
"type": "number"
},
"currency": {
"type": "string"
},
"commercial": {
"anyOf": [
{
"type": "object",
"required": [
"cents",
"currency"
],
"properties": {
"cents": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"card_available": {
"type": "boolean"
},
"trial_credits_accepted": {
"type": "boolean"
}
},
"additionalProperties": false
},
"title": {
"type": "string"
},
"pixels": {
"anyOf": [
{
"type": "object",
"required": [
"width",
"height"
],
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"licence": {
"type": "object",
"required": [
"code",
"version"
],
"properties": {
"code": {
"type": "string"
},
"version": {
"type": "number"
}
},
"additionalProperties": false
},
"headline": {
"type": [
"string",
"null"
]
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"shape_fit": {
"type": "object",
"required": [
"score",
"target"
],
"properties": {
"score": {
"type": "number"
},
"target": {
"type": "string"
}
},
"additionalProperties": false
},
"collection": {
"type": "object",
"required": [
"id",
"title"
],
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"listing_id": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"orientation": {
"type": "string"
},
"preview_url": {
"type": [
"string",
"null"
]
},
"aspect_ratio": {
"type": "string"
},
"photographer": {
"type": "string"
},
"owned_licences": {
"type": "array",
"items": {
"type": "string"
}
},
"licence_summary": {
"anyOf": [
{
"type": "object",
"required": [
"code",
"version",
"name",
"summary",
"permitted",
"prohibited",
"effective_from"
],
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"summary": {
"type": "string"
},
"version": {
"type": "number"
},
"permitted": {
"type": "array",
"items": {
"type": "string"
}
},
"prohibited": {
"type": "array",
"items": {
"type": "string"
}
},
"effective_from": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}list_collections — List collections
The collections available in the store, with how many images are in each. Use for browsing when there is no particular search in mind; prefer search_images when the person has described what they want.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"collections"
],
"properties": {
"collections": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"description",
"listing_count"
],
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"listing_count": {
"type": "number"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_licence — Read the license
The full terms an image is sold under: what the buyer may and may not do with it. Read this before recommending a purchase, and whenever the person asks what they are allowed to do with an image. "personal" (the default) is what credits and a card one-off buy; "commercial" is the business licence, sold by card where price.commercial is offered.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"code": {
"type": "string",
"description": "One of: personal, commercial. Omit for personal."
},
"version": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Omit for the terms currently on offer. Pass a version to read what was sold earlier."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"code",
"version",
"name",
"summary",
"permitted",
"prohibited",
"effective_from",
"terms"
],
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"terms": {
"type": "string"
},
"summary": {
"type": "string"
},
"version": {
"type": "number"
},
"permitted": {
"type": "array",
"items": {
"type": "string"
}
},
"prohibited": {
"type": "array",
"items": {
"type": "string"
}
},
"effective_from": {
"type": "number"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}unlock_collection — Unlock a private collection
Open a PRIVATE collection to the signed-in buyer, using the address and access code its photographer gave them — for example a wedding or client gallery whose pictures are also for sale. Afterwards search_images, get_image and list_collections include it for this buyer, and its images can be bought like any other. Use it only with a code the person gave you; never guess one. Requires sign-in.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"gallery",
"access_code"
],
"properties": {
"gallery": {
"type": "string",
"description": "The gallery's address as the person has it, e.g. https://example.com/jane/smith-wedding, or \"jane/smith-wedding\"."
},
"access_code": {
"type": "string",
"minLength": 1,
"description": "The access code the photographer gave the person."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"collection_id",
"title",
"listing_count"
],
"properties": {
"title": {
"type": "string"
},
"collection_id": {
"type": "string"
},
"listing_count": {
"type": "number"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_account — Check the signed-in account
The signed-in buyer: their credit balance, subscription status, how many images they already own, and whether a free trial is still available. Call this before proposing a purchase, so you know what they can already afford. Requires sign-in.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"credits",
"trial_credits",
"paid_credits",
"subscription",
"entitlement_count",
"trial_available",
"licence",
"account_url"
],
"properties": {
"email": {
"type": "string"
},
"credits": {
"type": "number"
},
"licence": {
"type": "object",
"required": [
"code",
"version"
],
"properties": {
"code": {
"type": "string"
},
"version": {
"type": "number"
}
},
"additionalProperties": false
},
"account_url": {
"type": "string"
},
"paid_credits": {
"type": "number"
},
"subscription": {
"anyOf": [
{
"type": "object",
"required": [
"plan_code",
"status",
"credits_per_period",
"current_period_end",
"cancel_at_period_end"
],
"properties": {
"status": {
"type": "string"
},
"plan_code": {
"type": "string"
},
"credits_per_period": {
"type": "number"
},
"current_period_end": {
"type": [
"number",
"null"
]
},
"cancel_at_period_end": {
"type": "boolean"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"trial_credits": {
"type": "number"
},
"trial_available": {
"type": "boolean"
},
"entitlement_count": {
"type": "number"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}start_trial — Start the free trial
Give the signed-in buyer 3 credits free, once per email address, ever, and never to an account that has paid here. Offer it when get_account says trial_available, someone wants an image, has no credits and has not tried the store before — AND the trial would buy that image: its price.credits is no more than 3 and price.trial_credits_accepted is true. Otherwise the trial is spent on nothing they wanted. Trial credits buy the screen file only — tell the person, so a print is not expected; the print can be bought afterwards at the full price. Requires sign-in.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"granted",
"credits"
],
"properties": {
"credits": {
"type": "number"
},
"granted": {
"type": "number"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_checkout — Start a purchase the person completes themselves
Return a payment link for the person to open in a browser: either a subscription plan, or a single image bought outright (only where price.card_available is true) — or that image's commercial license, with licence=commercial, where price.commercial is not null. The commercial license is sold only this way; Stripe's page asks the person to name the licensee. THE AGENT NEVER HANDLES CARD DETAILS and must not ask for any — hand the url over and let the person pay on the payment page. Nothing is granted until they finish. After a one-off, call fulfil_image with the same listing_id: once the payment has landed it delivers the image at no credit cost, and until then it answers payment_pending. After a subscription, get_account shows it. Every result lists the plans with their prices. Use fulfil_image instead when the buyer already has credits or already owns the image, and start_trial when they have none and have not tried the store. Refused when the buyer already owns the image or already has a subscription, so that nobody pays twice — except an image the free trial bought, which is the screen file only: a one-off for it buys the print file at the full price. Each new link cancels the previous one — any earlier subscription link, or an earlier link for the same image — so give the person only the latest.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"subscription",
"one_off"
],
"type": "string"
},
"licence": {
"enum": [
"personal",
"commercial"
],
"type": "string",
"description": "For kind=one_off. \"commercial\" buys the business licence, by card only; omit for personal."
},
"plan_code": {
"type": "string",
"description": "For kind=subscription. Call with kind=subscription and no plan_code to list the plans and their prices."
},
"listing_id": {
"type": "string",
"description": "For kind=one_off: the image to buy outright."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"checkout_url",
"kind",
"order_id",
"listing_id",
"expires_at",
"plans"
],
"properties": {
"kind": {
"type": "string"
},
"plans": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"name",
"description",
"credits_per_period",
"price"
],
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"price": {
"anyOf": [
{
"type": "object",
"required": [
"cents",
"currency",
"interval",
"interval_count"
],
"properties": {
"cents": {
"type": "number"
},
"currency": {
"type": "string"
},
"interval": {
"type": "string"
},
"interval_count": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"description": {
"type": "string"
},
"credits_per_period": {
"type": "number"
}
},
"additionalProperties": false
}
},
"order_id": {
"type": [
"string",
"null"
]
},
"expires_at": {
"type": [
"number",
"null"
]
},
"listing_id": {
"type": [
"string",
"null"
]
},
"checkout_url": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}fulfil_image — Get an image the buyer is entitled to
Deliver an image to the signed-in buyer, spending the image's price in credits (price.credits in search_images and get_image — often 1, sometimes more) if they do not already own it. Credits buy the personal license only; the commercial license is bought with create_checkout, and this then delivers it. If they DO already own it this is free and always will be — use it freely for re-downloads, and for a fresh download link. The purchased image comes as two links, both as the photographer framed it, uncropped: download_url, 2560px WebP on the long side, which a phone or desktop fits to its own screen as a wallpaper; and print_url, the original file at full resolution (often 10–35 MB), for printing (null when unavailable). Give the person both; they expire at download_expires_at, a day out, and their account page (account_url in get_account) lists every image they own with fresh links. The picture returned inline is a 1200px copy to show them what they got. Pass full_image: true to have the full file inline as well — often 1–3 MB — only if you can accept a result that large and save it yourself. Confirm the price with the person before spending credits. An image bought wholly with free-trial credits is the screen file only: print_url is null, print_included false, and print_offer says what the print costs — the full price again, in paid credits. With the person's agreement, call again with buy_print: true to spend them (or create_checkout kind=one_off to pay by card). After a card checkout for this image it spends nothing: it answers payment_pending until the payment lands, then delivers. Requires sign-in.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listing_id"
],
"properties": {
"buy_print": {
"type": "boolean",
"description": "For an image the free trial bought (print_included false): buy its print file, spending print_offer.credits of PAID credit. Only with the person's agreement."
},
"full_image": {
"type": "boolean",
"description": "Also return the full 2560px file inline. Large; see the description."
},
"listing_id": {
"type": "string"
},
"abandon_checkout": {
"type": "boolean",
"description": "Only after payment_pending, and only when the person has said they will not pay by card: cancels the open payment link and spends credits instead."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listing_id",
"already_owned",
"credits_spent",
"licence",
"credits_remaining",
"source_pixels",
"download_url",
"print_url",
"print_included",
"print_offer",
"download_expires_at",
"file_name",
"inline",
"paid_by",
"photographer"
],
"properties": {
"inline": {
"enum": [
"preview",
"full",
"none"
],
"type": "string"
},
"licence": {
"anyOf": [
{
"type": "object",
"required": [
"code",
"version",
"expires_at"
],
"properties": {
"code": {
"type": "string"
},
"version": {
"type": "number"
},
"expires_at": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"paid_by": {
"anyOf": [
{
"enum": [
"credit",
"trial",
"purchase",
"comp"
],
"type": "string"
},
{
"type": "null"
}
]
},
"file_name": {
"type": "string"
},
"print_url": {
"type": [
"string",
"null"
]
},
"listing_id": {
"type": "string"
},
"print_offer": {
"anyOf": [
{
"type": "object",
"required": [
"credits",
"paid_credits",
"card_price"
],
"properties": {
"credits": {
"type": "number"
},
"card_price": {
"anyOf": [
{
"type": "object",
"required": [
"cents",
"currency"
],
"properties": {
"cents": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"paid_credits": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"download_url": {
"type": "string"
},
"photographer": {
"type": "string"
},
"already_owned": {
"type": "boolean"
},
"credits_spent": {
"type": "number"
},
"source_pixels": {
"anyOf": [
{
"type": "object",
"required": [
"width",
"height"
],
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"entitlement_id": {
"type": [
"string",
"null"
]
},
"print_included": {
"type": "boolean"
},
"credits_remaining": {
"type": "number"
},
"download_expires_at": {
"type": "number"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}list_entitlements — List images the buyer owns
Everything the signed-in buyer has bought, newest first. Re-downloading any of them with fulfil_image costs nothing. Pass include_previews: true whenever the person wants to see their library: small pictures (at most 12 per page) without a fulfil_image per image. Requires sign-in.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"cursor": {
"type": "string"
},
"include_previews": {
"type": "boolean",
"description": "A small picture of each image. Caps the page at 12."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"entitlements",
"next_cursor",
"revoked"
],
"properties": {
"revoked": {
"type": "array",
"items": {
"type": "object",
"required": [
"listing_id",
"title",
"licence",
"revoked_at"
],
"properties": {
"title": {
"type": "string"
},
"licence": {
"type": "string"
},
"listing_id": {
"type": "string"
},
"revoked_at": {
"type": "number"
}
},
"additionalProperties": false
}
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"entitlements": {
"type": "array",
"items": {
"type": "object",
"required": [
"listing_id",
"headline",
"title",
"description",
"orientation",
"photographer",
"preview_url",
"licence",
"licensee",
"print_included",
"granted_at"
],
"properties": {
"title": {
"type": "string"
},
"licence": {
"type": "object",
"required": [
"code",
"version"
],
"properties": {
"code": {
"type": "string"
},
"version": {
"type": "number"
}
},
"additionalProperties": false
},
"headline": {
"type": [
"string",
"null"
]
},
"licensee": {
"type": [
"string",
"null"
]
},
"granted_at": {
"type": "number"
},
"listing_id": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"orientation": {
"type": [
"string",
"null"
]
},
"preview_url": {
"type": [
"string",
"null"
]
},
"photographer": {
"type": "string"
},
"print_included": {
"type": "boolean"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}Prompts
3 advertised
phone_wallpaper — Find a phone wallpaper
A portrait photograph that fits a phone screen, in the mood you describe.
- look
- What it should feel like, e.g. "calm, moody and minimal, a deep teal seascape at night".
- screen
- Which phone, e.g. "iPhone 16 Pro" or "Pixel 9".
desktop_background — Find a desktop background
A wide photograph that fits a computer screen, in the mood you describe.
- look
- What it should feel like, e.g. "warm golden-hour mountains, not too busy".
- screen
- Which screen, e.g. "MacBook Air" or "2560×1440 monitor".
print_for_home — Find a photo to print for your home
A landscape photograph to print large for a room, checked for print size and licence.
- room
- The room and the feeling, e.g. "my bright, airy living room: light, calm and open, soft blues and pale sand, coastal if you have it".
Resources
4 advertised
Personal use license v1
Use the image on your own devices and personal projects, forever. No resale, no redistribution, no commercial use, no AI training.
atelier://licence/personal/1Personal use license v2
Use the image on your own devices and in personal projects, with no expiry. Credit the photographer where practical. No resale, no redistribution, no commercial use, no AI training.
atelier://licence/personal/2Commercial use license v1
Use the image to promote and run a business — websites, social media, advertising, marketing and client work — with no expiry. Licensed to one named person or business. No merchandise or templates for resale, no redistribution, no AI training.
atelier://licence/commercial/1Photographs
The search results and images, drawn for the person.
ui://atelier/pictures-v2.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 723 ms
- 95th percentile latency
- 723 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 723 ms · metadata changed · 10 tool(s), 4 resource(s), 0 resource template(s), 3 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http atelier-photos-mcp https://store.atelierphotos.app/api/mcpCodex
codex mcp add atelier-photos-mcp --url https://store.atelierphotos.app/api/mcpCursor
{
"mcpServers": {
"atelier-photos-mcp": {
"url": "https://store.atelierphotos.app/api/mcp"
}
}
}Cline
{
"mcpServers": {
"atelier-photos-mcp": {
"type": "streamableHttp",
"url": "https://store.atelierphotos.app/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"atelier-photos-mcp": {
"type": "http",
"url": "https://store.atelierphotos.app/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http atelier-photos-mcp https://store.atelierphotos.app/api/mcpClaude Desktop
{
"mcpServers": {
"atelier-photos-mcp": {
"url": "https://store.atelierphotos.app/api/mcp"
}
}
}Windsurf
{
"mcpServers": {
"atelier-photos-mcp": {
"serverUrl": "https://store.atelierphotos.app/api/mcp"
}
}
}Let your agent find its tools
Find servers like Atelier Photos MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run Atelier Photos MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.