Koskamo

Good Turn Studio Art Spotter - Eye of the Beholder MCP

An MCP server that helps users find original art and prints from independent artists, provides fair pricing estimates, compares selling platforms for artists, checks art listings for authenticity, and generates artwork passports.

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.

Good Turn Studio Art Spotter - Eye of the Beholder MCP logo, by Good Turn StudioCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by Good Turn Studio
MCP endpoint (Streamable HTTP)
https://goodturn-mcp.pages.dev/artspotter/mcp
Vendor documentation

What its tools do

12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

12 of 12 have a description · 12 of 12 declare behavior hints · 12 of 12 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Find art for sale from independent artists
  • Get fair price for new artwork by size and medium
  • Check an art listing before buying
  • Make a free artwork passport for an artist's work

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
goodturn-artspotter 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
12 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Art Spotter finds original art and prints sold directly by independent artists, and helps artists sell. One search covers about 21,000 works in 190 independent artists' own shops (checked live for availability) and eBay art, with search links for Saatchi Art, Etsy, Artfinder and Singulart. It also gives a fair price for new work by size and medium, wall sizing, scam checks, what each selling platform leaves an artist after fees, commission pricing and contract points, open calls and grants in the UK, US and Canada, UK resale royalty maths, and a free artwork passport. Every tool is read-only and nothing about the user is stored. Where an answer has a "say" field, it is a ready-to-read summary. More at https://artspotter.pages.dev

Tools

12 advertised

search_art — Find art for sale from independent artists
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find art for sale from independent artists. Searches works in independent artists' own shops and eBay art by words (subject, style, place, artist), kind, original or print, price, size and colour. Results show title, artist, size, price, where it ships from, an image and a link to buy straight from the artist.

search_art input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string",
      "description": "What to look for, for example abstract blue, linocut bird, Scottish landscape or a dog portrait."
    },
    "kind": {
      "enum": [
        "painting",
        "print",
        "printmaking",
        "photography",
        "drawing",
        "watercolour",
        "ceramics",
        "sculpture",
        "textile",
        "illustration",
        "other"
      ],
      "type": "string",
      "description": "Kind: painting, print, printmaking, photography, drawing, watercolour, ceramics, sculpture, textile, illustration or other."
    },
    "unit": {
      "enum": [
        "in",
        "cm"
      ],
      "type": "string",
      "description": "Unit: in or cm. Defaults to in."
    },
    "limit": {
      "type": "integer",
      "description": "How many results, 1 to 20."
    },
    "colour": {
      "type": "string",
      "description": "A main colour, for example blue or ochre."
    },
    "country": {
      "type": "string",
      "description": "Buyer's two-letter country code, for eBay and currency, for example US or GB."
    },
    "currency": {
      "type": "string",
      "description": "Currency for prices, for example USD, GBP or EUR."
    },
    "max_size": {
      "type": "number",
      "description": "Largest longest side, in unit."
    },
    "min_size": {
      "type": "number",
      "description": "Smallest longest side, in unit."
    },
    "original": {
      "type": "boolean",
      "description": "Set to true for one-off originals only, false for prints only."
    },
    "max_price": {
      "type": "number",
      "description": "Highest price, in the currency given (or the buyer's local currency)."
    },
    "min_price": {
      "type": "number",
      "description": "Lowest price."
    },
    "ships_from": {
      "type": "string",
      "description": "Only artists based in this two-letter country."
    }
  },
  "additionalProperties": false
}
search_art annotations
{
  "title": "Find art for sale from independent artists",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fair_art_price — Fair price for a new artwork by size and medium
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fair price for a new artwork by size and medium. What original work or prints of about this size and kind sell for in independent artists' own shops: the typical price, the middle half of prices and the price per square inch, from comparable works for sale.

get_fair_art_price input schema
{
  "type": "object",
  "required": [
    "width",
    "height"
  ],
  "properties": {
    "kind": {
      "enum": [
        "painting",
        "print",
        "printmaking",
        "photography",
        "drawing",
        "watercolour",
        "ceramics",
        "sculpture",
        "textile",
        "illustration",
        "other"
      ],
      "type": "string",
      "description": "Kind of work. Defaults to painting."
    },
    "unit": {
      "enum": [
        "in",
        "cm"
      ],
      "type": "string",
      "description": "Unit: in or cm."
    },
    "width": {
      "type": "number",
      "description": "Width, in unit."
    },
    "height": {
      "type": "number",
      "description": "Height, in unit."
    },
    "currency": {
      "type": "string",
      "description": "Currency for the answer, for example USD or GBP."
    },
    "original": {
      "type": "boolean",
      "description": "Set to true for originals (the default), false for prints."
    }
  },
  "additionalProperties": false
}
get_fair_art_price annotations
{
  "title": "Fair price for a new artwork by size and medium",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_where_to_sell — What an artist keeps on each selling platform
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

What an artist keeps on each selling platform. For a sale price, what the artist keeps after fees on Etsy, eBay, Saatchi Art, Artfinder, Singulart, their own Shopify shop and direct card payments, sorted by money kept, with print-on-demand options for prints. US and UK fee tables.

compare_where_to_sell input schema
{
  "type": "object",
  "required": [
    "price"
  ],
  "properties": {
    "kind": {
      "enum": [
        "original",
        "print"
      ],
      "type": "string",
      "description": "Kind: original (the default) or print."
    },
    "price": {
      "type": "number",
      "description": "The price the buyer pays."
    },
    "currency": {
      "enum": [
        "USD",
        "GBP"
      ],
      "type": "string",
      "description": "USD or GBP."
    },
    "shipping": {
      "type": "number",
      "description": "Shipping charged to the buyer, if any."
    }
  },
  "additionalProperties": false
}
compare_where_to_sell annotations
{
  "title": "What an artist keeps on each selling platform",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
price_commission — Price and terms for commissioning a piece
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Price and terms for commissioning a piece. A price guide for a commissioned piece by size and the artist's level, what similar finished originals sell for, the usual deposit, revision rounds, cancellation fees, copyright and a contract checklist for buyer and artist.

price_commission input schema
{
  "type": "object",
  "required": [
    "width",
    "height"
  ],
  "properties": {
    "unit": {
      "enum": [
        "in",
        "cm"
      ],
      "type": "string",
      "description": "Unit: in or cm."
    },
    "level": {
      "enum": [
        "emerging",
        "mid",
        "established"
      ],
      "type": "string",
      "description": "Level: emerging (the default), mid or established."
    },
    "width": {
      "type": "number",
      "description": "Width, in unit."
    },
    "height": {
      "type": "number",
      "description": "Height, in unit."
    },
    "medium": {
      "type": "string",
      "description": "Kind of work, for example painting or drawing."
    }
  },
  "additionalProperties": false
}
price_commission annotations
{
  "title": "Price and terms for commissioning a piece",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
size_art_for_wall — What size art fits a wall and how high to hang it
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

What size art fits a wall and how high to hang it. Art width for the furniture or wall, the hanging height, the gap above furniture and gallery wall spacing, with a ready search for works in that size range.

size_art_for_wall input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "unit": {
      "enum": [
        "in",
        "cm"
      ],
      "type": "string",
      "description": "Unit: in or cm."
    },
    "wall_width": {
      "type": "number",
      "description": "Width of the wall, if there's no furniture below."
    },
    "furniture_width": {
      "type": "number",
      "description": "Width of the sofa, bed or sideboard below the art."
    }
  },
  "additionalProperties": false
}
size_art_for_wall annotations
{
  "title": "What size art fits a wall and how high to hang it",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_open_calls — Open calls, prizes and residencies for artists
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Open calls, prizes and residencies for artists. Recurring open exhibitions, prizes, residencies and listing sites in the UK, US and Canada, with entry fees, usual closing month, media and official links.

list_open_calls input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "kind": {
      "type": "string",
      "description": "Kind: open call, prize, residency or listing hub."
    },
    "media": {
      "type": "string",
      "description": "For example painting, watercolour, print or photography."
    },
    "country": {
      "type": "string",
      "description": "UK, US or CA."
    }
  },
  "additionalProperties": false
}
list_open_calls annotations
{
  "title": "Open calls, prizes and residencies for artists",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_artist_funding — Grants, buyer finance, royalties and copyright for artists
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Grants, buyer finance, royalties and copyright for artists. For the UK: arts council grants, Own Art 0% buyer finance and the Artist's Resale Right. For the US: grants and the $85 group copyright registration for 2 to 20 artworks.

get_artist_funding input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "country": {
      "type": "string",
      "description": "GB or US."
    }
  },
  "additionalProperties": false
}
get_artist_funding annotations
{
  "title": "Grants, buyer finance, royalties and copyright for artists",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_resale_royalty — UK Artist's Resale Right on a resale
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

UK Artist's Resale Right on a resale. The royalty owed to an artist on a UK resale through a gallery, dealer or auction house, by band, with the cap and who collects it.

calculate_resale_royalty input schema
{
  "type": "object",
  "required": [
    "price"
  ],
  "properties": {
    "price": {
      "type": "number",
      "description": "Resale price in pounds."
    }
  },
  "additionalProperties": false
}
calculate_resale_royalty annotations
{
  "title": "UK Artist's Resale Right on a resale",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_art_listing — Check an art listing before buying
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check an art listing before buying. Whether a link is an independent artist in the index or a marketplace with buyer protection, reverse image search links for the picture, and the checks that catch stolen images, AI work sold as hand-made and payment scams.

check_art_listing input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "url": {
      "type": "string",
      "description": "The listing or shop address."
    },
    "image": {
      "type": "string",
      "description": "The address of the artwork's picture."
    }
  },
  "additionalProperties": false
}
check_art_listing annotations
{
  "title": "Check an art listing before buying",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
make_artwork_passport — A free artwork passport for an artist's work
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

A free artwork passport for an artist's work. Makes a certificate for a work (title, artist, year, medium, size, edition) with a fingerprint of its picture, as printable text and schema.org data the artist can publish, so anyone can later check the picture is unchanged.

make_artwork_passport input schema
{
  "type": "object",
  "required": [
    "image",
    "title",
    "artist"
  ],
  "properties": {
    "size": {
      "type": "string",
      "description": "For example 60 x 90 cm."
    },
    "year": {
      "type": "string",
      "description": "Year made."
    },
    "image": {
      "type": "string",
      "description": "The https address of the work's picture."
    },
    "title": {
      "type": "string",
      "description": "Title of the work."
    },
    "artist": {
      "type": "string",
      "description": "Artist's name."
    },
    "medium": {
      "type": "string",
      "description": "For example oil on canvas."
    },
    "edition": {
      "type": "string",
      "description": "For example 3/25, for prints."
    }
  },
  "additionalProperties": false
}
make_artwork_passport annotations
{
  "title": "A free artwork passport for an artist's work",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
verify_artwork_passport — Check a picture matches an artwork passport
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check a picture matches an artwork passport. Recomputes the picture's fingerprint and says whether it matches the one in the passport.

verify_artwork_passport input schema
{
  "type": "object",
  "required": [
    "image",
    "sha256"
  ],
  "properties": {
    "image": {
      "type": "string",
      "description": "The https address of the picture."
    },
    "sha256": {
      "type": "string",
      "description": "The fingerprint from the passport."
    }
  },
  "additionalProperties": false
}
verify_artwork_passport annotations
{
  "title": "Check a picture matches an artwork passport",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_artworks_feed — Check an artist's artworks.json
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check an artist's artworks.json. Reads an artist's artworks.json (the open format at artspotter.pages.dev/artworks that lets assistants find work sold direct) and lists anything to fix.

check_artworks_feed input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "The https address of the artworks.json file."
    }
  },
  "additionalProperties": false
}
check_artworks_feed annotations
{
  "title": "Check an artist's artworks.json",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-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
236 ms
95th percentile latency
236 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 236 ms · metadata changed · 12 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http art-spotter-eye-of-the-beholder-mcp https://goodturn-mcp.pages.dev/artspotter/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add art-spotter-eye-of-the-beholder-mcp --url https://goodturn-mcp.pages.dev/artspotter/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable art-spotter-eye-of-the-beholder-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "art-spotter-eye-of-the-beholder-mcp": {
      "url": "https://goodturn-mcp.pages.dev/artspotter/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "art-spotter-eye-of-the-beholder-mcp": {
      "type": "streamableHttp",
      "url": "https://goodturn-mcp.pages.dev/artspotter/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start art-spotter-eye-of-the-beholder-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "art-spotter-eye-of-the-beholder-mcp": {
      "type": "http",
      "url": "https://goodturn-mcp.pages.dev/artspotter/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http art-spotter-eye-of-the-beholder-mcp https://goodturn-mcp.pages.dev/artspotter/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://goodturn-mcp.pages.dev/artspotter/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "art-spotter-eye-of-the-beholder-mcp": {
      "serverUrl": "https://goodturn-mcp.pages.dev/artspotter/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Good Turn Studio Art Spotter - Eye of the Beholder MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.