# Fold Laboratories Art Catalogue

> Original art from galleries and artists: semantic search, provenance, live availability.

- name: com.foldlaboratories/art
- version: 0.1.3
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 87/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.foldlaboratories%2Fart
- tools: https://api.protogrid.dev/v1/servers/com.foldlaboratories%2Fart/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "art": {
      "type": "http",
      "url": "https://api.foldlaboratories.com/mcp",
      "headers": {
        "Authorization": "Bearer ${ART_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${ART_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-100% +updated-3d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 87/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,617 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 11 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 2,617 tokens to load them all
- tool set hash: 9f03cbf8fd462c85594fb160380b18fe
- tools last changed: 2026-10-20T05:09:55.887Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.foldlaboratories/art.svg)](https://protogrid.dev/servers/com.foldlaboratories/art)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-20 `get_artwork` changed (description)
  - before: Full detail for one artwork: attribution, medium, dimensions, edition structure, provenance, seller, and every individual impression that can be bought with its own price and availability. A numbered edition has one entry per impression — including artist proofs (AP), printer proofs (PP), and the bon à tirer (BAT), which are separate objects from the numbered run and usually priced differently. Attributes are as stated by the seller, and a null means unspecified rather than estimated. Also returns image URLs to show the buyer. A signed URL is TEMPORARY: honour its `expires_at` and re-fetch rather than caching or redistributing it. An image marked `permanent` is the work’s public copy — reduced and watermarked by Fold — with no expiry. Use this before presenting a work to a buyer, and quote the `impression` label exactly as given.
  - after: Full detail for one artwork: attribution, medium, dimensions, edition structure, provenance, seller, and every individual impression that can be bought with its own price and availability. A numbered edition has one entry per impression — including artist proofs (AP), printer proofs (PP), and the bon à tirer (BAT), which are separate objects from the numbered run and usually priced differently. Each entry in `attributes` says who stands behind it (seller_stated, fold_derived or fold_verified), and a null means unspecified rather than estimated. Also returns image URLs to show the buyer. A signed URL is TEMPORARY: honour its `expires_at` and re-fetch rather than caching or redistributing it. An image marked `permanent` is the work’s public copy — reduced and watermarked by Fold — with no expiry. Use this before presenting a work to a buyer, and quote the `impression` label exactly as given.
- 2026-10-17 `set_delivery` changed (description, inputSchema)
  - before: Supply the delivery address, which is what makes a total payable. Sales tax depends on where the work is going and is recalculated on every call, so the total can change here. The work itself cannot be changed; start a new purchase instead. Until this succeeds, total_is_payable is false and the total must not be quoted as final. The response carries a new approval_reference: present THIS response to the buyer, and pass its approval_reference to confirm_purchase.
  - after: Supply the delivery address, which is what makes a total payable. Fold delivers only to the 50 states and DC. Sales tax depends on where the work is going and is recalculated on every call, so the total can change here. The work itself cannot be changed; start a new purchase instead. Until this succeeds, total_is_payable is false and the total must not be quoted as final. The response carries a new approval_reference: present THIS response to the buyer, and pass its approval_reference to confirm_purchase.
- 2026-10-14 `cancel_purchase` added
  - Abandon a purchase and release any hold on the work, so another collector can buy it. A purchase already being paid for cannot be cancelled: it will complete, or be resolved by a person at Fold, so read it again later; a completed one cannot be cancelled either, and needs a refund instead.
- 2026-10-14 `confirm_purchase` added
  - Charge for the work. Calling this ASSERTS that the buyer has seen the full total — work, delivery and tax — and approved it; that approval is recorded as the consent record for this sale, so do not call it speculatively or to "check" anything. Pass the approval_reference of the response the buyer was shown: it fingerprints the work, price, delivery, address, tax and total, and if any of them changed since, this is REFUSED before anything is reserved or charged — read the purchase again, re-present it, and confirm with the new reference. The work is reserved at this moment and not before. If the seller changed the price after the buyer approved, this DECLINES rather than silently charging the new figure — re-present the purchase and ask again. Retrying with the same idempotency_key replays the original result, a sale or a decline, and cannot charge twice; a new attempt after a decline, usually with another payment method, needs a new key, and a different key on the same purchase can charge.
- 2026-10-14 `set_delivery` added
  - Supply the delivery address, which is what makes a total payable. Sales tax depends on where the work is going and is recalculated on every call, so the total can change here. The work itself cannot be changed; start a new purchase instead. Until this succeeds, total_is_payable is false and the total must not be quoted as final. The response carries a new approval_reference: present THIS response to the buyer, and pass its approval_reference to confirm_purchase.
- 2026-10-14 `get_purchase` added
  - Read the current state of a purchase you started. Totals and availability reflect this moment, not when it was started — a work can sell to another buyer while yours is deciding.
- 2026-10-14 `start_purchase` added
  - Begin buying ONE impression. An impression is a single physical object — a unique painting, or one numbered print of an edition — so exactly one listing_id is accepted; to buy several works, start a separate purchase for each, because each is sold by its own seller and is a separate payment to Fold. Call check_availability first. Nothing is reserved by this call and the work can still sell to someone else until you call confirm_purchase. The price and delivery terms are the seller’s and are looked up here; anything you send is ignored. The returned total does NOT include tax until you call set_delivery. The purchase belongs to the credential that starts it, on this endpoint: no other credential can read, change, cancel or complete it, and is told it does not exist. Without an agent credential, this answers with a checkout_url instead: a page for this one work on which the buyer pays — hand it to the buyer or open it in your browser; the other purchase tools are for credentialed agents.
- 2026-10-09 `get_artwork` changed (description)
  - before: Full detail for one artwork: attribution, medium, dimensions, edition structure, provenance, seller, and every individual impression that can be bought with its own price and availability. A numbered edition has one entry per impression — including artist proofs (AP), printer proofs (PP), and the bon à tirer (BAT), which are separate objects from the numbered run and usually priced differently. Attributes are as stated by the seller, and a null means unspecified rather than estimated. Also returns TEMPORARY image URLs — show them to the buyer, but honour `expires_at` and re-fetch rather than caching or redistributing them. Use this before presenting a work to a buyer, and quote the `impression` label exactly as given.
  - after: Full detail for one artwork: attribution, medium, dimensions, edition structure, provenance, seller, and every individual impression that can be bought with its own price and availability. A numbered edition has one entry per impression — including artist proofs (AP), printer proofs (PP), and the bon à tirer (BAT), which are separate objects from the numbered run and usually priced differently. Attributes are as stated by the seller, and a null means unspecified rather than estimated. Also returns image URLs to show the buyer. A signed URL is TEMPORARY: honour its `expires_at` and re-fetch rather than caching or redistributing it. An image marked `permanent` is the work’s public copy — reduced and watermarked by Fold — with no expiry. Use this before presenting a work to a buyer, and quote the `impression` label exactly as given.
- 2026-10-06 `check_availability` changed (title, annotations)
- 2026-10-06 `get_artwork` changed (title, annotations)

Full history: https://api.protogrid.dev/v1/servers/com.foldlaboratories%2Fart/changes

## Remotes

- https://api.foldlaboratories.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (8)

- `cancel_purchase`: Abandon a purchase and release any hold on the work, so another collector can buy it. A purchase already being paid for cannot be cancelled: it will complete, or be resolved by a person at Fold, so read it again later; a completed one cannot be cancelled either, and needs a refund instead.
- `check_availability`: Re-check whether specific impressions are still purchasable, immediately before presenting them to a buyer or attempting a purchase. Each work here is unique or from a small edition, so an impression can sell between search and checkout. ALWAYS call this before offering a specific impression — offering a sold original is worse than offering nothing.
- `confirm_purchase`: Charge for the work. Calling this ASSERTS that the buyer has seen the full total — work, delivery and tax — and approved it; that approval is recorded as the consent record for this sale, so do not call it speculatively or to "check" anything. Pass the approval_reference of the response the buyer was shown: it fingerprints the work, price, delivery, address, tax and total, and if any of them changed since, this is REFUSED before anything is reserved or charged — read the purchase again, re-present it, and confirm with the new reference. The work is reserved at this moment and not before. If the seller changed the price after the buyer approved, this DECLINES rather than silently charging the new figure — re-present the purchase and ask again. Retrying with the same idempotency_key replays the original result, a sale or a decline, and cannot charge twice; a new attempt after a decline, usually with another payment method, needs a new key, and a different key on the same purchase can charge.
- `get_artwork`: Full detail for one artwork: attribution, medium, dimensions, edition structure, provenance, seller, and every individual impression that can be bought with its own price and availability. A numbered edition has one entry per impression — including artist proofs (AP), printer proofs (PP), and the bon à tirer (BAT), which are separate objects from the numbered run and usually priced differently. Each entry in `attributes` says who stands behind it (seller_stated, fold_derived or fold_verified), and a null means unspecified rather than estimated. Also returns image URLs to show the buyer. A signed URL is TEMPORARY: honour its `expires_at` and re-fetch rather than caching or redistributing it. An image marked `permanent` is the work’s public copy — reduced and watermarked by Fold — with no expiry. Use this before presenting a work to a buyer, and quote the `impression` label exactly as given.
- `get_purchase`: Read the current state of a purchase you started. Totals and availability reflect this moment, not when it was started — a work can sell to another buyer while yours is deciding.
- `search_artworks`: Search original artworks by natural-language description of what the buyer wants — subject, mood, palette, texture, period, scale. Matches on MEANING rather than keywords, so "a moody blue seascape" finds work no keyword search would. IMPORTANT: the query text is matched on meaning ONLY. A budget written into it — "under 20k" — is NOT applied; pass min_price_usd and max_price_usd instead, or you will get results outside the buyer’s range and not know it. IMPORTANT: this catalogue CANNOT be filtered by authenticity or provenance strength, and no parameter accepts one — Fold verifies sellers, not works, and assesses neither. See _verification on the response and the verification block on each result. Returns only works that are purchasable now; include_sold adds works that have sold. Works taken off sale are never returned. Attributes such as medium and year are as stated by the seller; a null means the seller did not specify it. IMPORTANT: check the `completeness` field before telling a buyer this is everything available — "partial" means more may exist beyond what was scanned.
- `set_delivery`: Supply the delivery address, which is what makes a total payable. Fold delivers only to the 50 states and DC. Sales tax depends on where the work is going and is recalculated on every call, so the total can change here. The work itself cannot be changed; start a new purchase instead. Until this succeeds, total_is_payable is false and the total must not be quoted as final. The response carries a new approval_reference: present THIS response to the buyer, and pass its approval_reference to confirm_purchase.
- `start_purchase`: Begin buying ONE impression. An impression is a single physical object — a unique painting, or one numbered print of an edition — so exactly one listing_id is accepted; to buy several works, start a separate purchase for each, because each is sold by its own seller and is a separate payment to Fold. Call check_availability first. Nothing is reserved by this call and the work can still sell to someone else until you call confirm_purchase. The price and delivery terms are the seller’s and are looked up here; anything you send is ignored. The returned total does NOT include tax until you call set_delivery. The purchase belongs to the credential that starts it, on this endpoint: no other credential can read, change, cancel or complete it, and is told it does not exist. Without an agent credential, this answers with a checkout_url instead: a page for this one work on which the buyer pays — hand it to the buyer or open it in your browser; the other purchase tools are for credentialed agents.
