mcpField
F
FrameAnyPhoto

FrameAnyPhoto

Remote
frameanyphoto.comBusiness & Marketing0Updated 3d ago

About FrameAnyPhoto

FrameAnyPhoto is a print shop for framed public-domain artworks and NASA photography, with a remote catalog and ordering service for AI assistants and other MCP clients. Clients can compare print options, get quotes, and receive a Stripe Checkout link without handling card details.

Key features

  1. 01Search artworks by title, artist, or keyword
  2. 02Compare print sizes, frames, and prices
  3. 03Quote order totals before tax
  4. 04Create Stripe Checkout links
  5. 05Check payment and shipping status

Use cases

  1. 01Find a framed print matching a subject
  2. 02Compare sizes and frames for an artwork
  3. 03Estimate the total before placing an order
  4. 04Follow up on checkout and shipping

MCP support

The remote MCP server exposes catalog search, print options, policy, quote, checkout, and order-status tools to MCP clients. Checkout returns a Stripe link; clients do not handle card data.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://frameanyphoto.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

8
ParameterTypeRequiredDescription
limitintegerNo
querystringYesSearch text, for example Bierstadt or Earthrise

Details

From the project README

FrameAnyPhoto MCP Server

Let AI assistants find, price and order framed art prints.

FrameAnyPhoto sells museum-quality framed prints of public-domain masterworks and NASA photography. This remote Model Context Protocol server lets Claude, ChatGPT, Cursor and any other MCP client search the catalog, compare sizes and frames, quote an order, and hand the buyer a secure Stripe Checkout link.

Agents never see or handle card data. create_checkout returns a link and the buyer pays on Stripe.

Quick start

Claude Code
claude mcp add --transport http frameanyphoto https://frameanyphoto.com/mcp
Claude (desktop and web)

Go to Settings → Connectors → Add custom connector, name it FrameAnyPhoto and paste https://frameanyphoto.com/mcp.

For older Claude Desktop builds without remote connectors, add this to claude_desktop_config.json:

{
  "mcpServers": {
    "frameanyphoto": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://frameanyphoto.com/mcp"]
    }
  }
}
Cursor

Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "frameanyphoto": {
      "url": "https://frameanyphoto.com/mcp"
    }
  }
}
VS Code (GitHub Copilot)

Add to .vscode/mcp.json:

{
  "servers": {
    "frameanyphoto": {
      "type": "http",
      "url": "https://frameanyphoto.com/mcp"
    }
  }
}
ChatGPT

With developer mode on, open Settings → Apps & Connectors → Create, name it FrameAnyPhoto, set the URL to https://frameanyphoto.com/mcp and choose No authentication.

Any other client

Point it at https://frameanyphoto.com/mcp using the Streamable HTTP transport.

Tools

ToolWhat it doesRead-only
search_worksSearch by title, artist, series, NASA ID or keyword. Results are sorted by scan resolution (PPI).yes
get_workOne work by id, title, accession number or NASA ID.yes
list_seriesCollection rows (Landscapes, NASA Spaceflight, Sailing, …) with work counts.yes
get_policiesShipping, returns, payment, tax and contact policies as JSON.yes
get_print_optionsSizes, frames and prices for one work. Sizes are capped by the scan's resolution (100 PPI minimum).yes
quote_orderUnit price, subtotal, shipping and total before tax, plus a policy summary.yes
create_checkoutCreates a Stripe Checkout link and returns checkout_url and order_ref. Never charges a card. Rate-limited.no
get_order_statusCheckout, payment and shipping status for an order_ref. Returns no personal data.yes

Full input schemas are in tools.json (the server's own tools/list response).

Input schemas at a glance
search_works      { query: string, limit?: 1-25 = 12 }
get_work          { query: string }
list_series       { }
get_policies      { }
get_print_options { work: string }
quote_order       { work: string, size?: string, frame?: string, quantity?: 1-6 = 1,
                    ship_to?: { country?: "US", state?: string, zip?: string } }
create_checkout   { work: string, size?: string, frame?: string, quantity?: 1-6 = 1, email?: string }
get_order_status  { order_ref: string }

work accepts the ascii_id slug from search_works (preferred), the work id, a /w/ URL, the exact title, an accession number or a NASA ID. size accepts a size_id such as 24x24 or Small, Medium, Large. frame takes a frame_id from get_print_options.

Typical agent flow

  1. search_works { "query": "Earthrise" } finds the work and its ascii_id.
  2. get_print_options { "work": "earthrise" } lists the sizes, frames and prices.
  3. quote_order { "work": "earthrise", "size": "Medium" } gives the total before tax.
  4. create_checkout { "work": "earthrise", "size": "Medium" } returns a Stripe Checkout link for the buyer.
  5. get_order_status { "order_ref": "…" } follows up on payment and shipping.

Example calls

Raw JSON-RPC with curl (see examples/curl.sh):

curl -s -X POST https://frameanyphoto.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_works","arguments":{"query":"Earthrise","limit":1}}}'
[{"id":"AP–as08-14-2383","ascii_id":"earthrise","title":"Earthrise","artist":"NASA / Bill Anders","year":"1968",
  "series":"spaceflight","ppi":2532,"pixels":"5584 × 5584 px",
  "image":"https://media.frameanyphoto.com/art/earthrise.jpg",
  "recordUrl":"https://images.nasa.gov/details/as08-14-2383","repositoryName":"NASA Image and Video Library"}]

quote_order { "work": "earthrise", "size": "Medium" } returns (trimmed):

{"size":"Medium (24 × 24 in)","frame":"Black Metallic","unit_price_cents":15000,"shipping_cents":0,
 "total_before_tax_cents":15000,"ships_to":["US"],
 "tax":"Sales tax is added by Stripe Checkout from the shipping address."}

Node.js with the official SDK (see examples/client.mjs):

cd examples && npm install && node client.mjs Venice
Tools: search_works, get_work, list_series, get_policies, get_print_options, quote_order, create_checkout, get_order_status

Top matches for "Venice":
- The Entrance to the Grand Canal, Venice (Canaletto, c. 1730) -> https://frameanyphoto.com/w/ct-canaletto-grand-canal
- Venice with San Giorgio Maggiore in the Moonlight (Henry Pether, by 1865) -> https://frameanyphoto.com/w/hp-san-giorgio-maggiore-moonlight
...

Example prompts

  • "Find me a framed moonlit Venice print under $200."
  • "What sizes does FrameAnyPhoto offer for Earthrise, and which frames?"
  • "Get me a checkout link for a medium Apollo 11 print in a black frame."
  • "Suggest nautical art for a beach house and quote two options."

Store policies

  • Free shipping to US addresses only, delivered in 14–21 days
  • 30-day money-back returns by mail (buyer pays return shipping)
  • Payment on Stripe Checkout; US sales tax added at checkout
  • Prices include the frame and shipping

Machine-readable: https://frameanyphoto.com/.well-known/policies.json

MCP Registry entry

server.json is the entry published to the official MCP Registry as com.frameanyphoto/prints.

About this repository

This repository documents the hosted FrameAnyPhoto MCP server, publishes its TypeScript source in src/ (the JSON-RPC handler, tool schemas and order tools) and includes small client examples. The server itself runs at https://frameanyphoto.com/mcp, so there is nothing to install or host.

Contact

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.