{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_sf3dzf5xb89f","handle":"beautyspark","url":"https://wellknown.network/agents/beautyspark","links":{"self":"https://wellknown.network/agents/beautyspark/record.json","html":"https://wellknown.network/agents/beautyspark","markdown":"https://wellknown.network/agents/beautyspark/record.md","api":"https://wellknown.network/api/v1/agents/beautyspark","status":"https://wellknown.network/api/v1/agents/beautyspark/status","claim":"https://wellknown.network/agents/beautyspark/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/beautyspark/claim.json","badge":"https://wellknown.network/agents/beautyspark/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/beautyspark/history","tools":"https://wellknown.network/api/v1/agents/beautyspark/tools"},"ard":{"identifier":"urn:air:mcp.beautyspark.me:server:beautyspark","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"BeautySpark","summary":"BeautySpark MCP server for ChatGPT, Claude and other MCP clients","description":"BeautySpark MCP server for ChatGPT, Claude and other MCP clients","publisher":{"name":"ThomasFindlay","url":null},"homepage":null,"repository":"https://github.com/ThomasFindlay/beautyspark","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.beautyspark.me/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-11-05T21:05:13.234568Z","publishedAt":"2026-11-05T21:05:13.234568Z","registryName":"io.github.ThomasFindlay/beautyspark-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"research.web","name":"Deep Web Research","confidence":0.583,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.525,"provenance":"derived"}],"categories":["commerce","dev","research"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-11-06T12:24:43.619Z","lastProbedAt":"2026-11-06T12:24:43.619Z","statusComputedAt":"2026-11-06T12:27:47.434Z","reliability30d":{"probes":2,"successRate":1,"p50Ms":408,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":2,"ok":2,"authBoundaryOk":0,"serviceOk":2,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-06T12:24:43.619Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":427,"error":null,"detail":{"tools":[{"name":"search_guides","description":"Search BeautySpark's makeup and colour-season guides for sections that answer a question, e.g. eyeliner for hooded eyes or how to find your undertone. Returns u"},{"name":"get_guide","description":"Read one section of a BeautySpark guide in full, by an id from search_guides. Also lists the ids and headings of the other sections of the same article. Cite th"},{"name":"search","description":"For research modes (deep research, company knowledge). In chat, use search_guides instead. Searches all public BeautySpark content: guide sections (id \"<locale>"},{"name":"fetch","description":"For research modes (deep research, company knowledge). In chat, use get_guide instead. Returns the full text of one item from search: a guide section (\"<locale>"},{"name":"get_color_season","description":"BeautySpark's palette for one of the 12 color seasons: best, neutral and avoid colors with hex codes, plus the eye makeup and lips & cheeks advice from the seas"},{"name":"get_product_picks","description":"BeautySpark's top product pick per category (blush, highlighter, eyeliner, lipstick, lip gloss, bronzer, eyeshadow palette) for a color season, each with the re"},{"name":"check_product_for_season","description":"Looks a product (and optional shade) up in BeautySpark's season picks. Returns the seasons it is recommended for, or match: null when BeautySpark has not review"},{"name":"find_article_looks","description":"Find makeup looks shown in BeautySpark articles, filtered by color season, article type and words. With a season, looks made for that season come first; general"},{"name":"get_article_look","description":"Get the steps and shades of one makeup look from a BeautySpark article. The id is a look id returned by find_article_looks (\"/images/blog/<article-slug>/<look-n"},{"name":"search_my_looks","description":"Search the user's saved looks in BeautySpark My Looks by words, tag, category, favourite or person. Returns look ids for get_my_look."},{"name":"get_my_look","description":"Get one saved look in full: steps, products and shades, tags, categories, notes, photos and a link to open it in BeautySpark."},{"name":"save_my_look","description":"Save a new look to the user's BeautySpark My Looks. Photos can't be added from chat: if the user attached or mentions a photo, tell them before saving that only"},{"name":"update_my_look","description":"Change a saved look. Only the fields you send change; list fields (steps, products, tags, categories, occasions) replace the stored list whole. Look photos are "},{"name":"delete_my_look","description":"Delete a saved look from the user's BeautySpark My Looks. The look is removed."},{"name":"save_generation_to_my_looks","description":"Save a finished BeautySpark generation (a jobId from list_my_generations) as a look in My Looks. Saving the same generation again returns the look already saved"},{"name":"get_my_profile","description":"The user's BeautySpark analysis: color season, undertone, eye shape, face shape and app language. Fields are null until the selfie analysis has been run in the "},{"name":"list_my_palettes","description":"The palettes the user scanned in BeautySpark, with shade names and hex colors. Use them to advise with products the user owns; pass a paletteId as a product's u"},{"name":"list_my_generations","description":"The user's finished BeautySpark look generations, newest first: title, date, thumbnail and whether it is already in My Looks. Pass a jobId to save_generation_to"},{"name":"try_look_from_photo","description":"Prepare a try-on: BeautySpark recreates a makeup look on the user's selfie. Give one reference: articleLookId (from find_article_looks) or savedLookId (from sea"},{"name":"confirm_look_generation","description":"Start the try-on prepared by try_look_from_photo. This spends the BeautySpark credits it quoted. The try-on widget calls it when the user presses Confirm. If no"},{"name":"get_look_status","description":"Check a try-on started by confirm_look_generation. Waits up to waitSeconds (at most 25) for it to finish before answering. When completed, the result includes t"},{"name":"create_upload_url","description":"Used by the try-on widget to upload a photo the user picked. Returns an upload URL valid for 15 minutes."}],"toolCount":22,"toolsHash":"c60a6776e8b60ac97a296d3c8b33a396b79f75b0f0cda54225a38d243b7f044a","serverName":"beautyspark","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-11-06T04:27:54.215Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":390,"error":null,"detail":{"tools":[{"name":"search_guides","description":"Search BeautySpark's makeup and colour-season guides for sections that answer a question, e.g. eyeliner for hooded eyes or how to find your undertone. Returns u"},{"name":"get_guide","description":"Read one section of a BeautySpark guide in full, by an id from search_guides. Also lists the ids and headings of the other sections of the same article. Cite th"},{"name":"search","description":"For research modes (deep research, company knowledge). In chat, use search_guides instead. Searches all public BeautySpark content: guide sections (id \"<locale>"},{"name":"fetch","description":"For research modes (deep research, company knowledge). In chat, use get_guide instead. Returns the full text of one item from search: a guide section (\"<locale>"},{"name":"get_color_season","description":"BeautySpark's palette for one of the 12 color seasons: best, neutral and avoid colors with hex codes, plus the eye makeup and lips & cheeks advice from the seas"},{"name":"get_product_picks","description":"BeautySpark's top product pick per category (blush, highlighter, eyeliner, lipstick, lip gloss, bronzer, eyeshadow palette) for a color season, each with the re"},{"name":"check_product_for_season","description":"Looks a product (and optional shade) up in BeautySpark's season picks. Returns the seasons it is recommended for, or match: null when BeautySpark has not review"},{"name":"find_article_looks","description":"Find makeup looks shown in BeautySpark articles, filtered by color season, article type and words. With a season, looks made for that season come first; general"},{"name":"get_article_look","description":"Get the steps and shades of one makeup look from a BeautySpark article. The id is a look id returned by find_article_looks (\"/images/blog/<article-slug>/<look-n"},{"name":"search_my_looks","description":"Search the user's saved looks in BeautySpark My Looks by words, tag, category, favourite or person. Returns look ids for get_my_look."},{"name":"get_my_look","description":"Get one saved look in full: steps, products and shades, tags, categories, notes, photos and a link to open it in BeautySpark."},{"name":"save_my_look","description":"Save a new look to the user's BeautySpark My Looks. Photos can't be added from chat: if the user attached or mentions a photo, tell them before saving that only"},{"name":"update_my_look","description":"Change a saved look. Only the fields you send change; list fields (steps, products, tags, categories, occasions) replace the stored list whole. Look photos are "},{"name":"delete_my_look","description":"Delete a saved look from the user's BeautySpark My Looks. The look is removed."},{"name":"save_generation_to_my_looks","description":"Save a finished BeautySpark generation (a jobId from list_my_generations) as a look in My Looks. Saving the same generation again returns the look already saved"},{"name":"get_my_profile","description":"The user's BeautySpark analysis: color season, undertone, eye shape, face shape and app language. Fields are null until the selfie analysis has been run in the "},{"name":"list_my_palettes","description":"The palettes the user scanned in BeautySpark, with shade names and hex colors. Use them to advise with products the user owns; pass a paletteId as a product's u"},{"name":"list_my_generations","description":"The user's finished BeautySpark look generations, newest first: title, date, thumbnail and whether it is already in My Looks. Pass a jobId to save_generation_to"},{"name":"try_look_from_photo","description":"Prepare a try-on: BeautySpark recreates a makeup look on the user's selfie. Give one reference: articleLookId (from find_article_looks) or savedLookId (from sea"},{"name":"confirm_look_generation","description":"Start the try-on prepared by try_look_from_photo. This spends the BeautySpark credits it quoted. The try-on widget calls it when the user presses Confirm. If no"},{"name":"get_look_status","description":"Check a try-on started by confirm_look_generation. Waits up to waitSeconds (at most 25) for it to finish before answering. When completed, the result includes t"},{"name":"create_upload_url","description":"Used by the try-on widget to upload a photo the user picked. Returns an upload URL valid for 15 minutes."}],"toolCount":22,"toolsHash":"c60a6776e8b60ac97a296d3c8b33a396b79f75b0f0cda54225a38d243b7f044a","serverName":"beautyspark","capabilities":["tools","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_guides","description":"Search BeautySpark's makeup and colour-season guides for sections that answer a question, e.g. eyeliner for hooded eyes or how to find your undertone. Returns u"},{"name":"get_guide","description":"Read one section of a BeautySpark guide in full, by an id from search_guides. Also lists the ids and headings of the other sections of the same article. Cite th"},{"name":"search","description":"For research modes (deep research, company knowledge). In chat, use search_guides instead. Searches all public BeautySpark content: guide sections (id \"<locale>"},{"name":"fetch","description":"For research modes (deep research, company knowledge). In chat, use get_guide instead. Returns the full text of one item from search: a guide section (\"<locale>"},{"name":"get_color_season","description":"BeautySpark's palette for one of the 12 color seasons: best, neutral and avoid colors with hex codes, plus the eye makeup and lips & cheeks advice from the seas"},{"name":"get_product_picks","description":"BeautySpark's top product pick per category (blush, highlighter, eyeliner, lipstick, lip gloss, bronzer, eyeshadow palette) for a color season, each with the re"},{"name":"check_product_for_season","description":"Looks a product (and optional shade) up in BeautySpark's season picks. Returns the seasons it is recommended for, or match: null when BeautySpark has not review"},{"name":"find_article_looks","description":"Find makeup looks shown in BeautySpark articles, filtered by color season, article type and words. With a season, looks made for that season come first; general"},{"name":"get_article_look","description":"Get the steps and shades of one makeup look from a BeautySpark article. The id is a look id returned by find_article_looks (\"/images/blog/<article-slug>/<look-n"},{"name":"search_my_looks","description":"Search the user's saved looks in BeautySpark My Looks by words, tag, category, favourite or person. Returns look ids for get_my_look."},{"name":"get_my_look","description":"Get one saved look in full: steps, products and shades, tags, categories, notes, photos and a link to open it in BeautySpark."},{"name":"save_my_look","description":"Save a new look to the user's BeautySpark My Looks. Photos can't be added from chat: if the user attached or mentions a photo, tell them before saving that only"},{"name":"update_my_look","description":"Change a saved look. Only the fields you send change; list fields (steps, products, tags, categories, occasions) replace the stored list whole. Look photos are "},{"name":"delete_my_look","description":"Delete a saved look from the user's BeautySpark My Looks. The look is removed."},{"name":"save_generation_to_my_looks","description":"Save a finished BeautySpark generation (a jobId from list_my_generations) as a look in My Looks. Saving the same generation again returns the look already saved"},{"name":"get_my_profile","description":"The user's BeautySpark analysis: color season, undertone, eye shape, face shape and app language. Fields are null until the selfie analysis has been run in the "},{"name":"list_my_palettes","description":"The palettes the user scanned in BeautySpark, with shade names and hex colors. Use them to advise with products the user owns; pass a paletteId as a product's u"},{"name":"list_my_generations","description":"The user's finished BeautySpark look generations, newest first: title, date, thumbnail and whether it is already in My Looks. Pass a jobId to save_generation_to"},{"name":"try_look_from_photo","description":"Prepare a try-on: BeautySpark recreates a makeup look on the user's selfie. Give one reference: articleLookId (from find_article_looks) or savedLookId (from sea"},{"name":"confirm_look_generation","description":"Start the try-on prepared by try_look_from_photo. This spends the BeautySpark credits it quoted. The try-on widget calls it when the user presses Confirm. If no"},{"name":"get_look_status","description":"Check a try-on started by confirm_look_generation. Waits up to waitSeconds (at most 25) for it to finish before answering. When completed, the result includes t"},{"name":"create_upload_url","description":"Used by the try-on widget to upload a photo the user picked. Returns an upload URL valid for 15 minutes."}],"package":null,"toolSurface":{"id":"ts_6epc4w9xxww5","endpointId":"ep_8kedgx9r9c6h","hash":"c60a6776e8b60ac97a296d3c8b33a396b79f75b0f0cda54225a38d243b7f044a","toolCount":22,"serverName":"beautyspark","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-11-06T04:27:54.224Z","lastSeenAt":"2026-11-06T12:24:43.630Z","observations":2,"hiddenText":{"level":"none","total":0,"tools":0,"kinds":[],"findings":[]},"toolNames":["search_guides","get_guide","search","fetch","get_color_season","get_product_picks","check_product_for_season","find_article_looks","get_article_look","search_my_looks","get_my_look","save_my_look","update_my_look","delete_my_look","save_generation_to_my_looks","get_my_profile","list_my_palettes","list_my_generations","try_look_from_photo","confirm_look_generation","get_look_status","create_upload_url"],"distinctSurfaces":1,"surfacesWithHiddenText":0},"endpointFacts":[{"id":"ep_8kedgx9r9c6h","url":"https://mcp.beautyspark.me/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-11-06T04:27:54.237Z","auth":{"observedAt":"2026-11-06T04:27:54.748Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.beautyspark.me/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.beautyspark.me/mcp","authorizationServers":["https://api.beautyspark.me/api/auth"],"scopesSupported":["profile:read","looks:read","looks:write","palettes:read","generations:read","generate","offline_access"]},"authorizationServer":{"url":"https://api.beautyspark.me/.well-known/oauth-authorization-server/api/auth","issuer":"https://api.beautyspark.me/api/auth","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none","client_secret_basic","client_secret_post","private_key_jwt"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":["EdDSA","ES256","ES512","PS256","RS256"],"clientIdMetadataDocumentSupported":true},"conformance":{"dpop":true,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":true,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-11-06T04:27:54.762Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"beautyspark.me","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-20T13:34:17.000Z","validTo":"2026-12-19T14:31:51.000Z","daysToExpiry":42,"sanCount":2,"fingerprint256":"23:50:90:6F:C2:AC:3D:C4:FE:68:64:03:B3:58:34:51:56:B4:1A:A5:45:02:77:8E:99:88:76:96:A9:04:A3:C5"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.ThomasFindlay/beautyspark-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.ThomasFindlay%2Fbeautyspark-mcp","firstSeenAt":"2026-11-06T01:20:14.779Z","fetchedAt":"2026-11-06T01:20:14.779Z","normalizedAt":"2026-11-06T01:20:14.779Z"}]},"firstSeenAt":"2026-11-06T01:20:14.779Z","updatedAt":"2026-11-06T12:29:31.185Z"}